Skip to content

gongzisahan/sizhu-programming

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

四柱编程

用编程教科书的写法,讲一本现代人能读懂的四柱科普书。

《四柱编程》首先是一本,其次才是一个带有少量实验性代码的配套项目。

这个项目最初的核心想法,并不是“做一个算命程序”,而是尝试把四柱命理中那些常常显得跳跃、含混、难以进入的内容,改写成一种更接近现代读者阅读习惯的表达方式:
像编程教材那样,讲清楚它的基本概念、数据结构、规则系统、分析流程和边界条件

所以,这个仓库的主体不是代码,而是书稿。
代码部分只是辅助性的原型,用来说明:四柱中确实有一部分内容,可以被拆成结构化规则来理解和表达。


这个项目是什么

这是一个尝试用编程思维 + 教科书写法来重写四柱知识的项目。

它希望完成的事情是:

  • 把传统四柱里的核心概念讲得更清楚
  • 把分散的术语整理成更统一的知识结构
  • 把经验化表述尽量转写成规则化表述
  • 让没有传统术数基础的现代读者,也能比较顺畅地进入这套系统

换句话说,这个项目更接近:

  • 一本结构化的四柱科普书
  • 一本带有“程序员视角”的四柱教材
  • 一份把古典知识翻译成现代知识结构的写作实验

而不是:

  • 完整的算命软件
  • 自动断命系统
  • 覆盖所有流派的命理引擎

主体是书,代码是附录

本项目请优先按下面这个顺序理解:

1. 主体:书稿

仓库中的 sizhu_programming.md 是本项目当前最重要的内容。
它承载的是这本书的核心写作目标:用更结构化、更现代、更像教材的方式讲四柱。

你可以把它理解为:

  • 本书正文
  • 主体书稿
  • 理论框架
  • 全项目的中心内容

2. 配套:实验性代码原型

仓库中的 sizhu/tests/ 不是项目主体,而是配套材料。
它们的作用主要是:

  • 演示“四柱中的部分规则可以被程序化表达”
  • 为书中的某些规则提供可验证样例
  • 帮助读者理解“结构化思维”在这里如何落地

这些代码目前只是一小步原型,不代表完整系统,也不承担“自动分析全部命理问题”的目标。


为什么要这样写四柱

传统四柱资料往往有几个让现代读者难以进入的问题:

  • 术语多,但定义不总是统一
  • 判断很多,但步骤不总是展开
  • 结论很多,但规则来源不总是说明
  • 经验很强,但结构不总是清晰

而“编程教科书”的写法,恰好适合处理这些问题。

因为它天然会追问:

  • 这个概念到底是什么
  • 输入是什么,输出是什么
  • 判断依据是什么
  • 规则之间的优先级是什么
  • 哪些是确定规则,哪些是解释性经验
  • 哪些部分可以写清,哪些部分只能留给人的判断

所以,“四柱编程”里的“编程”,并不只是指真的写代码,
更重要的是指一种组织知识、讲清规则、分层表达的方法。


项目定位

这个项目的定位可以概括成一句话:

这是一本文科读者也能读的四柱科普/教材型书稿,代码只是辅助理解的实验性附录。

因此,它会尽量遵循下面几个原则:

1. 先讲清楚,再讲复杂

优先把基础概念、定义和关系讲明白,而不是一开始就堆结论。

2. 先分层,再综合

把基础数据、规则系统、分析流程、解释层分开,不混在一起。

3. 先承认边界,再讨论能力

不夸大程序化能力,也不假装所有问题都能靠几条规则自动解决。

4. 代码为书服务,不让书为代码让路

代码存在的意义,是辅助书稿表达,而不是把整个项目拖成一个纯技术工程。


当前仓库包含什么

主体书稿

  • sizhu_programming.md
    本项目当前最核心的正文内容。
    可以把它视为《四柱编程》这本书的主文。

配套原型代码

  • sizhu/__init__.py
  • sizhu/core.py
  • sizhu/cli.py
  • tests/test_core.py
  • pyproject.toml

这部分内容用于展示一个最小可运行原型,说明四柱中的某些底层规则,确实可以用程序结构表达。


当前状态

当前项目已经从“纯写作构想”进入“书稿 + 原型”的阶段。

已经有的内容

  • 主体书稿
  • 基础项目说明
  • 最小可运行代码原型
  • 十神计算示例
  • 地支藏干展开示例
  • 基础测试样例

目前还没有做完的内容

  • 更成熟的全书章节整理
  • 更完整的例子系统
  • 公历转四柱
  • 节气换月
  • 起运计算
  • 大运 / 流年模块
  • 更系统的分析器
  • 更成熟的解释层输出

这意味着:

当前最成熟的依然是“书的想法和书的结构”,而不是“程序功能”。


仓库结构

sizhu-programming/
├─ LICENSE
├─ README.md
├─ pyproject.toml
├─ sizhu_programming.md
├─ sizhu/
│  ├─ __init__.py
│  ├─ core.py
│  └─ cli.py
└─ tests/
   └─ test_core.py

文件说明

  • sizhu_programming.md
    本项目主体书稿,也是全项目最重要的内容。

  • README.md
    项目说明文件,用来帮助读者理解这本书与配套代码之间的关系。

  • pyproject.toml
    Python 项目的基础配置文件。

  • sizhu/core.py
    当前版本的核心规则原型代码,包括四柱对象、十神计算、藏干展开、基础分析逻辑。

  • sizhu/cli.py
    命令行入口,用于做最简单的规则演示。

  • tests/test_core.py
    用来验证原型代码中部分底层规则是否符合预期。


阅读建议

如果你是第一次接触这个项目,建议按这个顺序看:

1. 先看 README

先明白这个项目的目标是什么,不是什么。

2. 再看 sizhu_programming.md

这才是主体。
如果你对“四柱编程”真正感兴趣,最应该读的是这份书稿。

3. 最后再看代码

代码不是必要入口。
它只是用来帮助你理解:为什么这套写法会借用编程思维。


代码目前能做什么

当前这部分原型代码只适合做这些事:

  • 展示四柱对象如何结构化表达
  • 展示十神如何基于日主计算
  • 展示地支藏干如何展开
  • 展示最基础的规则层如何写成代码
  • 为书稿中的某些论述提供辅助样例

它目前不适合承担这些期待:

  • 自动完成完整命理分析
  • 一键输出成熟断语
  • 处理所有流派分歧
  • 替代人工的高阶判断

所以请把它理解成:

配套实验,而不是最终产品。


这本书真正想讲什么

《四柱编程》真正想讲的,也许不是“如何写一个四柱程序”,
而是更基础也更重要的问题:

  • 四柱到底由哪些基本元素构成
  • 它的规则系统是如何组织起来的
  • 哪些判断是可以清楚说明的
  • 哪些判断依赖经验和解释
  • 为什么有些部分适合程序化
  • 为什么有些部分不可能被完全程序化

如果这本书最后能让读者做到下面这些事,它就已经成功了:

  • 不再把四柱只看成一堆神秘术语
  • 能看见它内部的结构和规则
  • 能分辨“规则”与“解释”的不同层次
  • 能以更现代的方式进入传统知识

适合谁看

这本书尤其适合下面这些读者:

  • 对四柱感兴趣,但不喜欢传统资料那种跳跃写法的人
  • 想用现代结构化方式理解传统知识的人
  • 对“编程思维如何帮助知识整理”感兴趣的人
  • 想把复杂知识写成教材的人
  • 即使完全不会编程,也想读懂这套表达方式的人

换句话说:

它不是写给程序员专用的,反而是写给希望更容易读懂四柱的人。


后续方向

后续这个项目会优先做两件事:

第一,继续把书稿整理得更像一本真正的教材

包括:

  • 章节重组
  • 表达统一
  • 术语收束
  • 增加例子
  • 增加图示
  • 强化阅读顺序

第二,保留少量必要代码,作为书稿附录和规则样例

代码只会做那些真正有助于说明问题的部分,而不会喧宾夺主。

也就是说,未来的重点仍然是:

把这本书写好。


说明

本项目仍处于早期阶段。
仓库中的内容更适合作为:

  • 书稿
  • 教材雏形
  • 结构化写作实验
  • 规则表达样例
  • 研究与讨论材料

而不应被理解成已经成熟、完整、定型的软件系统。


致谢

感谢所有愿意把传统知识重新整理、重新翻译、重新表达的人。
也感谢 AI 在这个项目早期阶段,作为写作、整理和原型辅助工具所提供的帮助。

《四柱编程》本身也是一次实验:

不是为了证明四柱一定能够被完全程序化,
而是为了试着把它写得更清楚、更现代、更容易被理解。

作者:sahan

About

一本人生编程的教科书——当老天是 Python 程序员

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages