首页 >> 计算机科学 >> 文章

过年了,苏椰特意叮嘱编辑们先把这个系列的第八章发出来,理由之一是大过年呢,8是个喜庆的数字。真没想到最年轻的松鼠还会从这个角度为读者细心考虑,那就成全他8,让我们在这部专辑里暂时做一次穿越,先看看第九只图灵碗背后有怎样的故事。

密尔沃基市,是美国威斯康辛州最大的城市。1938年1月10日,圣诞刚过不久,密尔沃基市民像往常一样平静地生活着。咖啡店里,有人在议论着罗斯 福总统的救市新政策,有人在议论着到底该不该限制公民持枪。而更多的人呢,则一边品尝着密尔沃基闻名全国的啤酒,一边听着广播里面的实时战况:侵华日军登 陆青岛了。谁也没有想到,这个平静的日子将载入这座城市的史册。这天,密尔沃基路德教会高中的一名印刷管理员,高兴地迎来了一个健康的儿子。他为儿子取了 一个响亮的名字,这个名字在不久的将来,成为了计算机编程艺术的旗帜:Donald Ervin Knuth。

为了方便讲述,请各位读者允许我先剧透一件39年后的事儿。在1977年Knuth造访中国前夕,姚期智的夫人为他取了一个中文名字:高德纳。在下面的故事里,我们就使用这个名字来称呼他。

高德纳天资聪颖,他的超凡智力在8岁时就显示出来了。当时,一家糖果商在孩子们当中举办了一项有趣的比赛,要求用“Ziegler’s Giant Bar”里面的字母,写出尽可能多的单词。裁判事先准备了一份2500个单词的列表,可他却远远低估了小选手的能力,高德纳令人惊讶写出了4500多个单 词,毫无疑问地获得了冠军。他为学校赢得了一台电视机,还为每个同学赢得了一只棒棒糖,他的赛后感言是,我还能写出更多。

高德纳的高中就读于他父亲所在的路德教会高中,在这期间,他发表了此生第一篇学术文章。尽管如此,但这个充满了才华和个性的年轻小伙,并没有把心思 放在科学上,他的主业是音乐和作曲。他的老师,甚至包括他自己,十分怀疑他将来进入大学后,是否能够顺利学习数学。这种想法给高德纳造成了不小的自卑,尽 管他的平均分是学校历史上最高的。不过有句话说,真正的天才是1%的灵感加上99%的汗水,这话用在高德纳身上毫不夸张,18岁的他,在进入大学之后,丝 毫没有向数学屈服,而是花费无数的课余时间,大量练习数学难题,这种努力的劲头再加上他的天份,使他很快就在数学方面超过了其他同学。其实我们与其关注一 些科学家们不可模仿的机会和天赋,莫不如更关注他们如何面对困难和挫折。高德纳告诉我们,没有什么过不去的坎儿,方法就是抓紧时间干活。

高德纳就读的大学是凯斯理工学院,在这里他接触了IBM650计算机,这导致高德纳的音乐家梦想一去不复返,科学天赋终于重新占领了他的心扉。 1956年,在他第一次使用IBM650之后,他就躇踌满志地相信,说明书上介绍的程序,一定比不上他自己编写的。于是高德纳开始学习编程,他的第一个程 序是因数分解,不久之后,高德纳就对编程有了许多体会。当时高德纳还兼职管理学校的篮球队,于是他编写了一个程序,能够自动评估每名球员的价值,令球队的 教练非常欣赏。这件事还吸引了CBS电视台的报道,后来高德纳、球队教练和IBM650的一张合影,还被印到了IBM650的宣传册上。1960年,高德 纳以公认出色的成就,打破了学校的惯例,同时获得了学士和硕士两个学位,大家来做个减法吧,算算高德纳此时年岁几何。

随后,高德纳从五大湖区,来到了美国西南岸,进入伯克利攻读数学博士学位。在此期间,他的编程生涯也正式开始了,他对外提供软件服务,为各种不同机 器设计各种稀奇古怪的编译器,曾经一个程序卖到5000美元。最值得一提的,就是他对ALGOL60编译器提出的测试方法。不知道大家是否还记得 ALGOL,这盏批量生产图灵奖的阿拉丁神灯。当时我们介绍过,ALGOL60的设计目标要求支持递归,而在设计编译器时,对递归的处理是很复杂的,所以 经常会因为编译器不成熟而出故障。高德纳编写了一段非常简单的测试程序,江湖人称“Man or boy test”,俗名“是男人就得-67”。高德纳说,只要用ALGOL60编译器来编译我的这段程序,如果运行结果等于-67,就说明这个编译器是纯爷们 儿,否则就只能算小男孩。

1963年,25岁的高德纳顺利拿到了博士学位,并留在伯克利任教。在毕业前一年,虽然还是研究生,但高德纳已经因为设计编译器而响誉计算机行业。 于是著名的Addison-Wesley出版社与他约稿,请他写一本关于编译器和程序设计方面的书。这本来是很平常的一件事,但您看看高德纳是何许人也, 不久之后,他简直把这件事做成了一件计算机科学史上的奇观。1962年约的稿,高德纳一直写到1966年还没交,在此期间他又是毕业,又是教书,终于人家 出版社急了。编辑找到高德纳,说这都四年了你写了多少啊,高德纳说,才写3000页手稿。编辑大囧,忙问都3000页了你怎么还不交,高德纳答曰,急啥, 我还没写到正题呢。编辑彻底雷住了,说那你出个多卷本吧……

《计算机程序设计艺术》,就这么诞生了。

把一件平常的事做到人间极致,这就是高德纳。他不是故弄玄虚,他的心里攒着一股劲儿,要写出一部与牛顿的《自然哲学的数学原理》相媲美的传世巨著。 他一开始计划了六卷,后来觉得这个数字不怎么好,又改成了七卷。1968年,《计算机程序设计艺术》(The Art Of Computer Programming,江湖人称TAOCP)的第一卷正式出版了。这一卷的标题叫《基本算法》,但难度却并不低。比尔盖茨曾经花了几个月的时间读完这一 卷,并且做了大量的练习,然后他说,如果你想成为一个优秀的程序员,那就去读这个《基本算法》吧,确保自己能够解决里面的每一个问题。然而,高德纳本人的 说法却比盖茨犀利多了:要是看不懂,就别当程序员。

就在这同一年,高德纳跳槽到斯坦福大学,并当上了教授,一边带博士,一边继续写书。一年后,TAOCP第二卷《半数值算法》正式出版,又过了三年, 也就是1973年,第三卷《排序与查找》也相继付梓。这三卷书立即被计算机界惊为神作,在那几年之内就卖出去了100多万套,至今仍然是编程书籍中的最高 经典。有一些对我们来说巧妙得不能再巧妙的算法,在这三卷书中顺手掂来,比比皆是,这个我们等会再说,现在有件要紧的事儿。按照高德纳的计划,这套书一共 是七卷,但是现在刚刚写完三卷,就已是震古烁今。震到什么程度呢,连图灵奖颁奖委员都坐不住了,他们做了一件前所未有的事。按照惯例,图灵奖的获奖者都是 成就等身,要经过时代的检验,然而高德纳却是例外,在他的七卷本刚刚写完三卷时,ACM便决定立即为其颁发图灵奖:

授予高德纳图灵奖,以表彰其在算法分析、程序设计语言的设计和程序设计领域的杰出贡献,特别是其著名的《The Art of Computer Programming》系列丛书。

这是1974年的ACM图灵奖颁奖词,高德纳捧走了历史上第9个图灵碗。这对高德纳来说,无疑是个殊荣,因为这一年他只有36岁,直到现在,他仍然保持着获奖年龄最小的纪录。

我们故事才讲到一半,可天才的高德纳却已经得到了图灵奖。各位读者可能要问,那下面还讲啥,他无非就是接着写书,接着带博士,就别废话啦。您要是这 么想,那就大错特错了,他要是那么做,他就不是高德纳。提前剧透一下,这个看上去顺理成章的计划,很快就被打破了,计划中的七卷本,直到今天都没有完成。 欲知发生了什么,且听下回分解。

0
为您推荐

46 Responses to “近看图灵碗 (8. 我就是上帝) (上)”

  1. comac说道:

    我很奇怪为何西方总是能产生这样的天纵之才,中国人也许头脑不错,可是大环境造成了不适合大师成长的土壤。

    • 小bug说道:

      膜拜高德纳大神!我就纳闷什么力量可以让这系列的数字直接跳到8...

  2. Mike说道:

    什么时候跳到8的。。。

  3. Mike说道:

    照最后那暗示难道天妒英才了??还是改行学音乐了??

  4. lpiszdf说道:

    恩,看起来下一集要讲到TeX了?

  5. Ent说道:

    我来膜拜Knuth大神……可能是我知道的唯一一位计算大师……

  6. Mine说道:

    进来膜拜一下《The Art of Computer Programming》这套书,看过一点,内力太深了,没看完。。。

  7. iceblast说道:

    跳到8,吓一跳。
    btw,微软研究院几个兄弟写的那个编程之美的名字是不是和高德纳学的?有点对不起这个名字。

  8. c2blog说道:

    这篇可读性很强。

  9. 伯爵说道:

    我靠,不是说下文分解吗?您老人家的下文捏?

  10. unigloria说道:

    看同志们的发言,似乎行内人都知道作者卖的关子是啥。可是俺一介行外人,彻底被气死了。。。。要带着无比的好奇过年了~

    PS.俺就是不要自己去google搜,看书要保持专一~

  11. Adon说道:

    膜拜一下,家里面那三册让我放弃了做一个优秀的程序员的梦想
    并且把那三本书当作经书一样供在我的书橱里面

  12. 说道:

    怒!!!!只有一半!!!!那岂不是过年才能看到下一篇!!!!

  13. xczs说道:

    曾经试图看第一卷,结果里面的算法都是用一种类汇编语言写的,遂放弃

  14. 光哥说道:

    请速度写【下】,这是正事。

  15. 光哥说道:

    如果再搞这种先出一半以挑战读者忍耐力的事,下次我直接找别的地方看了!哼哼

  16. gototry说道:

    猜一下,接下来嫌当时的排版软件差,结果自己开始写 Tex,影响了整个排版出版界???

  17. KOMA说道:

    太缺这类书了,很多时候就想去看计算机领域的整个发展史,以及在发展过程中很多举足轻重的人物。很感谢作者能给我这样的机会去享受。希望作者能尽可能的多写。谢谢 ^_^

  18. p0mz666说道:

    好吧文章是好文章,力挺

    不是说最年轻的松鼠是REDQUEEN咩(原话是貌似是说90后松鼠只有红色皇后一个)

  19. perry说道:

    软件工作的圣经。

  20. lpiszdf说道:

    话说等图灵奖写得差不多了后,要不要写点别的奖啊?
    香农奖菲尔兹奖啥的都行啊。
    我想很多人应该还是蛮喜欢看这种科学牛人的传记的,只要写得文采够好。比如木遥写陶哲轩的那篇,还有这篇:)
    不知道这篇是谁写的,看起来很不错。
    说起来还真有不少普通人不怎么了解的牛人啊,特斯拉、香农之类的。记得以前在水木上看到过写和爱因斯坦同时代却不那么出名的物理牛人八卦的,非常赞,可惜忘记链接了,而且好像也没写完就太监了……
    偷偷地说,其实我也想过写写,不过发现这不是我能完成的任务——我还是干我的老本行写写情书骗骗小姑娘吧-.-

  21. subey说道:

    呵呵,苏椰有说评书的天赋,看的人心情膨胀~虽然知道后文,但依然忍受这种吊胃口~

  22. TonyShaw说道:

    Orz

  23. 苏椰说道:

    那个…我回家过年了…稍后,稍后…

  24. beckjidong说道:

    作者很强大,居然能把编程发展史挖坑成历史悬疑小说。。。快写快发。。。不知你这文章能催发多少英雄豪杰的兴趣爱好呢。。。。

  25. MarsV说道:

    TeX~

    正纠结于我的毕业论文的人飘过……

  26. wecing说道:

    膜拜Kunth大神。

  27. zzz说道:

    2~7哪里去了,怎么一下子从1跳到了8

  28. chukren说道:

    勘误: 根据 Prof. Knuth本人的cv,他应该是60-63年在加州理工学院念完博士学位并留校任教的,而不是加州大学伯克利分校。参见Knuth主页 http://www-cs-faculty.stanford.edu/~uno/vita.html

  29. less说道:

    等啊等啊等下一篇。。。

  30. rwzx说道:

    提个意见:“为了方便讲述,请各位读者允许我先剧透一件39年后的事儿。在1977年Knuth造访中国前夕,姚期智的夫人为他取了一个中文名字:高德纳。在下面的故事里,我们就使用这个名字来称呼他。”
    为了搞清楚姚期智是何许人,还特地百度了一下。虽然结果显示此人大牛,但是对于外行我还是孤陋寡闻了些,是否能加个注解或简单介绍呢?

  31. L.YK说道:

    文章里名字错了

    高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德高纳德

  32. Eddy说道:

    苏娜写的很不错,介绍的蛮清晰,鼓励一下!

  33. SN1978AAT说道:

    我不配叫做程序员,以后主页上的介绍要改了...

  34. 9800817说道:

    既然是书,哪里可买?

  35. G说道:

    苏椰同学找个时间勘误一下呗

    最明显的错误是K爷爷是在大名鼎鼎的加州理工读书并且一开始在这里任教的。

  36. Index说道:

    哪4500个单词?

  37. 周靖凯说道:

    这是Knuth的主页

Leave a Reply for rwzx