Knuth有一篇论文发表在美国数学月刊上,论文的题目叫《厕纸问题》,论文的内容是关于厕所里卫生纸的使用,开始发过去的时候,编辑回信说学术论文里不能有太多的笑话,因为他每节的标题里包含了太多的“粪便学”词语。后来Knuth不得不修改了每节的标题,但是论文的题目他再也不肯改了,他回信骗编辑说,这个论文的内容他在很多学术会议上做过报告,所以改成别的题目别人会不太容易找到。 Knuth对中国人也很友好,其实有趣的是他的网页上有中国字,就是他的中国名字高德纳,德纳想必是从他的名字化来的(Donald),但是不知道他这个姓是怎么来的,中国的TeX fans和黑客喜欢叫他高老头。他的网页上对他的名字有个小注解,说很不幸他的网页上还需要用gif文件,也就是图形,来显示他的名字,以后都通用unicode(一种很大的字符编码体系,可以表示六万多个符号,也就可以表示我们几乎所有语言中的常用符号了,Win2K和WinXP通过内部使用这种编码,实现了国际化)了,就可以不用gif文件了。 高老头很喜欢他的中国名字,他还有篆刻的高纳德的私章,在网页上也可以看到。 高老头现在是斯坦福大学的退休教授,关于这一点后面还要接着八。他在斯坦福任教的时候,人不总是有三急么,斯坦福教室楼里的厕所,都是那种一个坑旁边有两卷卫生纸的(我在这里也经常见到)。老高去上厕所,一来二去也琢磨出来点道道。具体说,就是对于这种两卷卫生纸并排的情况,如何做调度的算法,算法的目的是计算两卷同时没纸的概率(估计老高是遇到过这种情况才会想到这个算法的)。就这样,他写了一篇论文,论文投到计算机方面最有名的一个杂志去,很快就收到了修改意见,杂志的编辑认为这篇论文的内容很不错,可是就是“厕所”用语实在太多,要求他必须删除所有的厕所用语。老高很不情愿的把文中的厕所用语都删除了,但是留下标题里的厕纸,死活也不愿意改。他想了一个主意,给编辑回信说,这个标题他不能改,因为相关题目他已经用来在很多地方做了报告,大家都知道了,再改掉反而会让人不知所云。于是这个杂志历史上出现了唯一一篇“论厕纸的使用”。 这是以前八卦过的,现在先说说高老头的生平。高老头在Case Institute of Techonology(不是加州理工California Institute of Techonology)本科毕业,不过这里说本科毕业不合适。实际上,老高在Case Institute of Techonology毕业的时候,因为成绩实在太好,学校决定打破常规,历史上唯一一次同时授予他本科和硕士的学位。之后他在加州理工数学系拿的博士学位,28岁进斯坦福当老师,30岁终身教授。 31岁的时候,他决定开始写一部关于算法的巨著。高纳德是个很有浪漫思想的人,他认为计算机科学是一种艺术,关于要写的这套书,他想得也很清楚,要象罗曼.罗兰写约翰.克利斯朵夫那样,把他写成一部巨著。计划是写七部,书的名子就叫做“计算机编程艺术” 《The Art of Computer Programming》。在计算机界,这本书一般简称为TAOCP,其中前三个字母正好凑成“道”(就是老子《道德经》里的道)的英文翻译,所以我总是情不自禁的把这套书称做编程之道。 TAOCP本来打算是出七卷,现在已经写完了三卷,但是老高才出了这三卷就已经轰动世界,书里提供了太多令人拍案惊奇的算法。因为这三卷书的出版,老高获得了计算机科学领域的最高奖图灵奖。 老高还有一个著名的贡献,说起来有趣,是为了写这套书而得到的副产品。他发现地球上居然没有一个好用称手的排版软件,就自己动手写了一个,软件他起名叫TeX。TeX是目前世界上专业文献排版领域应用最广泛的软件,后来有人为TeX写了各种宏包。在科学领域最有名的就是LaTeX。TeX/LaTeX在公式处理方面的专业与高效是Word不可比拟的。现在基于TeX的各种宏包可以很专业的显示各种数学公式,费曼图,化学式,图表,棋谱。比如在LaTeX 中,可以处理中国象棋,国际象棋,围棋,五线谱。其实实话说,我在听说TAOCP之前,还以为老高是因为TeX得的图灵奖。为了写这个TeX软件,老高发明了一种字体描述语言MetaFont,这成了排版行业的事实标准。 在TAOCP里,老高不知道是出于什么心态,所有的程序和算法,既不是用C/C++,也不是用Pascal之类。为了描述他的算法,他用的是“汇编”!!而且这里用的汇编,既不是pc的汇编,也不是用的苹果的汇编,而是他根据十几种体系结构,自己创立的一种虚拟汇编语言。 斯坦福大学给老高的教授加了好几个头衔,不过他最喜欢的头衔是Professor of Art of Computer Science,他虽然享尽了计算机科学界几乎一切荣誉,但是却很早就退休了。原因是他想专心写好后面几卷的TAOCP。 忘了提了,Knuth得图灵奖的时候36岁,是迄今为止最年轻的图灵奖得主,而且很可能以后这个纪录也没人打破。 高老头的一些有趣约定: 发现TeX软件第一个bug(就是程序中出现的错误),他就给一美元,发现第二个bug,他给两美元,第三个给四美元,依次翻番。实际上后来几乎很难有人再找到bug,他把属于排版方面的专业规范问题也算bug。这个奖金现在翻到了一千多,不过已经很长时间没有人领了。 因为提前退休,他一共只带过二十多个博士生,不能不说是一种遗憾。不过他有一个约定,就是说他会在各种讲座和报告上不时提出一些难题,解决了这些难题的人,他会在他们的博士论文上签字(相当于名誉导师)。 knuth 选自:网络(地址找不到了)