黑客们的故事(连载八)计算中的神
写第一本书就建立了响亮名声的作者不少,一生主要花在一套书上的作者也不少,但是很少有人因为一套还没写完的书而获得大奖;而能因为一套没写完的书而获得计算机科学界最高奖图灵奖的,就只有一位。他是高德纳。
高纳德
不错的程序员
高德纳这个名字是一位华裔计算机科学家为他起的,他的原名是唐纳德·欧文·克努斯,1938年初出生于维斯康星州的密尔沃基。他的家境只能算是普通,不能算是家学渊源,也不是什么世家。但是数十年后,他成了神话。
据说当孩子还很小时,在他们身上发现的特质,会影响甚至决定他们一生的走向;中国俗话说的“三岁看大、七岁看老”似乎就是一个佐证。当唐纳德还只是个小学生的时候,就肯花几天时间翻遍一本大字典,来尝试穷尽某些字母的排列组合方式。这为他所在的班级赢得了当地糖果厂商组织的拼字比赛;而这种坚忍的做事方式,也成为了他一生的重要注脚。
高中时的高德纳曾经一度很喜欢音乐,希望以后能在这一领域发展。但是在他入读凯斯理工大学之后,之前对音乐的热爱就被一台IBM 650计算机所取代。他在编程和算法上似乎有种直觉,而这种直觉是由大量数学练习所奠定的。很快,他就成了一名不错的程序员,还为校篮球队写了个程序来计算每位球员的价值。22岁时,以学校公认的出色成绩,他从凯斯理工大学毕业,同时获得了学士学位和硕士学位,然后进入加州大学伯克利分校,攻读数学博士。
读博士期间,他开始写些软件出售,其中有不少都是编译器。这些软件的出色质量引起了出版社的注意,1962年,一家著名出版社向他约稿,希望写一些关于编译器的内容。高德纳答应了下来。
之后的生活似乎风平浪静。1963年,高德纳博士毕业,留校任教。上课、科研,有条不紊。直到1966年,出版社编辑实在按捺不住,来问书稿的情况,才知道他已经写了3000页,但是甚至还没入正题。权衡之下,只好作为系列发行。1968年,巨著《计算机程序设计艺术》(简称TAOCP)第一卷正式出版,1969年和1973年又相继出版了第二和第三卷。
勇气和坚持
1974年,高德纳以36岁的年纪,获颁图灵奖。颁奖词中写道,奖项是为了“表彰其在算法分析、程序设计语言的设计和程序设计领域的杰出贡献,特别是其著名的《计算机程序设计艺术》系列书籍。
这种亮眼的成绩足以令人望而却步,因此当高德纳宣称要暂停这套书的写作时,反响激烈而多样。高德纳的理由是排版技术太差,影响书籍的美感;而有人认为他不过是逐利之徒见好就收,还有人认为他是盛名之下其实难副。而高德纳不过是使用典型的黑客思维来解决问题罢了:既然工具不称手,那就自己做个称手的工具好了。
但是所花的时间比他计划的长得多。十年后,高德纳拿出了三项革命性的成果:排版软件TeX、字体设计软件Metafont和“文学化编程”。TeX可以完美实现任何编排效果,Metafont能以编程的方法设计任意字体,而“文学化编程”则能在程序编写的同时,形成结构美观而内容充实的文档。我们甚至可以清楚地看出这几个工具的发展轨迹:因为排版不便而开发TeX;为了让印刷字体更美观而开发Metafont;以及为了让这两者的程序编写更方便,发展了文学化编程。
这三项成果,特别是TeX,改变了书籍排版的规则,并且迅速成为科学排版的黄金标准——人们说,为了TeX,不妨给高德纳再发一个图灵奖吧。高德纳的完美主义在这些作品中又一次体现出来:TeX的版本号是个小数,不断逼近π值;而Metafont的版本号则逼近自然常数e。现在Tex的稳定版是3.1415926,而Metafont是2.718281。高德纳有信心,这两种软件已经无需大的修改;他甚至列出了悬赏,找出bug就可以获得奖金,而奖金从2.56美元(“十六进制的一美元”)开始,每年翻一倍。
工具称手了之后,高德纳重又投身于他一生的事业中,甚至为了这套巨著,1992年就提前荣休。十几年之后,第四卷开始陆续出版——这一卷体量巨大,不得不分成好几册,而直到现在也还没全部出版完成。预计写作的后三卷,更是遥遥无期。
但是高德纳依然在工作。TAOCP已经被列入“20世纪最重要的12部学术专著”名单之中,与爱因斯坦的《相对论》、狄拉克的《量子力学》、维纳的《控制论》等并列。他的目标是“组织和总结已知的计算机方法的相关知识”,其他并不在考虑之列;就连无数人艳慕的图灵奖奖杯“图灵碗”,对他来说,也不过是个装水果的餐具罢了。