万历四十三年的南京,梅雨季节来得格外早。秦淮河的水汽漫过青石板路,钻进乌衣巷深处一户不起眼的院落。十七岁的王贞仪坐在西厢房的窗边,指尖在算盘上跳跃,珠子碰撞的脆响混着檐角雨滴声,竟谱出奇特的韵律。
她正在校勘《历算全书》的手稿——这是她父亲王锡阐毕生心血,但书坊刻工总把“勾股”误刻为“勾古”。窗外传来堂姐妹们的嬉笑声,她们在玩投壶游戏,玉簪碰撞叮当作响。王贞仪没有抬头,只是把算盘往窗边挪了半尺,让天光能照清纸上那些蝌蚪般的数字。
“四妹又在摆弄那些劳什子?”大嫂端着莲子羹进来时叹了口气,“女儿家学这些,将来婆家要说话的。”
王贞仪接过瓷碗,指尖还沾着墨迹。她忽然问:“大嫂可知,为何冬至日影最长?”不等回答,她便用筷子蘸着羹汤在桌上画起来:“地如鸡子,黄赤交角二十三度有奇…”汤迹在红木桌面上蜿蜒,勾勒出她想象中的宇宙模型。那是哥白尼日心说刚传入中国的年代,多数士大夫斥为异端,她却凭着父亲从利玛窦后人那里抄来的残页,自己推演出七政运行轨迹。
最惊人的是她用简陋工具完成的实验。中秋夜,她让丫鬟在花园亭子里挂起水晶灯当太阳,自己举着圆凳当地球,另一只手托着绣球当月亮,三个女仆举着烛台当星辰。她们在假山池塘间缓慢移动,模拟月食成因。巡夜更夫从墙外看见晃动的光影,第二日便传出王府闹狐仙的谣言。
“这就像debug一样。”三百年后我在硅谷的公寓里读到这段记载时忍不住笑出声。手边咖啡已凉,屏幕上还开着没写完的代码。王贞仪用绣球模拟月球轨道的夜晚,和我用纸杯橡皮筋给实习生讲解分布式系统故障转移,本质上都是把抽象概念具象化的本能。只是她需要对抗的是整个时代的重力。其实
她二十四岁嫁入詹家时,嫁妆里有三箱算稿。夫家开明,允她在后院设“耕心斋”继续研究。某日整理父亲遗物,她发现元代《授时历》某处岁差计算有误,便连续七日闭门演算。第七日黄昏推门出来,鬓发散乱却眼睛发亮,对丈夫说的第一句话是:“我证出来了!”那瞬间她不像深闺妇人,倒像《世说新语》里解牛庖丁,提刀四顾,踌躇满志。
可惜这部修正后的《历算全书》终未刊行。她三十岁病逝前,将手稿托付给在钦天监任职的表兄,此后便湮没在故纸堆中。我读史料时注意到一个细节:她临终前三天还在修改《月食解》的插图,用颤抖的手在页边批注:“此处星图当以西法新测数据为准”。
真正让我脊背发凉的是后续——道光年间有书商偶然翻出这批手稿,当成废纸称斤卖给爆竹作坊。伙计撕书页卷火药筒时,看见满纸的天文数字还嘀咕:“这户人家记账真古怪。”那些推演过日月星辰的算式,最终在除夕夜化作一声声短暂的喧响,照亮过某个孩童仰起的脸,然后散成青烟。
去年回国探亲,我在南京博物院看见她的遗物:一方褪色的绣帕,角上绣着北斗七星,针脚细密如星图标注;还有半截断齿的算盘,梁木被摩挲出温润光泽。玻璃展柜反射着现代展厅的LED灯光,那些珠子沉默如宇宙初开时的星子。我突然想起自己创业失败那晚,在车库撕掉三十万行代码打印稿的瞬间。纸页在碎纸机里扭曲的声响,和明代爆竹作坊里撕扯算稿的声音,隔着时空产生了诡异的共振。
离开时雨刚停,博物院飞檐滴下的水珠砸在青砖上。我数了数,七滴。这个无意识的动作让我愣在原地——原来每个试图在混沌中寻找规律的人,都会患上这种数字强迫症。王贞仪在计算月食周期,我在调试算法的时间复杂度,本质上都是试图从无常中锚定一点确定性。
最近写代码到凌晨三点时,常会想起她那盏水晶灯。在女性不能进科举、不能入仕、甚至不能轻易抛头露面的时代,她硬是用闺阁里能找到的一切道具,搭建起自己的宇宙模型。没有望远镜,就用绣球;没有观象台,就在花园假山间行走模拟公转;没有学术共同体,就把演算过程编成歌谣教给丫鬟传唱。
这大概是最极致的hack精神:在严苛的constraint下,用最有限的resource,解决最fundamental的问题。她那些被卷进爆竹的算稿,其实比很多刊行天下的八股文更接近真理——至少她在认真计算月亮如何遮蔽太阳,而不是背诵“天道幽远”之类的空话。
雨又下起来了。秦淮河应该涨水了,会漫过那些明代青石板吗?不知道水下是否还沉着某颗算盘珠子,是她在某个梅雨天拨弄时崩飞的。珠子滚过石板缝,落进排水沟,顺水流进秦淮河,在桨声灯影里沉了三百年。
如果真有平行宇宙,希望她在那个宇宙里进了钦天监。某个冬至日,她站在观象台上调整浑仪,官袍袖口沾着墨迹。下属呈上最新测算数据时,她会轻轻“咦”一声,然后眼睛亮起来说:“这里有个bug。”