外观
论中国神话系统的屎山属性
——一项基于软件工程视角的文本考古
作者:BA4SRJ | 单位:民间信仰遗留系统维护组 | 收稿日期:鸿蒙初开以来任意一日
摘 要
中国神话常被当成一套“体系”来讨论,但仔细翻一遍原始材料就会发现,它实际长得很像一座跑了两千多年从来没重构过、也没人敢动的遗留代码库。拿软件工程的几条诊断标准去套,五项全中:没人敢重构、文档和实现各说各话、注释比正文多、测试全靠“灵不灵”这种用户反馈、核心功能从汉代跑到现在接口都没换过。文章顺着鸿蒙OS 0.x到鸿蒙OS 11.x的主干版本捋了一遍,挑了孟婆汤事务一致性失效、生死簿主键冲突、二郎神递归没写终止条件这几个典型缺陷聊聊,又回顾了战国历史化、宋徽宗强制合库、三教合一这几回翻车了的重构尝试。结论其实挺无聊的:这系统的混乱不是设计失误,是多元需求长期并存长出来的自然形态。面对这种东西,唯一能做的就是在外面包一层干净的API,别碰核心。
关键词:中国神话;屎山代码;遗留系统;孟婆汤;重构失败;玉皇大帝
Abstract: Chinese mythology is often mistaken for a coherent “system.” This paper argues that it is in fact a two-thousand-year-old legacy codebase that has never been refactored and that no one dares to touch. Five diagnostic criteria are all satisfied. We recommend: do not rewrite; wrap a clean API at the boundary.
一、引言:问题的提出
一切始于一个看似无害的问题:既然人的名字是出生之后父母起的,那阎王的生死簿上怎么会有这个名字?
这个问题能成立,是因为提问的人默认生死簿和人间户籍用的是同一套数据库。可一旦你开始追问“生死簿会不会跟公安部户籍管理系统互通”,就等于在问两个不同年代、不同内核、不同甲方、而且甲方从不参加需求评审的系统能不能做数据同步。到这一步,话题已经脱离神话学范畴,进入系统集成领域了。
再往下捋,问题就严重了:这套东西根本没有架构。它有模块,没有架构师;有迭代,没有changelog;有用户,没有产品经理。它符合程序员嘴里那个词的每一条标准。
于是有了这篇文章。写它的目的不是批判——对着一个跑了两千年的系统谈“代码规范”,属于典型的实习生心态。目的只是把这座山的地层剖开看看,顺便解释一下为什么每次有人想给它做整理,最后都变成了往山上又堆一铲土。
二、相关工作的不足
前人不是没试过整理。
战国那会儿诸子做过一次“历史化重构”,把神降格为祖先,删神话、存人事。代价是数据删掉一半,剩下的成了残片,而且兼容性问题至今没解决:黄帝到底是天神还是人王,得看场合切换。
陶弘景写过《真灵位业图》,试图排一张神仙座次表。这是中国神话史上第一份权限表,也是第一份没人严格执行的权限表——庙里供的跟书上写的永远对不上。
宋徽宗在大中祥符和政和年间两次下旨,把玉皇和昊天上帝合并。名义上合库成功,实际上只改了schema,数据没迁,民间照样各拜各的。
民国民俗学者想做标准化,给出“自古以来”的官方口径,结果造出了一批伪古传统。今天很多人深信不疑的年兽,先秦到明清的文献里一条都找不到,就是那一版补进去的SP1,还误标了版本号。
这些尝试有一个共同点:出发点是好的,结果都是叠加。这大概能算本文的第一个经验性结论了。
结论一:此类系统只能增量覆盖,不能重写。
三、系统架构概览:版本年表
按世界观引擎更换的次数来算,主干经历了六次换代;要是把媒介和权力主体的变更也算进去,则有十二个能辨认出来的版本。以下从简列出:
- 鸿蒙OS 0.x 鸿蒙混沌态:没有文本,只有状态。“鸿蒙”原为《庄子·在宥》里的一个人名,成玄英注“元气也”。此版本连时间字段都没有,没法算uptime。
- 鸿蒙OS 1.0 开辟:盘古。三国吴徐整首次文本化。注意一个关键事实:先秦典籍里没有盘古。开天辟地这个核心功能,系统跑了一千多年才补进文档。
- 鸿蒙OS 1.1 造人补天:女娲。跟鸿蒙OS 1.0并行开发,从未合并。主键冲突遗留至今。
- 鸿蒙OS 2.0 历史化重构:三皇五帝、禅让叙事。大规模rm -rf。
- 鸿蒙OS 3.0 汉代官方整合(LTS):天命论、灾异说、泰山府君治鬼、天曹左契、南斗注生北斗注死。西王母完成人设回滚:豹尾虎齿改成了不死药女神。
- 鸿蒙OS 4.0 道教内核重写:元始天尊上位,《真灵位业图》排座次,命籍夺算夺纪。盘古被打补丁后塞进新框架,改名“元始天王”。
- 鸿蒙OS 5.0 佛教插件:三世因果、六道轮回、十殿阎罗,以及新数据类型“劫”。时间尺度从此拉爆。
- 鸿蒙OS 6.0 官僚化(LTS):城隍土地灶君层层设衙门,玉皇大帝正式转正,妈祖关公等地方神热插拔上线。八仙拼桌成功,尽管同桌四人横跨一千多年,时间戳没做校验。
- 鸿蒙OS 7.0 小说打包发行:《西游记》《封神演义》。市场第一次取代宗教和朝廷成为主导方。
- 鸿蒙OS 8.0 民俗学整理:教科书口径、伪古传统入库。
- 鸿蒙OS 9.0 影视动漫游戏:渲染层首次反写数据层。今天多数人脑子里孙悟空的脸来自86版电视剧,不来自任何古籍。
- 鸿蒙OS 10.0 洪荒流:鸿钧即天道、三清即盘古元神、龙汉初劫、量劫周期。传统文献里一条都找不到,纯网文二设,然后反向殖民正典。
- 鸿蒙OS 11.x 碎片化重混:短视频与AI时代,去语境、拼设定、追求自洽。风险见后面。
贡献者链条大概是这样的:巫觋口传→方士→道士僧侣→朝廷礼官→坊刻书商戏班→报刊教科书→影视游戏→网文作者→算法推荐。每一任维护者只对自己那代的KPI负责,没有人对整体一致性负责。
四、屎山的五条判定标准
拿软件工程的五条诊断标准去套中国神话,结果如下:
- 无人敢重构。 凡动手整理神系的人,最后都成了新的堆积层。《封神演义》想给三百六十五位正神排一张组织架构图,结果造出了鸿钧这个最高层冲突,至今没解。
- 文档和实现不一致。 经书写的、庙里供的、戏台上唱的、老人讲的,四套互相矛盾,且各自都有信众。
- 注释比代码多。 一部《庄子》,郭象注、成玄英疏,注疏叠注疏,后人靠读注释理解注释,原文反而没人看了。
- 测试全靠用户反馈。 一个神好不好用,标准是“灵不灵”。灵就香火旺、版本留存;不灵就自然淘汰,没有回归测试。
- 核心功能长期不崩。 送葬、祭祖、求雨、问吉凶——这些主流程从汉代跑到今天,接口都没变。
最后一条最关键。能跑两千年的屎山,不叫屎山,叫基础设施。
这里需要区分“活屎山”和“死屎山”。希腊罗马神话看起来整洁得多,原因并非设计优良,而是公元四世纪之后就没人在上面写新需求了——它被freeze在某一个commit上归档了。中国神话不一样,它还在生产环境里跑,还有人在提issue,还有人往里塞新代码。妈祖是宋代才上线的,关公当财神是明清的事,哪吒变机甲少年是近二十年的改动。一个系统只要还在被使用,就必然长成一坨屎山。这是熵增,不是能力问题。Linux内核里有1992年写的驱动还在跑,银行核心系统底层是COBOL,写那批代码的人早就退休了。稳定性永远是用混乱换来的。
五、典型缺陷案例分析
5.1 孟婆汤悖论(严重,Won’t Fix)
地府的核心卖点是“善恶有报、一一清算”。可孟婆汤把记忆清空了再送去投胎。受罚的人不知道自己为什么受罚,行善的人不记得自己积过德。一套司法系统既要求责任自负,又主动销毁当事人的案卷,放在任何朝代都过不了复核。
民间的补丁是三魂分流:一魂投胎、一魂守坟、一魂上牌位。所以清明烧的纸祖宗收得到——因为他根本没走完流程。你看,为了保住“祭祖”这个刚需,硬生生把一个魂魄拆成三份并发执行。
这不是逻辑,这是需求优先级。
5.2 生死簿主键冲突(中,已标记为特性)
公安部的主键是身份证号,18位,终身唯一,有校验码。生死簿的主键是魂名加生辰八字加前世因果加册号,属于复合键,还带模糊匹配。《西游记》里十殿阎王被金箍棒压着时的第一句辩解是:“普天下同名同姓者多。”可见冥府自己都知道检索有风险。
写入时序也相反:户籍系统是事件驱动,事后登记;生死簿是预分配,受胎注籍,阳间的名字只是后来贴上去的备注字段。两套方向相反的管道,强行对接只会先崩字段映射表。
5.3 二郎神递归未设终止条件(中)
《西游记》里他是玉帝妹妹思凡下界配杨君所生,因此恨舅舅。到了《宝莲灯》,他的外甥沉香复制了完全相同的遭遇:思凡、生子、镇压、劈山救母。同一段代码被调用两次,参数都没换。民间的处理方式是称之为“家族宿命”。在工程上这叫复制粘贴。
5.4 玉帝工龄溢出(低,显示层问题)
如来介绍玉帝:“苦历过一千七百五十劫,每劫该十二万九千六百年。”乘出来是二亿二千六百八十万年。而“十二万九千六百”本身是邵雍《皇极经世》里“一元”的长度,是从历法里借来的常数,不是天文观测值。古人写这个数字想表达的是“久到没法数”,不是让你拿计算器去乘。日历组件偶发溢出属预期行为。
5.5 哪吒热重载(高,不可回滚)
从佛经护法神,到《封神演义》的灵珠子,再到今天的机甲少年,一个人身上跑了四五个大版本,且第九版开始前端改动回写后端。这是本系统史上第一次渲染层修改数据层,且不可回滚。
六、讨论:bug不是写错了,是写下来了
这是本文最想强调的一点。
干净的系统往往有一个特征:它只服务一种需求。希腊神话服务城邦祭祀和诗人叙事,基督教神学服务教义统一。它们整洁,是因为被权力或教条约束过,砍掉了不一致的部分。
中国神话从来没被任何一种权力彻底收编过。朝廷收编了祀典那一层(鸿蒙OS 3.0 LTS),道士收编了神仙谱系(鸿蒙OS 4.0),佛教收编了冥界(鸿蒙OS 5.0),剩下的——土地公、灶王爷、狐仙、树神、地方娘娘——全是民间自己长的。所以它的混乱,其实是多元需求同时存在的证据。
那些bug本身就是史料:
孟婆汤悖论说明“清算”和“轮回”是两个不同时期塞进来的需求,古人宁可拆魂也不肯放弃祭祖。阎王一身多职说明基层司法资源长期不足,一个岗挂七八个人名是扩容方案。判官可贿赂、可求情说明这套冥界叙事照抄的是人间衙门,而老百姓对衙门的经验就是如此。生死簿必须有姓名栏,是因为人间办案必须有卷宗,名字填什么不重要,重要的是得有个地方能写下来,好让人相信账终究是要结的。
你以为的bug,其实是史料。
七、工程建议
面对屎山,老工程师有三条守则。本文认为它们完全适用于神话维护:
- 第一条:不要重写。 历史上所有重写神话体系的尝试都已失败,详见第二节。
- 第二条:先看懂为什么长成这样,再动手。 也就是本文第三、四节在做的事。读懂changelog比急着改代码重要一百倍。
- 第三条:只在边界上封装,不动核心。 这恰恰是当下最聪明的做法:承认里面是屎山,然后在外面包一层干净的API。游戏给神仙做数值,影视给故事做结构,网文给世界观做自洽——都是在外面加壳,里面那坨原样保留。让它继续跑着就好,它比我们都懂怎么不死。
需要警惕的是鸿蒙OS 11.x的方向。用现代世界观的“自洽”要求去patch古老叙事,修的可能是bug,拆的却是承重墙。古老神话的生命力恰恰来自容忍矛盾。把它做成设定集的那一刻,它就死了——死得很整洁,像希腊神话那样。
八、结论
中国神话是一座屎山。它在五条诊断标准上全部达标,经历过十二次版本迭代和至少五次失败的重构,拥有约七十个明确可列的补丁以及不可计数的分支,且从未发布过任何一版弃用公告。
但这并不构成贬义。它的混乱是活着的证据,它的矛盾是需求的化石,它的不自洽是两千年来无数普通人面对死亡、灾荒、不公时,一次次往山上加的土。女娲和盘古照样并存,玉帝和三清的上下级照样随场合切换,阎王照样一身多职。这套系统能跑两千多年,靠的不是严谨,而是允许报错继续运行。
如果非要给它立一块碑,碑文如下:
本系统无架构师,无弃用公告,无回滚方案。 所有bug均为特性。 仍在运行喵。
未来工作:建议对具体人物开展纵向版本履历研究。哪吒、二郎神、西王母三位候选人的迭代史最具代表性,其中哪吒已出现渲染层反写数据层的罕见现象,值得单独立项。另,年兽的版本号误标问题虽属低优先级,但涉及公众认知污染,建议择期修复。
参考文献
- 徐整:《三五历纪》[M]. 三国吴.(原书已佚,引自后世类书,属于典型的依赖包已下架)https://zh.wikipedia.org/wiki/盘古
- 应劭:《风俗通义》[M]. 东汉. https://zh.wikipedia.org/wiki/风俗通义
- 《淮南子》[M]. 西汉. 尤其《览冥训》《天文训》. https://zh.wikipedia.org/wiki/淮南子
- 《太平经》[M]. 东汉. 生死名簿、青录黑文出处. https://zh.wikipedia.org/wiki/太平经
- 干宝:《搜神记》[M]. 晋. 管辂“南斗注生,北斗注死”条. https://zh.wikipedia.org/wiki/搜神记
- 葛洪:《抱朴子》[M]. 晋. 仙阶、夺算夺纪. https://zh.wikipedia.org/wiki/抱朴子
- 陶弘景:《真灵位业图》[M]. 南朝梁. 中国神话第一份权限表. https://zh.wikipedia.org/wiki/陶弘景
- 《十王经》[M]. 唐. 地狱班子组建文档. https://zh.wikipedia.org/wiki/地狱十王
- 《宋史·礼志》[M]. 玉皇尊号、强制合库原始记录. https://zh.wikipedia.org/wiki/宋史
- 吴承恩(系):《西游记》[M]. 明. 地府道具化、战力曲线异常源头. https://zh.wikipedia.org/wiki/西游记
- 许仲琳(系):《封神演义》[M]. 明. 组织架构表与鸿钧冲突引入. https://zh.wikipedia.org/wiki/封神演义
- 蒲松龄:《聊斋志异》[M]. 清. 鬼吏人情化. https://zh.wikipedia.org/wiki/聊斋志异
- 梦入神机:《佛本是道》[M/OL]. 2006. 鸿蒙OS 10.0首发仓库. https://book.douban.com/subject/11624856/
- 胡崇峻 等:《黑暗传》[Z]. 神农架丧鼓歌抄本. 埋了一千年才被发现的那条支线. https://zh.wikipedia.org/wiki/黑暗传
致 谢
感谢十殿阎王在百忙之中未能提供任何接口文档;感谢崔判官示范了什么叫“数据是可以改的”;感谢孙悟空证明了删库跑路确实可行,只是删完才发现勾掉的只是传票不是判决;感谢《西游记》作者留下“同名同姓者多”这条珍贵的错误日志,使本文主键分析成为可能;感谢民国那位给年兽写上SP1的无名编辑,让后人有机会体验“我以为很古老其实是近代补丁”的认知震撼。
特别感谢一位在深夜追问“生死簿会不会跟公安部系统互通”的用户。这个问题本身并不成立,但它像一把钥匙,拧开了整座山。学术进步往往源于这种问错了方向却问对了地方的问题。
本研究未获任何基金资助,亦未通过任何伦理审查——毕竟伦理委员会的成员名单里,有一半人在本系统里兼着职。
利益冲突声明:作者运营 ba4srj.cn 个人站点,业余无线电与 IT 爱好者。本文即发表于该站。文中涉及的“遗留系统”“固件”“烧录”等比喻均来自本人日常工作语境,不代表任何组织立场。写作过程中使用了 AI 辅助进行文字润色与排版,但核心论点、版本号划分及 bug 清单均由本人核对原始文本后确定;若发现某条引文其实是我幻觉出来的,欢迎来信指出,我会改。作者逢年过节照常烧纸,与本系统存在实际业务往来,因此无法保证客观。本文不含任何赞助内容,也不卖课、不带货、不接神话类项目外包。洪荒流相关表述仅为学术描述,不构成对该流派的推荐或贬损。另外声明:文中所有“Won’t Fix”标记均为修辞,如有神明因此产生不适,本人概不负责,且不接受工单。