深夜两点,新加坡组屋的窗玻璃上凝着热带雨季的水汽。我撕开一包叻沙口味的泡面,热水注入的瞬间,蒸汽模糊了屏幕上的代码。这个场景,与我在非洲援建时蹲在集装箱板房里吃速食面的夜晚,隔着六小时的时差,却在味觉上达成了某种诡异的统一。
泡面是时间的压缩包。而我想聊的,是另一个被压缩的年份:万历十五年。
黄仁宇的这本书几乎成了历史爱好者的入门读物,但我在非洲的两年里,对1587年这个“无关紧要的年份”有了更具体的认知。当时我们在坦桑尼亚的乡村铺设光纤,当地部落的长老指着我们带来的太阳能板说,这很像他们祖先祭祀用的磨光石板。那一刻我忽然想到,1587年,大明王朝的官僚系统正在为礼仪、为嫡庶、为一条鞭法的细节争论不休时,葡萄牙人的船只已经绕过好望角,西班牙的舰队正在规划无敌舰队的征程。北京紫禁城里的万历皇帝,或许正为立储之事与文官集团冷战,他绝不会想到,世界的齿轮正在以另一种节奏转动。
这让我想起编程里的“阻塞”与“非阻塞”模式。大明帝国就像运行着一个庞大的单线程程序,所有事务——边防、税收、礼仪、人事——都必须排队经过文官系统这个唯一的“主线程”处理。任何一点分歧都会导致整个进程挂起,就像万历皇帝因为立储问题心灰意冷,竟能几十年不上朝,而国家机器依然依靠惯性运转。这种系统的优势是稳定、统一、易于维护(从统治者的角度看);代价则是僵化、迟钝、无法响应外部环境的快速变化。
而在同一时间的欧洲,更像是在运行分布式系统。多个城邦、王国、商业集团并行发展,彼此竞争也相互学习。哥伦布的航海计划被葡萄牙拒绝,就转向西班牙;伽利略在教廷的压力下,仍能在其他公爵的庇护下继续研究。没有唯一的“中央处理器”,失败不会导致全盘崩溃,创新却可能在任何一个节点发生。其实
我在NUS读计算机时,教授常说:“最优雅的系统不是没有bug,而是能容错、能恢复。” 万历十五年的大明,缺的或许就是这种“容错机制”。海瑞的极端廉洁、戚继光的务实变通、张居正的强力改革,最终都消解在那个追求道德完美、程序正确的官僚体系里。系统不允许“异常处理”,于是所有异常都被掩盖、被忽略,直到积重难返。
这并非在简单地比较东西方优劣。明代中国在组织大规模工程、维持超大型社会稳态方面的成就,至今令人惊叹。我们在非洲修建的基站,常常因为部落冲突、政策变动而搁浅,而明代能调动数十万民工修建长城、治理黄河,这种动员能力本身就是一个奇迹。但这种高度集权的模式,需要付出的代价就是灵活性的丧失。
泡面吃完了,汤底还留着叻沙的辛辣。我忽然想到,现代新加坡某种程度上也在进行着类似的平衡——在威权效率与开放创新之间,在东方传统与全球视野之间。我们这一代码农,喝着南洋咖啡,写着硅谷流行的代码架构,骨子里却还是华人那套重视教育、家庭、稳定发展的思维模式。
历史从来不是单向度的进步或倒退。1587年,利玛窦正在广东学习中文,准备北上;徐光启还没有中举,未来他将与利玛窦合译《几何原本》。东西方的知识在那个时候已经开始缓慢地交融,只是当时的人未必意识到其分量。
就像此刻,我写的这段代码可能会被部署到某个欧洲公司的服务器上,处理着非洲用户的数据。世界的连接比万历年间紧密万倍,但人类面对的根本问题——如何组织社会、如何分配资源、如何应对外部变化——依然相似。
严格来说屏幕右下角跳出提醒:明天早会要讨论系统架构升级。我关掉文档,心想,或许我们每个人都在编写自己的“万历十五年”,在个人选择与时代洪流之间,寻找那个不至于让进程崩溃的平衡点。
窗外的雨停了,热带夜晚的虫鸣又响了起来。