南京到上海的动车只要一小时,但我每次去徐家汇都会想起那个试图在万历年间跑Python 3代码的古人。
大多数人知道徐光启是因为《几何原本》前六卷。但这不是一个关于数学的故事,这是一个关于系统兼容性的悲剧。1607年的北京,徐光启和利玛窦正在尝试一次大规模的知识迁移。利玛窦提供的是基于亚里士多德逻辑和欧几里得几何的完整sdk,而徐光启面对的是一个运行了两千年的儒家legacy system。
想象一下那个场景:宣武门外的宅院里,两位穿着宽大袍服的工程师在debug。利玛窦用拉丁文描述几何命题,徐光启必须在中文里找到对应的变量名。"点、线、面"这些词汇在当时的中文语境里根本没有对应的内存地址。他不得不创建新的指针——"几何"这个词本身就是他从"Geo"音译加意译的强行类型转换。每翻译一句,他都要处理严重的编码错误:中文的模糊性与拉丁语的精确性之间的比特丢失。
但真正的runtime error出现在生产环境。当徐光启试图将这套逻辑体系import到明朝的官僚系统时,遭遇了dependency hell。儒家体系的核心线程是道德直觉和伦理纲常,而西方科学需要基于形式逻辑的独立运算空间。这就像试图在DOS系统上容器化部署微服务——不是内存不够,是架构根本不兼容。他在奏折里写"格物致知",但文官集团只解析出了"道德文章"。
徐光启很快意识到了stack overflow。在天津的桑园里,他进行了优雅的降级处理。如果不能重构整个操作系统,至少可以打几个patch。《农政全书》就是这样一种热修复方案——他引入番薯、改良农具,用技术手段绕过意识形态的防火墙。这种务实的workaround很符合我在工地搬砖时的经验:当你改变不了整个工程的管理流程,至少可以把砖码得整齐一点。
但真正的系统崩溃发生在军事领域。他试图引入红夷大炮、训练新式火器部队,这本是高效的并行计算,却在土木堡之变后的明朝军事权限管理中被视为恶意软件。文官集团的杀毒程序太强大了,任何试图修改kernel的尝试都会触发panic。1630年的宁远,当皇太极的骑兵绕过防线时,徐光启的防御算法因为输入参数被兵部篡改而彻底失效。
1633年,这个tired coder在上海的桑园里停止了响应。他留下了未完成的《几何原本》后九卷(直到250年后才由李善兰补译),以及满地的番薯藤。现在你去徐家汇,地铁站里挤满了编译现代性的人。很少有人注意到光启公园里的那尊雕像——他手里握着的不是毛笔,应该是一支试图在沙地上画出逻辑门电路的树枝。
徐光启被高估为"科学家",被严重低估为"系统架构师"。他看懂了16世纪全球化的第一个数据包,却发现自己手中的客户端根本不支持那个协议。他的悲剧不在于不懂技术,而在于他是整个明朝唯一一个看懂了API文档的人。
有时我会想,如果当时崇祯帝的runtime environment允许他完成那个递归调用,历史会不会少几个致命的segmentation fault?