唐纳德·克努特,29岁提出算法与数据结构概念,36岁成为历史上最年轻的图灵奖获得者,20世纪最重要的12本物理科学类专著之一,经典巨著《计算机程序设计的艺术》的作者,写作排版神器TEX软件的创造者。

现代计算机科学的鼻祖

编程是一门艺术而不是一门科学-少儿编程网

八岁时的唐纳德即显出超凡智力:当时某糖果商以小学生为参与对象举办了一项益智趣味比赛,要求用“Ziegler’s Giant Bar”里的字母写出尽可能多的单词。高假装胃疼宅家两周,依靠一部大字典列出了4500个单词,使所在班级夺冠,本人也赢得一付雪撬。

在数学上,唐纳德也很早就表现出天才。高中一年级时,他发明了一种方法,利用这种方法,对任意画出的2条相交直线,他能立即给出相应的方程。

唐纳德中学时创作的科幻小说《普茨比度量衡体系》发表于著名的《疯狂》(Mad)杂志,挣得平生第一笔稿费25美元及西屋“科学天才”提名奖。

编程是一门艺术而不是一门科学-少儿编程网

大学一年级留校打工,毗邻的计算机房新到了一台IBM650——这让唐纳德生出莫大兴趣。当获准在晚上操作那台计算机后,他几天不眠不休地观察探究,并且改动了说明手册上的程序使之更加好用。一年后,高改入数学系,自此终生同计算机结缘。

编程是一门艺术而不是一门科学-少儿编程网

当时兼职学校篮球队的他用IBM650写了一个程序,用于对球员在每场比赛中得分、助攻、抢断、篮板球、盖帽等一揽子数据的分析评估,球队教练据此挑选球员,使凯斯理工学院赢得了1960年的联赛冠军。

唐纳德1960年毕业于凯斯理工学院,因学业特别出色,被破例同时授予学士和硕士学位。之后他进入加州理工学院研究生院,1963年获得博士学位,留校工作至1968年,然后转入斯坦福大学任教。

编程是一门艺术而不是一门科学-少儿编程网

唐纳德习惯用铅笔而非键盘写初稿,高将原因归咎于打字速度远高于思考速度(每分钟 80 个单词以上),而这会导致思考出现太多停顿,用铅笔可以让思考与输入速度保持一致。

斯坦福大学曾让唐纳德为自己选择一个头衔,他确定的是“计算机程序设计艺术名誉教授”。高认为“计算机科学”不是科学,而是一门艺术。它们的区别在于:艺术是人创造的,而科学不是;艺术是可以无止境提高的,而科学不能;艺术创造需要天赋,而科学不需要。

编程是一门艺术而不是一门科学-少儿编程网

唐纳德改作业通常是随机翻到一页认真批阅,有了一个初步印象后,对剩下的内容就只大概看看了。阅读大致也照此办理:遇上大部头先读第316页,如果书比较薄就看第100页;随后就可以作出判断了,据说准确率还八九不离十。

唐纳德有一篇名为“卫生纸问题” 的论文,研究如何合理使用厕纸的算法,小节标题中使用了大量的“粪便学”词汇。编辑警告他,过度调侃的文风在我们这里是危险的,请三思!高替换了小标题里的某些词,但不想动文章标题,遂在给编辑的回信里写道:我用这个题目做过两次演讲,主题早已被广泛采用和讨论……云云。编辑无奈之下只好表示:“你的厕纸被接受了!”

在伯克利毕业的前一年,著名的艾迪生-韦斯利出版社约唐纳德写一本编译器和程序设计方面的书,出版社1962年约稿,可直到1966年还动静全无,编辑忍不住去电催促,说都过去4年了,书写到啥程度了啊?高答才3000来页,还没进入正题呢。编辑崩溃地说,那只能出多卷本了……

《计算机程序设计艺术》第一卷1968年推出,可真正能读完读懂的人为数并不多。1973年,这部刚出到第三卷的书(计划写七卷)已被计算机界视为“神作”,最初几年就卖出100多万套。

编程是一门艺术而不是一门科学-少儿编程网

我尝试尽我所能的去熟悉电脑科学里的一些领域,然后把这些知识摘要成大家比较容易了解的方式,让没有那么多时间做这种学习的人也能够吸收它们。

《计算机程序设计的艺术》(The Art of ComputerProgramming,1968年……)

《计算机与排版》(Computers and Typesetting)

《研究之美》(Surreal Numbers,Addison-Wesley,1974)

《具体数学》(Concrete Mathematics,Addison-Wesley,1989)

《数学论著集》(Mathematical Writings,MAA,1989)

《用于算法分析的数学》(Mathematics for the Analysis of Algorithms,Birkhauser,1990,第三版)

《作文式程序设计》(Literate Programming,CSLI,1992)

《公理与外壳》(Axioms and Hulls,Springer,1992)

《斯坦福的GraphBase:组合计算用的平台》(The Stanford Graph Base:a Platform for Combinatorial Computing,ACMh·,1993)