高德纳(DonaldErvinKnuth)——经典巨著《计算机程序设计的艺术》的年轻作者。

洋洋数百万言的多卷本《计算机程序设计的艺术》(TheArtofComputerProgramming)堪称计算机科学理论与技术的经典巨著,有评论认为其作用与地位可与数学史上欧几里得的《几何原本》相比。作者高德纳(DonaldErvinKnuth)因而荣获1974年度的图灵奖。同时是排版软件TeX和字型设计系统Metafont发明人,所著描述基本算法与数据结构的巨作《计算机程序设计的艺术》被《美国科学家》杂志列为20世纪最重要的12本物理科学类专著之一,与爱因斯坦《相对论》、狄拉克《量子力学》、理查·费曼《量子电动力学》等经典比肩而立。

高德纳1938年1月10日生于威斯康辛州密歇根湖畔的密尔沃基(Milwaukee)。这是一个山灵水秀、人才辈出的地方,受父亲影响,高德纳从小喜欢学习和音乐,并表现出与众不同的才能。高德纳上8年级时,当地的Ziegler糖果厂为了促销其称为GiantBar的一种棒棒糖,在学校中搞了一个比赛,看谁能用Ziegler’sGiantBar中的字母排列组合出最多的单词。高德纳假装胃疼,在家里呆了两个星期,利用一部大字典,得出了4500个单词,比裁判掌握的2000个单词多出一倍多,一举为他所在的班夺得冠军,赢得一台电视机和每人一块GiantBar,而高德纳本人则赢得一付雪撬。

1956年,高德纳以各科平均97.5的创记录的高分从密尔沃基路德兰高级中学毕业,进入俄亥俄州克利夫兰的开思理工学院(CaseInstituteofTechnology)攻读物理。大学一年级结束以后的暑假,高德纳在学校打工,负责把统计数字画成图表。碰巧他工作室的隔壁就是计算机房,新到了一台IBM650。当时的计算机体积都很庞大,有供输入和调试的控制台,上面排列着一排排的开关和指示灯,计算机工作时指示灯快速闪烁变化出不同的图案,这引起高德纳极大的好奇与兴趣,他接连好几天彻夜不眠地呆在机房,观察它的工作,钻研使用手册,探究计算机的奥秘。一年以后,他终于改学数学,与计算机结缘。这段经历对于高德纳是如此重要和关键,以致他在《计算机程序设计的艺术》第一卷的卷首,不像别的作者那样一般写上“献给自己的父母”或“献给自己的妻子”,而是写着“献给曾经安装在开思理工学院的650型计算机,以纪念那些愉快的夜晚”。他的第一个计算机应用程序也是在650计算机上实现的:他为他所在的校篮球队(高德纳人高马大,也喜爱运动,娱乐)设计了一个复杂的公式,根据球员在每场比赛中的得分、助攻、抢断、篮板球、盖帽等多项统计数字对球员进行综合评估。球队教练根据高德纳的程序挑选和使用球员,使开思理工学院在1960年赢得了联赛冠军,高德纳的“神奇的公式和程序”也被当地报纸和广播传为美谈。

高德纳至今进行了两大工程,一个已经完成,一个尚未完成。第一个大工程就是《计算机程序设计的艺术》系列,开始于他念博士期间,计划出七卷,第一卷《基本算法》于1968年出版,第二卷《半数字化算法》于1969年出版,第三卷《排序与搜索》于1973年出版,第四卷《组合算法》已于2011年出版。这个工程为什么前紧后松,长期停顿呢?

高德纳暂停了写作,理由是现有的计算机排版软件效果太差,破坏了这套书的美。这不免引发作者是否江郎才尽,见好就收的猜测与怀疑——不料辍笔10年的高德纳以三个重量级创造性成果:字体设计系统METAFONT(其价值一言以蔽之:对整个西文印刷行业带来了革命性变革)、文学化编程(充分展示程序设计的艺术性:清晰,美感,诗意),尤其是最具革命性的排版系统TEX(至今仍是全球学术排版的不二之选)给出了强力回应。尽管如此,仍有人说高写完三卷TAOCP就去研究TeX,其实是害怕写第四卷——不过他对这类风言风语根本不以为意:“一个人要把事情做的完美,只有跟上帝的意图保持和谐,现在上帝要我去写第四卷了。”

上大二那年,某教授在课堂上给出一个刁钻的题目,宣称谁能破解就可记成绩“A”。高跟大多数同学都以为那是道无解的题,直到某日他未赶上公共汽车,只能步行去看一个演出时,方决定利用路上的闲暇碰下运气。不曾想问题很快便获得解决,成功地得到了“A”。在接下来的那个学年里,他的离散数学成绩又一次被老师评为“A”。

高德纳1960年毕业于开思理工学院,因学业特别出色,被破例同时授予学士和硕士学位。之后在伯克利攻读数学博士期间,ALGOL60经常因为编译器不成熟出现故障,他为此编写了一个简单的测试程序,人称“Manorboytest”(男人或男孩测试),可以译成“是男人就得-67”。高解释,用ALGOL60来编译这段程序,只要运行结果等于-67,就说明这个编译器没有问题了,是纯爷们儿。

《美国数学月刊》刊载过高德纳一篇名为“卫生纸问题”的论文,研究如何合理使用厕纸的算法,小节标题中使用了大量的“粪便学”词汇。编辑警告他,过度调侃的文风在我们这里是危险的,请三思!高替换了小标题里的某些词,但不想动文章标题,遂在给编辑的回信里写道:我用这个题目做过两次演讲,主题早已被广泛采用和讨论……云云。编辑无奈之下只好表示:“你的厕纸被接受了!”(斯坦福大学计算机科学系楼内的厕纸架可并放两筒厕纸,供如厕者取用。卷筒大小不等时,喜欢从大筒拿纸的叫big-chooser【大的选择器】,喜欢从小筒拿纸的则称little-chooser【小的选择器】;若两筒大小接近,一般人的选择可能是离手最近的。厕纸平时由janitor【看门人】负责更换,用完一筒换掉一筒;不过要是同时用完,恐怕就会有人遇上麻烦了……高研究的似是两筒纸同时用完的窘境出现的概率)。

有人视高为文艺复兴时期式的天才人物,因其不仅博学,更难得的是具超一流的动手能力——在分工日益细化,专业领域愈来愈狭窄的现代社会,这种博而专,基础与应用兼能,理论和操作并行的人才类型尤为罕见。如同一个人独力设计制造一架飞机,除了需要精通空气动力学理论,还须考虑机身上每一颗螺丝钉的固定方式,这确实不免让人想到欧洲文艺复兴时期列奥纳多·达·芬奇那样的全能巨人。

《计算机程序设计艺术》第一卷于1968年推出,可真正能读完读懂的人为数并不多(传比尔·盖茨费时几个月才读完这一卷,然后说,如果你想成为一个优秀的程序员,那就去读这个《基本算法》吧)。高对此解释道:“我知道我的书是不容易读,不过要知道的是,如果不是我精雕细琢地写的话,它们会比现在难读一百倍。”1973年,这部刚出到第三卷的书(计划写七卷)已被计算机界视为“神作”,最初几年就卖出100多万套;译为俄、日、西、葡、匈牙利、罗马尼亚等多种文字后,更创造了计算机类图书的销售纪录。美国计算机协会(ACM)也不淡定了,1974年就将国际计算机界的至高荣誉“图灵奖”授予了他——此时的高德纳年方36岁,他迄今还是这项最年轻图灵奖获得者纪录的保持者。