Monday, April 10, 2006

计算机科学八卦


今天八一把计算机的吧。
以前说过这个老头的事情,先重新八一把。这个人叫做Donald Knuth,他很喜欢中国文化,有一个中国名字叫高纳德,他找人做了一个中文的印章,放在自己的网站上。因为这个名字,在计算机科学这个领域的中国人喜欢叫他高老头。

高老头现在是斯坦福大学的退休教授,关于这一点后面还要接着八。他在斯坦福任教的时候,人不总是有三急么,斯坦福教室楼里的厕所,都是那种一个坑旁边有两卷卫生纸的(我在这里也经常见到)。老高去上厕所,一来二去也琢磨出来点道道。具体说,就是对于这种两卷卫生纸并排的情况,如何做调度的算法,算法的目的是计算两卷同时没纸的概率(估计老高是遇到过这种情况才会想到这个算法的)。就这样,他写了一篇论文,论文投到计算机方面最有名的一个杂志去,很快就收到了修改意见,杂志的编辑认为这篇论文的内容很不错,可是就是“厕所”用语实在太多,要求他必须删除所有的厕所用语。老高很不情愿的把文中的厕所用语都删除了,但是留下标题里的厕纸,死活也不愿意改。他想了一个主意,给编辑回信说,这个标题他不能改,因为相关题目他已经用来在很多地方做了报告,大家都知道了,再改掉反而会让人不知所云。于是这个杂志历史上出现了唯一一篇“论厕纸的使用”。

这是以前八卦过的,现在先说说高老头的生平。高老头在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。这个奖金现在翻到了一千多,不过已经很长时间没有人领了。
因为提前退休,他一共只带过二十多个博士生,不能不说是一种遗憾。不过他有一个约定,就是说他会在各种讲座和报告上不时提出一些难题,解决了这些难题的人,他会在他们的博士论文上签字(相当于名誉导师)。

0 Comments:

Post a Comment

<< Home