近看图灵碗 (转贴)

ald 2010-03-09
能不能快点啊,要等死人了
mochow 2010-03-11
楼上着急什么?细水长流,细水长流。

近看图灵碗 (8. 我就是上帝) (下)


高德纳近照

上一篇我们讲到,高德纳计划要写一套七卷本的《计算机程序设计艺术》,没想到刚刚写完第三卷,就被ACM授予了图灵奖。这在图灵奖历史上是从没有过的事。我们还记得巴黎会议上的诺尔吧,他的图灵碗比他的获奖成果迟来了整整45年,他等这个碗时间,比高德纳获奖时的岁数还要长。但是,高德纳在获此殊荣之后,再一次令世界大跌眼镜:他宣布从此歇笔了,因为排版工具太差,破坏了这套书的美。

高德纳的这一动作让外界十分震惊,可以想见,他遭到了排山倒海的怀疑。有人说,高德纳肯定是江郎才尽,拿了图灵碗,见好就收;有人说,图灵奖对前三卷的评价过高了,高德纳无力面对这么大的压力,只好找个理由撤退;还有人说,获奖之后停止写作,充分体现了他写书的目的就是为了功利。他们纷纷质疑,这个图灵碗是彻底发错了人。

然而,如果我们真正翻开TAOCP读一读,就不难理解这是为什么。我觉得,对于算法的研究,可以分成三层境界。第一层是分析算法的复杂度,这是计算机专业的大学生普遍掌握的技能,达到这个境界,可以说是入了算法的门;第二层境界是改进算法的复杂度,在分析之后继续思考,想办法去降低它,这就可以算是懂算法了;第三层境界,就是寻找算法的最优复杂度,不但要改进它,而且要改到什么程度呢?就是要证明出来,我改完的算法就是最优的,你无论如何都不可能再改进了,再改进就违反宇宙规律。

高德纳,就是典型的第三种人。诸位不妨看看,TAOCP里面给出了多少最优算法,高德纳是铁了心,要当算法世界中的上帝。高德纳就是这么一个极致地追求极致的人,他强迫自己把每件事都做得不可逾越。那么他怎么能够容忍,这套被他视为毕生事业的书,被糟糕的排版技术束缚?于是,无论别人怎样质疑,他最终还是把写作晾到了一边,开始全力以赴地研究字体和排版。高德纳让我们领略了什么才是真正的个性,个性绝不是打18个耳洞,或在牛仔裤上抠 36个窟窿。个性,就是在所有岔路口都追随自己的心,让所有影响你追求梦想的障碍统统跪倒。

高德纳这一歇笔,就是十年。在这不务正业的十年当中,对极致的追求像只看不见的手,推动他创造了三个响亮的成果,其中影响最大的,就是排版系统TEX。如果大家用MS Office Word写过论文,就会体会到那份求死不得的心:不断地调整字号、行距、缩进、分栏,如果这还不算什么,你再写几个数学式子看看?但是在TEX中,这些麻烦几乎完全不存在,你唯一需要做的,就是把你想写的内容告诉它。如果说时间就是生命,那就可以认为,TEX每天都在拯求科学家们的生命,说它推动了科学的发展也不为过。TEX是一场出版界的革命,直到现在仍是全球学术排版的不二规范,它所排出的文字之美,特别是数学式子的美,让人们由衷感叹:啊,一毫米都不能再挪动了。

除了功能上的美之外,TEX作为一个软件产品,也令人叹为观止。它的版本号不是自然数列,也不是年份,而是从3开始,不断地逼近圆周率(3.14,3.141…目前最新版本是3.1415926)。高德纳再一次用行动宣告,我这个东西,不可能再有什么大的改进了,最多只能小修小补,使其趋近完美。他还专门设立了奖金:谁发现TEX的一个错误,就付他2.56美元,第二个错误5.12美元,第三个10.24美元…以此类推。我们都知道,传说某个国王就因为这种指数游戏失去了江山,高德纳作为算法大师,更清楚指数增长的可怕性。然而他却敢立此重赏,结果直到今天,他也没有为此付出多少钱,可见TEX经过了怎样的千锤百炼。这个耗费十年打造的玩具,让当初质疑图灵奖发错了的人们全部闭嘴了,他们甚至改口说:哦,为了这个TEX,不妨再给高德纳一个图灵碗吧。



第二个成果,就是METAFONT,这是一套用来设计字体的系统。对于它的价值,一句话就能概括:计算机界最懂字体的两个人,一个是苹果的乔布斯,另一个就是高德纳。

第三个成果,就是文学化编程(Literate Programming),它把程序设计的艺术性展示得淋漓尽致。高德纳说,一段好的程序,不仅仅是要清晰易读,而且要能够读出美感,读出意境。天呐,意境,一排一排的计算机代码,要像诗歌一样充满意境。高教授,你疯了?

高德纳说,你才疯了呢,看我给你们露一手。于是,他在C语言的基础上,开发了一套CWEB系统,除了用它写出了TEX程序之外,竟然还用它写了一本叫作《Stanford Graphbase》的书。高德纳微微一笑,我都能用编程语言写书,何况有意境的程序了,我的口号是:程序员也能得普利策奖(这是全球新闻写作领域的最高奖项)。

文学化编程还为高德纳报了一个小仇。我们第6章中讲过的迪科斯彻,当年提出了一个“结构化编程”,提倡不要在编程时使用 “goto”语句,高德纳偏要唱反调,结果被迪科斯彻称为“没结构”。这下可好,高德纳狡黠一笑,嘿嘿,如果你不跟我混,你就是“没文化”咯(literate也有“文化”之意)。

歇笔十年的高德纳,手捧这三项成果重出江湖,打消了一切质疑。这时他才对十年前的歇笔事件做了一个轻描淡写的解释:一个人要想把事情做得漂亮,就必须要跟上帝保持和谐,现在,上帝终于让我去写四卷了。

他的笔,又拿了起来。在写作第四卷的过程中,为了帮助读者打好数学基础,以便面对TAOCP中的数学高峰,他又专门撰写了一本《Concrete Mathematics》。这本书有中文版,翻译为《具体数学》,我一直觉得稍有不妥。Concrete到底是什么意思呢,高德纳说,意思就是我不教那些软绵绵的数学,我要教的是扔到地上能砸个响儿的数学。据说,他在课堂上说完这番话,有好几个同学扭头走出了教室──他们是土木工程系的学生,还以为高德纳是讲混凝土的呢(Concrete在土木领域意为“混凝土”)。说到高德纳的教学,还有个趣闻,他批改作业的时候只抽查第314页,就能判断出这份作业的质量。为此,我们这本书的第314页用来向高德纳致敬。

1992年,高德纳为了专心写作,宣布提前退休,并停用电子邮箱。高德纳一共带了28位博士生,他觉得28这个数字很好,于是便宣布不再收学生了。尽管如此,他仍然为想要师从于他的人们留下了一个盼头:他开了一门叫做Computer Musing的公开课,每次会提出一个问题,如果谁能快速解出来,高德纳就会为他的博士论文签名。不知道哪位后起之秀能够获得如此殊荣呢,我们拭目以待吧。

2008年,在TAOCP的前三卷面市30年之后,第四卷终于千呼万唤始出来,而高德纳,却已是白发苍苍的古稀老人了。一句话,一辈子,一生情,一杯酒,他对计算机科学的热爱,使他为这套丛书耗费了一生的心血。在这一章的最后,我想用一个词,来形容这位天才的计算机科学大师,但是思前想后,我只能想到唯一的一个词:God。

我想,尽管高德纳是一位虔诚的基督徒(他还专门写过关于圣经研究的书),但他一定会欣然接受这样的形容。正如当年Linux的作者Linus说:上帝在梦中告诉我,我做出了最优秀的操作系统。

高德纳回答说:我可没这么说过。

(\end{第八章})

过年期间插入了第八部分,后续文章顺序将恢复正常。

黑暗浪子 2010-03-11
估计也就这四部了。再有也是狗尾续貂
ald 2010-03-14
怎么不提第四卷的卷名
lix23 2010-03-23
下面呢?下面没有啦??
ald 2010-04-25
难道本贴已废?
mochow 2010-04-26
人家网站没贴了,我也造不出来啊。
fantasybei 2010-05-26
-__-!!!,养肥了再看
myloveiscomealone 2010-08-09
接着写啊.很精彩!
lix23 2010-08-10
才发现是国人原创的,还以为是翻译老外的书呢
Global site tag (gtag.js) - Google Analytics