高德纳设置了一个悬赏游戏。如果有人挑出了他编写的TEX程序的错误,他就给挑错者奖励。第一个错误值2.56美元,第二个值5.12美元,第三个值10.24美元。据说,这张10.24美元的支票是他迄今为止为此签出的最后一张。高德纳是美国计算机科学家 唐纳德·克努斯(Donald Knuth)的中文名。这位“现代计算机科学的鼻祖”是计算机界的传奇人物。他在年仅36岁时就获得了图灵奖,成为该奖历史上最年轻的获奖者。他的获奖作 品《计算机程序设计艺术》原计划出七卷,至今才出到第四卷。 尽管如此,它依然与爱因斯坦的《相对论》、狄拉克的《量子力学》、费曼的《量子电动力学》等并 列,被《科学美国人》杂志评选为20世纪最重要的12本物理学著作之一。 1 早期经历 “是男人就得-67” 1938 年高德纳出生于美国密尔沃基。他的超凡智力在8岁时就显示出来了。当时,一家糖果商在孩子们当中举办了一项有趣的比赛,要求用“Ziegler’s Giant Bar”里面的字母,写出尽可能多的单词。裁判事先准备了一份2500个单词的列表,可小高德纳令人惊讶地写出了4500多个单词。他为学校赢得一台电视 机,还为每个同学赢得一根棒棒糖。他的赛后感言是,我还能写出更多。 高德纳就读的大 学是凯斯理工学院。1956年,他在这里第一次使用了IBM650,并开始学习编程。不久之后,高德纳就对编程有了许多体会。当时高德纳还兼职管理学校的 篮球队,于是他编写了一个程序,能够自动评估每名球员的价值,令球队的教练非常欣赏,还引来了CBS电视台。后来高德纳、球队教练和IBM650的合影还 被印到了IBM650的宣传册上。1960年,高德纳以公认出色的成就,打破了学校的惯例,同时获得了学士和硕士两个学位。 随 后,高德纳进入伯克利攻读数学博士学位。在此期间,他的编程生涯也正式开始了。他当时所写的程序中最值得一提的,是对ALGOL60编译器提出的测试方 法。ALGOL60经常会因为编译器不成熟而出故障。高德纳编写了一段非常简单的测试程序,江湖人称“Man or boy test”,翻译成中文就是“是男人就得-67”。高德纳说,只要用ALGOL60编译器来编译我的这段程序,如果运行结果等于-67,就说明这个编译器 是纯爷们儿。 2 获图灵奖 盖茨为他“做推广” 1963 年,25岁的高德纳拿到了博士学位,并留在伯克利任教。在毕业前一年,高德纳已经因为设计编译器而响誉计算机行业。著名的Addison-Wesley出 版社向他约稿,请他写一本关于编译器和程序设计方面的书。这本来是很平常的一件事,但不久之后,他就把这件事做成了计算机科学史上的奇观。1962年约的 稿,高德纳一直写到1966年还没交。编辑急了,找到高德纳,说这都4年了你写了多少啊。高德纳说,才写3000页手稿。编辑大囧,忙问都这么长了怎么不 交稿?答曰,我还没写到正题呢。编辑崩溃了,说那你出个多卷本吧…… 把一件平常的事做到人间极致,这就是高德纳。他不是故弄玄虚,他的心里攒着一股劲儿,要写一部与牛顿的《自然哲学的数学原理》相媲美的巨著。1968年,《计算机程序设计艺术》(TAOCP)的第一卷正式出版了。这一卷的标题叫《基本算法》,但难度却并不低。据说比尔·盖茨曾经花了几个月的时间读完这一卷,并且做了大量的练习,然后他说,如果你想成为一个优秀的程序员,那就去读这个《基本算法》吧。高德纳本人的说法更犀利:要是看不懂,就别当程序员。 同 年,高德纳跳槽到斯坦福大学,并当上了教授。一年后,TAOCP第二卷正式出版。1973年,这本书出到了第三卷。这三卷书被计算机界惊为“神作”,在最 初的几年内就卖出去100多万套。按照计划,这套书一共是七卷,但是现在刚刚写完三卷,就已是震古烁今。震到什么程度呢,连图灵奖颁奖委员都坐不住了。按 照惯例,图灵奖的获奖者都是成就等身,要经过时代的检验。但此时,美国计算机协会便决定立即为其颁发图灵奖。这对高德纳来说,无疑是个殊荣,这一年他只有 36岁。至今,他仍保持着图灵奖最年轻获奖者的纪录。 3 中途辍笔 圆周率充当序列号 高 德纳在获此殊荣之后,再一次令世界大跌眼镜:他宣布从此歇笔了,因为排版工具太差,破坏了这套书的美。这一动作让外界十分震惊。有人说,高德纳江郎才尽, 见好就收;有人说,图灵奖对前三卷的评价过高了,高德纳只好找理由撤了;还有人说,获奖之后停止写作,充分体现了他写书的目的就是为了功利。 可高德纳在辍笔的10年间居然创造了三个重要的成果:字体设计系统METAFONT、文学化编程(Literate Programming),以及其中影响最大的排版系统TEX。 在Word系统中写科学论文是一件很辛苦的事,你需要调整格式,也很难表现数学式。但是在TEX中,这些麻烦几乎完全不存在,只要载入样式文件,排版就自动完成了。TEX是一场出版界的,直到现在仍是全球学术排版的不二规范。 TEX 作为一个软件产品,也令人叹为观止。它的版本号不是自然数列,也不是年份,而是从3开始,不断逼近圆周率(目前最新版本是3.1415926)。高德纳再 一次用行动宣告,这个东西趋近完美,不可能再有什么大的改进了。他还设立了奖金:谁发现TEX的一个错误,就付他2.56美元,第二个错误5.12美元, 第三个10.24美元……以此类推。结果直到今天,他也没有为此付出多少钱,可见TEX经过了怎样的千锤百炼。他设置的另一个奖项是找出其著作中错误的人 能得到2.56美元,因为“256美分刚好是十六进制的一美元”。据说,获奖者将有他签名的支票视为珍宝,并不兑现。 4 回归写作 计算机王者归来 歇笔十年的高德纳,手捧这三项成果重出江湖,打消了一切质疑。这时他才对十年前的歇笔事件做了一个轻描淡写的解释:一个人要想把事情做得漂亮,就必须要跟上帝保持和谐,现在,上帝终于让我去写四卷了。 1992 年,高德纳为了专心写作,宣布提前退休,并停用电子邮箱(此人从1975年就开始玩电邮了)。高德纳一共带了28位博士生,他觉得28这个数字很好,于是 便宣布不再收学生了。尽管如此,他仍然为想要师从于他的人们留下了一个盼头:他开了一门公开课,每次会提出一个问题,如果谁能快速解出来,高德纳就会为他 的博士论文签名。不知道哪位后起之秀能够获得如此殊荣呢,我们拭目以待吧。 2008年,在TAOCP的前三卷面市30年之后,第四卷终于面世了。而高德纳自己却已是白发苍苍的古稀老人了。他对计算机科学的热爱,使他为这套丛书耗费了一生的心血。 【新知补丁】 图灵奖 Turing Award 计算机科学界最高奖。美国计算机协会(ACM)于1966年设立,专门奖励那些对计算机事业做出重要贡献的个人。其名称取自计算机科学的先驱、英国科学家阿兰·图灵。目前图灵奖由英特尔公司以及Google公司赞助,奖金为25万美元,一般每年只奖励一名计算机科学家。