八字入门:从干支到五行,一个程序员的理解框架
尝试用程序员的思维方式理解八字命理的底层逻辑——干支是枚举,五行是类型系统,生克是依赖关系。
我是先学会写代码,才开始学八字的。
这个顺序带来了一个奇特的视角:当我第一次接触干支系统时,脑子里浮现的不是「命运」,而是一个设计精妙的枚举类型。
干支:一个 60 进制的时间编码系统
十天干(甲乙丙丁戊己庚辛壬癸)和十二地支(子丑寅卯辰巳午未申酉戌亥),两两组合,形成一个 60 个元素的循环序列——甲子、乙丑、丙寅……直到癸亥,然后回到甲子。
用代码表达就是:
STEMS = ['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']
BRANCHES = ['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']
def get_ganzhi(n: int) -> str:
return STEMS[n % 10] + BRANCHES[n % 12]
一个人的出生时刻,可以用四组干支(年柱、月柱、日柱、时柱)精确描述,这就是「八字」——四组干支,每组两个字,共八个字。
五行:一个类型系统
五行(木火土金水)是干支的「类型标注」:
| 五行 | 天干 | 地支 |
|---|---|---|
| 木 | 甲、乙 | 寅、卯 |
| 火 | 丙、丁 | 巳、午 |
| 土 | 戊、己 | 辰、戌、丑、未 |
| 金 | 庚、辛 | 申、酉 |
| 水 | 壬、癸 | 亥、子 |
五行之间有「生克」关系:木生火、火生土、土生金、金生水、水生木;木克土、土克水、水克火、火克金、金克木。
这是一个有向图,每个节点既是某些节点的「生者」,也是某些节点的「克者」。
命盘:一个依赖关系分析
八字命理的核心,是分析这八个字(以及它们藏干中隐含的更多五行信息)之间的生克关系,找出「用神」——即命盘中最需要补充或最需要抑制的五行。
这让我想起软件架构中的依赖分析:找出系统中的瓶颈节点,找出过度依赖的模块,找出需要解耦的地方。
当然,命理学远比这复杂。格局、神煞、大运流年……每一个维度都是一套独立的分析体系。但从这个程序员视角出发,至少让我找到了一个理解它的入口。
上方的「八字命盘」工具可以帮你生成完整的命盘数据,欢迎试用。