财新传媒
位置:博客 > 万战勇 > 重访纽黑文

重访纽黑文

去年(2015年)4月底,我在耶鲁的博士导师保罗胡达客(Paul Hudak)病逝。一年后,他生前的同事和学生们从世界各地赶来重聚在耶鲁大学,为他举行了一场为期两天的纪念活动。我也因此在离校快十四年后重回耶鲁所在的康涅狄格州纽黑文(New Haven )市。这是我毕业之后首次返校,悲喜交加,感触良多。
 
活动前一天晚上8点多,我的航班降落在纽约肯尼迪国际机场。随后我驱车去纽黑文东面的一个叫吉尔福德(Gilford)的小镇,那里有我多年的朋友张老倌一家。老倌比我早几年进耶鲁读天文博士,后来一直在耶鲁工作,算是在纽黑文扎根了。我拖着两个箱子来美国上学的时候,是张老倌来纽约接的我。如今我开在同样的路线上,十九年已经过去了。当年孤身一人第一次出国那种忐忑不安又满是憧憬的心情,记忆犹新。年轻的时候,一切皆有可能。到哪里上学,读哪些书,爱什么样的人,创业还是打工,每个选择都会带你去看到不同的风景。年纪越大,可以做的选择越少,人生逐渐定型了,所以世界归根结底是年轻人的。那时的我如果能预知未来,会做出哪些不同的选择呢?
 
离开机场,沿678高速公路穿过皇后区,再过白石桥(Whitestone Bridge),我转上了95号高速,向东北方向前进,很快就进入了康州的斯坦姆福(Stamford)市。康州属于新英格兰地区,是美国建国时的13个州之一,相对美国西部而言历史悠久。比如耶鲁建校于1701年(清朝康熙年间),到现在已经三百多年,远超中国现在任何一所高校。新英格兰最美的是秋天,霜降之后漫山遍野各种色调的红叶,和一两百年前的建筑相得益彰,美不胜收,可惜这次我来的时候是春天。一路行来,曾经熟悉的地名次第出现,勾起一件件往事:桥头堡(Bridgeport)、米尔福德、西黑文......纽黑文,我回来了!
 
到张老倌家是夜里11点了,张老奶给我端上了热腾腾的老鸭酸菜汤面,一碗下肚,浑身舒坦。我到美国的第一顿吃的是张老奶的香菇鸡汤面,还在他们家住了两个星期。这两碗面条,隔了十九年。当时我们逗着玩的张家大小姐,现在已经大学毕业去云南支教一年,回美国工作一年后很快又要去南京读研究生了。以小朋友的人生为参照,我更直观地感受到时间的流转和无情。
 
第二天早上,和张老倌一起开车去耶鲁,从95号换91号高速,再顺着特朗布街(Trumbull St)开到惠特尼大道(Whitney Ave),下车步行。熟悉的地名、街景扑面而来,眼睛明显不够用了。我一边听张老倌讲解纽黑文的变迁,一边忙不迭地拍照。Hong Kong超市,是纽黑文地区最大的亚洲食品店,我上学的时候是这里的常客。现在规模扩大了。当肯甜甜圈(Dunkin Donuts)还是老样,Paul在这里给他编译原理课的学生买过甜面包圈。校医院搬走了,不过我经过它原址的时候还是马上想起了在这里住院的经历,还有毕业时在门前长凳上和Paul的促膝长谈。建于1901年的Woolsey大厅,我和太太在这里听过精彩的音乐会。SSS大厅,是Paul纪念会的地点。楼外的草坪上,几树茱萸正艳,满眼的粉红,正应了王维“遍插茱萸少一人”的诗句。
 

图一:耶鲁大学SSS楼前的茱萸

到了会场,十几年不见的老师、同学、学长、学弟陆续出现,一张张笑脸都是那么亲切。纽约、科罗拉多、华盛顿、俄勒冈、加州、加拿大、法国、英国、瑞典、新加坡、台湾......,我们都回来了。不停地握手寒暄:你还好吗,现在做什么,还记得一起熬夜调试机器人控制程序吗,孩子多大了,以后有什么打算,夏天来玩吧,我们一起去攀岩......恍惚间穿越回了我的青年时代。毕业之后天各一方,很多人以为不会有机会再见了,因为Paul我们又聚在了一起。如果Paul还在,该多完美。
 
纪念会的第一天是学术讲座,Paul的博士导师、同事和学生们纷纷介绍各自研究的成果,内容都是和Paul的研究相关的。Paul的兴趣非常广泛,从内存垃圾回收、共享内存的分布式系统、函数式编程语言的设计(他是Haskell语言的主要设计者之一)、面向特定领域的语言、程序语义、反应式编程(reactive programming),到算法作曲都有涉猎。因此,报告的内容也是五花八门,令人脑洞大开。
 
我的科大、耶鲁双重师兄梁胜毕业后投身工业界,设计了JNI(Java和其他语言的接口)并领导开发了Java虚拟机,对软件业有深远的影响。梁师兄从Sun离职后连续成功创业,现在是云计算公司Rancher Labs的联合创始人和首席执行官。他以“怎样才算一个伟大的程序员”为题做报告,发人深省。Paul的合作者、我的博士论文指导组成员John Peterson讲的是他用Paul领导开发的计算机音乐作曲和合成系统Euterpea在音乐系学生中开课的经历,听得我跃跃欲试。毕业于科大少年班和普林斯顿的耶鲁终身教授邵中,也是我博士论文指导组的成员。他近年来致力于编程语言和操作系统的研究,在可认证软件(certified software)领域带领团队做出了许多开创性的成果。听邵老板介绍了他的工作,相当震撼。他的目标是用形式化的方法实现复杂软件系统的无错化。一旦完成,将解决数十年来一直困扰软件行业的“人编程总会犯错”难题,对学术界和工业界会带来翻天覆地的影响。这项研究的价值,想想前几天在微信朋友圈刷屏的“一个编程错误毁了日本价值18亿元卫星”的事你就清楚了。
 
晚上,和张老倌一家一起去拜访另一家老朋友。当时在耶鲁的朋友当中,交往最深最多的就是他们两家,巧的是还留在纽黑文的也是这两家。这家的男主人老郭,以前不声不响,这两年突然表现了非凡的文学创作才能,写出了不少精彩小说,令人刮目相看。说好去吃他家李老奶做的米线,结果他们除了米线还准备了一大桌子火锅,吃得我肚子滚圆,感动满满。友情这东西,过多少年都不会变。
 
回纽黑文第三天,继续Paul的纪念活动。大家先是在一起回顾Paul的生平。Paul的兴趣广泛,精力过人,是同行和学生眼中的超人。作曲和弹钢琴,他的爵士乐队Collectively Speaking连续几年被评为纽黑文最佳爵士组合。玩体育,攀岩、划艇、滑雪,Paul样样来。他还是附近汉姆敦(Hamden)市的中学女子足球和曲棍球教练。因为喜欢滑雪,把女儿训练成了滑雪世界冠军。没有人料到他会被白血病击倒,只能感叹造化弄人。和他的才华相比,Paul的人品同样令人折服。所以,上台回忆Paul的人排成了长队,超过了预定的时间很多。
 
我的回忆集中在两件事情上:当时拿了耶鲁计算机的录取信后,从网上查到Paul做过计算机音乐的研究,非常兴奋,写信向Paul咨询要不要来美国的时候带上我的吉他和电子琴。在我的规划里,我是要跟他学习计算机音乐的。没想到阴差阳错,他那几年的研究项目和音乐没有任何关系,我的博士课题是函数式程序设计。虽然事情没有按我的计划发展,这个课题还是给了我很多的意外惊喜,让我大开眼界。潜移默化的影响,多年后让我在工作中还受益良多,所以并没有后悔。
 
另一件事是在读博两年考完资格考试之后,感觉自己的学习研究进入了一个瓶颈,不懂的东西太多,和周围的人讨论感觉自己就是一个白痴,对自己的智力产生了严重的怀疑。我开始考虑自己到底是不是这块料。正好我在微软暑期实习后得到了一个工作的offer,于是决定从耶鲁退学去当程序员。Paul知道后,和我反复长谈,又找来系里其他几位教师给我做工作,让我重新找回信心。Paul说,做研究就像一个巨大的拼图游戏,一开始你会找不到任何头绪,但是慢慢地,你会发现有些小块可以拼在一起成为一个大块。如是反复,线索会越来越清晰,最后拼出一幅完整的大图。我将信将疑,但最后还是被说服,继续我的学业。接下来的三年,读论文写论文,做系统推公式,我对一个领域从一无所知到一知半解,最后拿到了学位。虽然自己不是做研究的好料,这份经历却是很好的训练。起码,我对困难的心理承受能力和自信大大增强了,遇到问题不会那么轻易放弃。我对宣告式(declarative)代码的偏好也是在那个时期形成,深深影响了我的编程风格。
 
后来到谷歌工作,设计C++的测试框架gtest和gmock,我试着加入一些在耶鲁学到的嵌入式面向特定领域编程语言的元素,和别人的思路不太一样。后来看来,我的选择效果不错。此外,在设计gmock系统的时候,遇到了很多困难(当时业界对这个问题能否解决还是普遍持怀疑态度)。我虽然比不上很多程序员聪明,但是我做到了契而不舍,在这个问题上比别人钻得更深,最后还是做出来了,十年后这个系统大家还在用,说明其设计思想还是可取的。如果我没有在耶鲁那些年受过的训练,决不可能做出来这个系统。感谢您,Paul。感谢你们,耶鲁的老师和同学。
 
追思会后,到计算机系参观系里这些年的研究成果。望着这幢我度过了五年的红砖小楼和楼前的两树梨花,感慨万千。跟我离开的时候比,没有什么大的改变:信箱、打印机、机房、沙发、过道,一切还是老样子,只是我用过的办公室,不再有我贴在门上的照片。同样物是人非的,还有Paul以前的办公室。我系街对面是一片公墓,Paul就葬在那里。站在他的墓碑前看过去,是我系的大门,他工作了33年的地方。
 
离开Paul,我和张老倌登上纽黑文的最高峰东石(East Rock)公园。老人、情侣和小朋友们,放着音乐,在阳光下嬉笑野餐。天气晴好,可以俯瞰整个耶鲁校园和纽黑文大部分市区,还能远眺几十英里外的纽约长岛。十九年前,一个年轻人站在这里,雄心万丈,发愿要掌握计算机的奥秘,做教授,成就一番事业。今天,站在山顶的是一个头发斑白的中年码工,他日常的生活是上班下班带娃睡觉,不再去想关于生命的问题。有空的时候,他会写几个字,缅怀一下往昔的梦想,咀嚼逝去的青春的尾巴。而时代,已经把他抛到了看不见的地方。



图二:东石公园山顶建于1887年的美国烈士纪念塔
推荐 54