唐纳德·克努特(Donald Ervin Knuth)——经典巨著《计算机程序设计的艺术》的年轻作者。 洋洋数百万言的多卷本《计算机程序设计的艺术》(The Art of ComputerProgramming)堪称计算机科学理论与技术的经典巨著,有评论认为其作用与地位可与数学史上欧几里得的《几何学原理》相比。本书作者唐纳德·克努特(Donald Ervin Knuth)因而荣获1974年度的图灵奖。
此外,克努特还有许多“小创造”。计算机科学技术中两个最基本的概念:“算法”(Algorithm)和“数据结构”(DataStructure)就是克努特于29岁时提出来的。1973年他首创双向链表。在编译器设计方面,著名的LR(k)文法也是克努特在对自左至右、自底向上的移进一归约分析进行了深刻剖析的基础上,经过高度概括和集中以后发明的,它表示具有从左(L)到右(R)的分析而向前看k个符号,以确定所要进行的归约和应用何种语法解释。LR(k)文法的识别效率高,在从左至右扫描输入串时,就能发现其中的语法错误,并能准确地指出出错位置,因此被广泛应用。此外,利用LR(众)文法还能正确区分像Flying planes is fun和Flying planes cancrash这类句子(前一个句子“开飞机很有趣”中flying是动名词,而后一个句子“飞行中的飞机可能出事”中Flying是现在分词当形容词)。以著名的巴克斯—诺尔范式为基础的“属性文法”(attributegrammar)也是克努特首先提出来的。属性文法在普通的上下文无关文法(context-freegrammar)的基础上,对每一个终结点或非终结点加上一些属性,和对这些属性进行估值的语义规则集,从而形成一种新的、有更强表达与描述能力的文法。其中属性是由的有序偶对组成的。属性的内容则可包括模式标识符表等。 在算法方面,有他和他的学生共同设计的诸如Knuth-Bendix算法和Knuth-Morris-Pratt算法,前者是为了考察数学公理及其推论是否“完全”而构造标准重写规则集(rewriting ruleset)的算法,曾成功地用它解决了群论中的等式的证明问题,是定理机器证明的一个范例。后者是在文本中查找字符串的简单而高效的算法。此外,克努特还设计与实现过最早的随机数发生器(random number generator)。
主要著作
克努特的著作很多,除了已由Addison-Wesley出版社出版的三卷The Art of ComputerProgramming(由管纪文、苏运霖等译成中文,国防工业出版社出版,介绍TEX和METAFONT的五卷《计算机与排版》(Computersand 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) 其中,《超现实数》一书介绍了剑桥大学的康韦(J.H.Conway)所发明的一种新的数制,是克努特听了康韦向他作的介绍后,用了一周时间写成的小说体裁的作品。有评论家指出,这是历史上第一次一个重大的数学发现以小说的形式向公众进行介绍。由此可见,克努特的艺术才华同样是非凡的,要不是计算机深深吸引了他,克努特很可能会成为出色的小说家或音乐家(前面说过他喜欢音乐,会自己制作管风琴,会创作不错的乐曲呢)。
所获荣誉
克努特获得的荣誉与奖励极多。ACM除了授予他图灵奖和软件系统奖外,还在1971年授予过他以COBOL的发明人、女计算机科学家霍泼(GraceMurrayHopper)命名的奖项,这个奖项是专门奖励30岁以下的优秀青年计算机科学家的。这样,克努特一人就先后获得ACM的三个奖项,在1999年以前,这是计算机科学家中仅有的一位(1999年,布鲁克斯获得图灵奖,从而也拥有ACM三个奖项,平了克努特的记录)。无独有偶,美国数学会也先后授予克努特三个奖项,即LesterR.Ford奖(1975)、J.B.Priestley奖(1981)和Steele奖(1986)。1979年,当时的美国总统卡特向他颁发了全国科学奖章。IEEE授过他两个奖:McDowell奖(1980)和计算机先驱奖(1982)。1994年,瑞典科学院授予克努特Adelskold奖。1995年他获得冯·诺伊曼奖和Harvey奖。1996年他获得日本INAMORI基金会设立的KYOTO奖,这个奖是专门奖励在高科技领域作出贡献的科学家的。面对这么多荣誉,克努特都以平常心对待,据说,纪念他获得图灵奖的碗现在只是被他用来盛放水果。 ACM于1974年11月11日在南加利福尼亚濒临太平洋的海港城市圣迭戈举行的年会上向克努特颁发图灵奖。克努特发表了题为“作为一种艺术的计算机程序设计”(Computer Programming as anArt)的演说。在演说中,一如我们在阅读他的著作时所感受的那样,克努特旁征博引,有根有据,人情人理,娓娓道来,把“科学”与“艺术”的不可分割的关系说得清清楚楚,令人心服口服。演说刊于Communications ofACM,1975年12月,667—673页,或见《前20年的ACM图灵奖演说集》(ACM Turing Award Lectures——TheFirst 20Years:1966--1985,ACM h.),33—46页。
唐纳德·克努特(Donald Ervin Knuth)——经典巨著《计算机程序设计的艺术》的年轻作者。 洋洋数百万言的多卷本《计算机程序设计的艺术》(The Art of ComputerProgramming)堪称计算机科学理论与技术的经典巨著,有评论认为其作用与地位可与数学史上欧几里得的《几何学原理》相比。本书作者唐纳德·克努特(Donald Ervin Knuth)因而荣获1974年度的...