高德纳

来源:互联网 发布:angularjs实战 源码 编辑:程序博客网 时间:2024/06/05 03:27


(摄于2005年)

才发现刚刚过去的1月10日是图灵奖得主、我们这个世界最受尊重的程序员之一高德纳(Donald Knuth)的72岁生日。老高,生日快乐!

不知道高德纳?先看这里的介绍,然后面壁三天去吧。

喜庆日子,列举一些老人家的趣事:

1. 高德纳这个中文名是姚储枫所取,后者也是一位优秀的计算机科学家,是另一位图灵奖得主、现在清华的姚期智的夫人(据说姚先生转学计算机还是受了夫人的影响)。


2. 他的鸿篇巨制《计算机程序设计艺术》(简称TAOCP)与爱因斯坦的《相对论》、狄拉克的《量子力学》、理查费曼的《量子电动力学》、罗素和怀特海《数学原理》、冯诺依曼《博弈论》等书一起被《美国科学家》杂志誉为20世纪最重要的物质自然物理科学专著。而我习惯将之比作钱锺书的《管锥编》。

3. 这本书的写作始于1966年,计划写七五卷,目前已完成四卷(第四卷的精装本将在今年出版)。对了,如果你在他的书里发现错误,会得到他的支票,每个错误奖励2.56(16进制的1,即0x$1)美元。

4. 高德纳是一位音乐痴迷者(美国传统黑客的标志),高中时对数学不感兴趣,主要精力在作曲。会演奏管风琴、萨克斯和大号。当然,他也因此写过一篇论文,叫《歌曲的计算复杂度》。

5. 所开发的著名排版软件TeX版本号从3开始,改为Pi(3,3.1,3.14),另一个软件MetaFont版本号从2开始,改为欧拉常数e(2,2.7,2.71)。意思是已经非常稳定,无需再进行大的改版。事实上,他也为软件bug设立了奖项,但是付出极少。

6.《计算机程序设计艺术》第三卷里有一个索引项写着:版税,使用,XXX页,而这一页里只有一张管风琴的图,看来,这架琴是用书的版税买的。

7. 他的另一本名著《Concrete Mathematics》里记载了一件轶事:在斯坦福大学第一次上同名课程的时候,他解释了这个怪名字,自己的意图是要讲一些坚硬的而不是那种软软的数学,他不会讲什么聚集理论、斯通的嵌入定理,也不会讲斯通-切赫紧致化。话音刚落,几位土木系的学生默默地走出教室。原来他们以为这门课是混凝土数学(concrete的常见意思是土木系最习用术语:混凝土)。

8. 为了直观地说明循环定义,他在《计算机程序设计艺术》第一卷索引中故意让循环定义和定义,循环交叉引用。

9. 除计算机科学著作外,他还是虔诚的基督徒,写作了很多基督教信仰图书。

10. 在大学时,他曾经管理过一支篮球队,并设计了一个公式,计算每个队员的价值。此方法曾经被《新闻周刊》和美国CBS电视台报道。

11. 1990年1月1日,他向同事宣布,为了集中精力写作,停止使用电子邮件(而他从1975年就开始使用电子邮件了)。

12. 他之所以要开发TeX,是因为在写书过程中发现已有的排版软件都太烂,于是决定自己动手。原本他预计半年就可以完成,但最终花了超过十年。在开发这个软件过程中,他发明了literate programming,即文学编程,意思是像写文章那样写代码。通过强迫程序员明确描述程序背后的思路,让未经深思熟虑的设计决策无所遁形,从而提高代码质量。