高德纳:一半神袛,一半凡人

3.pic

高德纳真的只是一个人吗?

这个问题,是高德纳自传的开头。

高德纳,现代计算机科学的鼻祖。他完成了编译程序、属性文法和运算法则等领域的前沿研究,出版专著17部,发表论文150余篇(涉及巴比伦算法、圣经、字母 “s” 的历史等诸多内容),写出两个数字排版系统,同时在纯计算数学领域也有独特贡献。

他获得的奖项难以胜数,其中包括 ACM Turing Award 颁发的图灵奖(1974),美国国家科学奖(1979),日本 KYOTO 奖(1996),瑞典科学院的 Adelskold 奖及冯诺伊曼奖。

作为一个传奇,他的人生怎会平淡。

 

自古天才出少年

1

八岁时的高德纳即显出超凡智力。当时某糖果商以小学生为参与对象举办了一项益智趣味比赛,要求用 “Ziegler’s Giant Bar”(分别为糖果厂名和出产的棒棒糖名)里的字母写出尽可能多的单词。高德纳假装胃疼宅家两周,依靠一部大字典列出了4500个单词(超出裁判掌握的2000个单词一倍多),不仅使所在班级夺冠(奖品为一台电视机和每人一块 Giant Bar),本人也赢得一副雪撬。

其赛后感言曰:我还能写出更多。

在高中第一学年,高德纳并未对数学发生太大兴趣,他更喜欢听音乐与作曲,一度考虑过报考音乐专业。这个爱好深度影响到他后来的生活及研究——他将写作喻为演奏管风琴,其书房里的确也摆放有一台特制的 84 管管风琴,此外他还会萨克斯和大号等乐器。所著《娱乐和游戏论文集》一书有四个章节内容涉及到高的“主要副业”——音乐。

进入90年代,当连续工作几天需要放松一下时,他会着手谱写管风琴乐曲。

进击的学霸

2

当高德纳在 1956 年以科均 97.5 的分数高中毕业进入凯斯理工学院物理专业后,他中学时创作的科幻小说《普茨比度量衡体系》发表于著名的《疯狂(Mad)》杂志,挣得平生第一笔稿费 25 美元及西屋 “科学天才” 提名奖。

大学一年级留校打工,毗邻的计算机房新到了一台 IBM650 ——这个指示灯闪烁不定的庞然大物让高德纳生出莫大兴趣。当获准在晚上操作那台计算机后,他几天不眠不休地观察探究,并且改动了说明手册上的程序使之更加好用。

一年后,高德纳改入数学系,自此终生同计算机结缘。当时在学校篮球队兼职的他用 IBM650 写了一个球员评估程序,帮助球队教练挑选球员,使凯斯理工学院赢得了1960年的联赛冠军。

这个 “神奇的公式和程序” 引来了当地媒体乃至CBS电视台的大肆报道,高德纳所在球队和 IBM650 的合影被 IBM 印到了产品宣传册上。这段经历的重要性不言而明,以至高德纳在巨著《计算机程序设计的艺术》第一卷卷首写下 “献给曾经安装在凯斯理工学院的 650 型计算机,以纪念那些愉快的夜晚” 的题辞。

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

对美的追求是永恒的

quote-i-can-t-go-to-a-restaurant-and-order-food-because-i-keep-looking-at-the-fonts-on-the-menu-donald-knuth-244536

谁说程序员没有美感?高德纳以字体设计系统 METAFONT 、文学编程和 TEX 颠覆了当时的计算机排版软件,引领了数字出版的革新。

TEX 功能强大、几近无懈可击。TEX 的版本号码也十分有趣。从 TEX 第三版开始,之后的升级是在小数点后加入一个新数位,使之越来越接近圆周率 π 的值。

TEX 目前的版本是 3.1415926。这显示了 TEX 已经十分稳定,任何的升级都十分细微。高德纳曾表示 :

最后一次升级是(在我过世后)将版本数改为 π,那时任何余下的漏洞将被看作程序的功能。

最早的众包发起人

4

在 TAOCP 出版之后,高德纳号召读者挑错,奖金数额是 2.56 美元始,因为 “ 256 美分刚好是十六进制的一美元(256 pennies is one hexadecimal dollar)”。不过寥寥几位获奖者都将有他签名的支票当作文物珍藏,并未打算去银行兑现。

出于对 TEX 性能的自信,高德纳悬赏奖励任何能够在 TEX 中发现程序漏洞(bug)的人。谁找出 TEX 里的一个 bug,就付给其 2.56 美元,找出第二个 5.12 美元,第三个 10.24 美元……依此累加,直到目前的 327.68 美元封顶。

然而高德纳从未因此而损失大笔金钱,因为 TEX 中的漏洞极少,而真正发现漏洞的人在获得支票后往往不愿将其兑现。

特立独行的作家

 

用铅笔而非键盘写稿,这样的怪咖也只有高德纳。高德纳将原因归咎于打字速度远高于思考速度(每分钟 80 个单词以上),而这会导致思考出现太多停顿,用铅笔可以让思考与输入速度保持一致——“我打字的速度比我思考的速度更快,这样当我试图用键盘创作重要内容时,就会产生同步问题。速度通常不会是最重要的标准。科学一般都难以迅速解释或迅速领会……我通常的工作方式是用铅笔和纸先把所有东西都写下来,然后在旁边放一个大废纸篓。然后使用 Emacs 将所有文本键入到机器中……特定的 Emacs 快捷键使得写书的过程有点儿像演奏风琴……”

这里暴露了高德纳是 Emacs 粉的事实。高德纳是一名标准的黑客,他最喜欢的软件是 Emacs,并曾向其作者理查·史托曼提交修补补丁。

图灵奖,封神!

6

让高德纳走上神坛的是《计算机程序设计艺术》这套巨著的出版。

在加州理工毕业的前一年,著名的艾迪生·韦斯利出版社约初露头角的高德纳写一本编译器和程序设计方面的书,这件原本寻常的事最终成就了计算机科学史上的一个奇观。

出版社 1962 年约稿,可直到 1966 年还动静全无,编辑忍不住去电催促,说都过去 4 年了,书写到啥程度了啊?高德纳答:才 3000 来页。编辑惊呼那干嘛还不交稿?答曰还没进入正题呢。编辑崩溃地说,那只能出多卷本了……

《计算机程序设计艺术》第一卷于 1968 年推出,可真正能读完读懂的人为数并不多。天才如比尔•盖茨,也据说费时几个月才读完这一卷,最后感慨:“如果你想成为一个优秀的程序员,那就去读这个《基本算法》吧。”

高德纳对此解释道:“我知道我的书是不容易读,不过要知道的是,如果不是我精雕细琢地写的话,它们会比现在难读一百倍。”

1973 年,这部刚出到第三卷的书(计划写七卷)已被计算机界视为“神作”,最初几年就卖出 100 多万套;译为俄、日、西、葡、匈牙利、罗马尼亚等多种文字后,更创造了计算机类图书的销售纪录。美国计算机协会(ACM)于 1974 年将国际计算机界的至高荣誉 “图灵奖” 授予了他——此时的高德纳年方 36 岁,迄今还保持着最年轻图灵奖获得者的纪录。

1992 年,高德纳为潜心写作 TAOCP 从斯坦福提前退休,同时停用电子邮箱。2008 年,TAOCP 前三卷出版 30 年后,第四卷在粉丝的千呼万唤中终于面世,此际的高德纳已然是满头白发。对计算机科学的倾心热爱,使他为这部作品耗费了毕生心血,从及冠之年直至耄耋老人。

我尝试尽我所能的去熟悉电脑科学里的一些领域,然后把这些知识摘要成大家比较容易了解的方式,让没有那么多时间做这种学习的人也能够吸收它们。

——高德纳

唐纳德•尔文•克努特(Donald Ervin Knuth):中文名高德纳,1938 年生于美国威斯康辛州密歇根湖畔的密尔沃基,斯坦福大学计算机科学系荣誉退休教授,排版软件 TeX 和字型设计系统 Metafont 发明人,所著描述基本算法与数据结构的巨作《计算机程序设计的艺术》被《美国科学家》杂志列为 20 世纪最重要的 12 本物理科学类专著之一,与爱因斯坦的《相对论》、狄拉克的《量子力学》、理查•费曼的《量子电动力学》等经典比肩而立。1974年获图灵奖。

写在最后:

13.pic

2013 年,我有幸参观了位于加州山景城的计算机历史博物馆,在那里,有一堵属于高德纳的墙:

Computer programming is an art, because it applies accumulated knowledge to the world, because it requires skill and ingenuity, and especially because it produces objects of beauty.

计算机程序设计是一门艺术,因为它把累积的知识应用于世界,因为它要求技巧和智慧,特别还因为它产生美的目标。

这来自高德纳在 1974 年图灵奖颁奖典礼上 “作为一种艺术的计算机程序设计” (Computer Programming as an Art)” 的演说。

为什么要读 TAOCP,答案不现自明。


对于这本书,懂得她的人会觉得价值连城,像艺术品一般矗立在眼前。不懂她的人,只会觉得这是本笨重的家伙,立刻将其束之高阁。

prize-(02)

我们期待遇到懂她,珍惜她,能够真正用灵魂跟她交流的人,带走她。

这本在亚马逊上价值上千元的巨著,等待真正懂她的人将她领走。

只要您在本月邀请排行榜中位居前五位,即可获得由 DaoCloud 为您准备的惊喜大礼之一:《The Art of Computer Programming》。

她就在这里,等着你的到来。

快点击这里,领走他:https://www.daocloud.io/invite_friends

Leave a Reply

Your email address will not be published. Required fields are marked *