分享

计算机鼻祖-Donald Knuth(高纳德)的传奇

 taotao_2016 2019-08-26

概述

李开复曾说,练内功,不要仅仅花功夫学习各种流行的编程语言和工具,以及一些公司招聘广告上要求的科目。要把数据结构、算法、数据库、操作系统原理、计算机体系结构、计算机网络,离散数学等基础课程学好。最好还是试试Donald Knuth的Art of Computer Programming里的题目,假设你可以解决当中的大部分题目,就说明你在算法方面的功力不错了。


Donald Knuth

计算机鼻祖-Donald Knuth(高纳德)的传奇

Donald Knuth自传的开头这样写道:“Donald Knuth真的仅仅是一个人么?”作为世界顶级计算机科学家之中的一个。Knuth教授已经完毕了编译程序、属性文法和运算法则的前沿研究。并编著完毕了已在程序设计领域中具有权威标准和參考价值的书目的前三卷。在完毕该项工作之余。Knuth还用了十年时间发明了两个数字排版系统。并编写了六本著作对其做了详尽的解释说明。如今,这两个系统已经被广泛地运用于全世界的数学刊物的排版中。随后。Knuth又发明了文件程序设计的两种语言,以及“文章性程式语言”相关的方法论。

到眼下为止,Knuth已经出版发行了17部书籍,一百五十余篇论文,包含了巴比伦算法、圣经、字母“s”的历史等多方面的内容。作为一名数学家。Knuth曾开创了几门新的课程,为纯计算数学做出了非常大贡献。他所获得的奖项和荣誉数不胜数,当中最值得注目的有1974年美国计算机协会图灵奖(ACM Turing Award)。1979年美国前总统卡特授予的科学金奖(Medal of Science)以及1996年11月因为发明先进技术荣获的极受尊重的京都奖(Kyoto Prize)。在不多的业余时间里。Knuth不仅写小说,还是一个音乐家、作曲家、管风琴设计师。


早期经历

计算机鼻祖-Donald Knuth(高纳德)的传奇

Knuth,1938年1月10日生于美国威斯康星州密尔沃基市。他在模式方面辨别和熟练操作的能力在八年级的时候開始显现出来。当时。当地的一家糖果制造商举办了一项比赛。比赛要求选手用其品牌“Ziegler's Giant Bar”中的字母组成新的单词,规定时间内组成单词数量最多者获胜。Knuth參加了比赛,并以单词总数4500余个远远超过了裁判的2500个的标准。轻松赢得头奖。赛后,Knuth说道,假设自己当初想到回答时用些省略符号的话。还能写出很多其它。

Knuth多产的出版事业開始于他的高中时代,当时他的科技设计被Westinghouse Science Talent Search 光荣提及。他的“Potzebie System of Weights and Measures ”的基础章节被登在“Mad”杂志第26号。“Mad”的编辑认识到了年轻的Donald著作的重要性,以25美元买下了他的文章,并刊登在了其1957年6月的期刊上。

高中的时候,Knuth对数学并没多大兴趣,而是把主要精力放在主修的课程:听音乐和作曲上。他在高中的乐队里吹萨克斯、大号时,曾把Dragnet、 Howdy Doody Time 和 Brylcream的主题曲联成一段新的音乐。

1956年。克努特以各科平均97.5的创记录的高分从密尔沃基路德兰高级中学毕业。进入俄亥俄州克利夫兰的开思理工学院(Case Institute of Technology)攻读物理。这一年,他在中学时就创作的一篇出色的科学幻想小说“普茨比度量衡体系”(The Potrzebie System of Weights and Measures)在美国著名的《疯狂》(Mad)杂志上发表,克努特获得了他的第一笔稿费25美元,并因而获得西屋科学天才的提名奖。

在这篇小说中,克努特风趣而富于幻想地提出了替代公制的一种新的计量制度,比方以一本流行杂志的厚度为长度单位。尽管滑稽可笑,却设计得严密周到。天衣无缝。当中甚至还包含一种新的历法。文章刊出后大受欢迎,多次重印,1991年还重印过一次,其时作者克努特即将退休。

尽管 Knuth的等级平均分是学校历史上最高的,可是他和他的指导老师还是对他是否能成功学习大学数学持怀疑态度。

Knuth说在他高中阶段和大学早期一直有一种自卑感,这个问题一度是他的一个障碍。作为一个大学新生,Knuth没有对于失败的恐惧。他花了很多时间攻克额外的数学难题。几个月后。他在这方面的能力已经远远超过了其它同学。


高等教育和早期的计算机工作

当Knuth在Case科学院获得物理奖学金时,梦想成为一个音乐家的计划改变了。Knuth回去继续研究数学是在大二,当时一个爱出难题的教授提出了一个特殊的问题,并说哪个学生能解决问题就立马记成绩“A”。Knuth跟大多数同学一样,也觉得那是道解不出来的题目。直到有一天。他错过了公共汽车,仅仅能步行去看一个演出,Knuth利用路上这点空暇时间决定尝试一下。那阵子他运气真的是非常好,不仅问题非常快就解开了。得到了“A”。还成功地常常逃课。尽管 Knuth也承认,逃课让他有负罪感,可是非常明显,他全然有能力补上落下的功课,接下来的一学年,他的离散数学就又得了个“A”,并且还获得了给自己不能參加的课程评定论文等级的工作机会。

1956年,作为Case的新生,一年级结束以后的暑假,克努特在学校打工,负责把统计数字画成图表。碰巧他工作室的隔壁就是计算机房,新到了一台IBM650。

当时的计算机体积都非常庞大,有供输入和调试的控制台,上面排列着一排排的开关和指示灯,计算机工作时指示灯高速闪烁变化出不同的图案,这引起克努特极大的好奇与兴趣,他接连好几天彻夜不眠地呆在机房,观察它的工作。钻研使用手冊,探究计算机的奥秘。一年以后,他最终改学数学,与计算机结缘。这段经历对于克努特是如此重要和关键,以致他在《计算机程序设计的艺术》第一卷的卷首,不像别的作者那样一般写上“献给自己的父母”或“献给自己的妻子”。而是写着“献给以前安装在开思理工学院的650型计算机,以纪念那些愉快的夜晚”。

天天与计算机为伍,Knuth说直到一年后,女孩才进入了他的生活。这又是计算机科学界一直以来亏欠科学家们的一个事例之中的一个。

Knuth 熬夜读IBM 650的说明手冊,自学主要的程序设计。那时,在高等计算机语言发明之前。程序编写仅仅能用第二代或是汇编语言。

这个工作既耗时又困难。由于指令必须依据每台机器特定的构造编写,而实际上指令仅仅须一步就可从二进制0、1系列转存到计算机硬盘上。Knuth说,有了第一次使用650的经历,他便肯定自己能编写出比说明手冊上介绍的更好的程序。

Knuth非常快便開始“闲逛”,编写能够运行数学函数的程序。

他的第一个程序是把数字转化为素数。第三个是做井字游戏(或者说是让计算机在改正每次输的错误的过程来学会玩井字游戏)。

他的第一个计算机应用程序也是在650计算机上实现的:他为他所在的校篮球队(克努特人高马大,也喜爱运动,娱乐)设计了一个复杂的公式,依据球员在每场比赛中的得分、助攻、抢断、篮板球、盖帽等多项统计数字对球员进行综合评估。球队教练依据克努特的程序挑选和使用球员,使开思理工学院在1960年赢得了联赛冠军,克努特的“奇妙的公式和程序”也被当地报纸和广播传为美谈。

作为学校篮球队的经理,Knuth编写了一个依据不同成绩标准评定每个运动员对球队贡献等级的程序。他的努力赢来了那些觉得这样做有助于球队赢得同盟冠军的教练的好评(尽管,无庸质疑,不是每个运动员都这样觉得)。

Knuth的成就成了新闻周刊的标志,他和教练、计算机的照片也被刊登在IBM650后来的说明手冊上,当然这也是Knuth的第一个计算机应用程序。

1960年,Knuth从 Case毕业时享有着最高荣誉。在由全体教员參加的选举上,他因其公认的出众成就不但被授予学士学位,还被破例同一时候授予硕士学位。之后他进入加州理工学院研究生院。1963年获得博士学位,留校工作至1968年。然后转入斯坦福大学任教。其间1972—1973年以前在奥斯陆大学当客座教授。

1963年,Knuth回到加利福尼亚理工学院攻取了数学博士学位。之后成为了该院的数学教授。

在加利福尼亚理工学院任教期间,Knuth作为Burroughs 公司的顾问继续从事软件开发工作。

1968年。他增加了斯坦福大学,九年后坐上了该校计算机科学学科的第一把交椅。1993年,Knuth成为斯坦福大学 “the Art of Computer Programming”(计算机程序设计艺术)的荣誉退休教授。

计算机鼻祖-Donald Knuth(高纳德)的传奇


计算机程序设计艺术

1962年,Knuth还是个研究生的时候就開始了他计算机程序的工作。

那时,他已经開始了个人咨询,为不同的机器编写编译程序。编译程序是一种翻译原始或高级语言和对象或二进制机器语言的中间语言。在不知道众多软件公司正高额寻求成百上千的编辑者的情况下,Knuth编写了一个程序,赚得5000美元。他的名字立马响誉了整个行业。在伯克利毕业的前一年,世界上一流的出版社Addison-Wesley艾迪生-韦斯利出版社约初露头角的高德纳写一本编译器和程序设计方面的书,这件原本平常的事终于成就了计算机科学史上的一个奇观。出版社1962年约稿,可直到1966年还动静全无,编辑忍不住去电催促,说都过去4年了,书写到啥程度了啊?高答才3000来页。编辑惊呼那干嘛还不交稿?答曰还没进入正题呢。编辑崩溃地说,那仅仅能出多卷本了……

当Knuth的出版商计算出他的那3000页的笔迹打印成文章大约须要2000页时。大家才发现这实际上是一项多么大的project。在3000页的手写设计草图中。Knuth发明了一种综合方法,用于分析或决定结构翻译所客观须要的文法规则。近期。关于他的那第一部著作,Knuth自己这样评述:“用三年半的时间写第一章可并非件好事。”Knuth决定将它详述,成为一部更大的关于程序设计科学的纵览。共分为七个部分。一部巨著就这样——诞生了。《计算机程序设计艺术》。至今仍是各程序类图书书架上标志性的书籍

把一件寻常的事做到人间极致。这就是高纳德。他不是故弄玄虚,他的心里攒着一股劲儿。要写一部与牛顿的《自然哲学的数学原理》相媲美的巨著。 1968年,《计算机程序设计艺术》(TAOCP)的第一卷正式出版了。这一卷的标题叫《基本算法》。但难度却并不低。。

微软首席运行官比尔盖茨在1995年接受一次採訪时说。“假设你觉得你是一名真正优秀的程序猿,就去读第一卷。确定能够解决当中全部的问题。”值得注意的是,盖茨本人读这本书时用去了几个月的时间。并同一时候进行了难以置信的训练。盖茨还说:“假设你能读懂整套书的话,请给我发一份你的简历。

”高纳德本人的说法更犀利:要是看不懂,就别当 程序猿。

同年,高纳德跳槽到斯坦福大学。并当上了教授。

一年后,TAOCP第二卷正式出版。1973年,这本书出到了第三卷。

这三卷书被计算机界惊为“ 神作”,在最初的几年内就卖出去100多万套。

依照计划,这套书一共是七卷。可是如今刚刚写完三卷,就已是震古烁今。

震到什么程度呢。连图灵奖颁奖委员都 坐不住了。依照惯例。图灵奖的获奖者都是成就等身。要经过时代的检验。但此时,美国计算机协会便决定马上为其颁发图灵奖。

这对高纳德来说,无疑是个殊荣。 这一年他仅仅有36岁。至今。他仍保持着图灵奖最年轻获奖者的纪录。

高纳德在获此殊荣之后。再一次令世界大跌眼镜:他宣布从此歇笔了,由于排版工具太差。破坏了这套书的美。这一动作让外界十分震惊。有人说。高德纳江郎才尽,见好就收;有人说。图灵奖对前三卷的评价过高了。高纳德仅仅好找理由撤了。


Tex文字排版系统

可高纳德在辍笔的10年间竟然创造了三个重要的成果:字体设计系统METAFONT、文学化编程(Literate Programming)。以及当中影响最大的排版系统TEX。

在Word系统中写科学论文是一件非常辛苦的事,你须要调整格式,也非常难表现数学式。

可是在TEX中,这些麻烦差点儿全然不存在。仅仅要加载样式文件,排版就自己主动完毕了。

TEX是一场出版界的革命,直到如今仍是全球学术排版的不二规范。

TEX作为一个软件产品,也令人叹为观止。它的版本号号不是自然数列,也不是年份。而是从3開始,不断逼近圆周率(眼下最新版本号是 3.1415926)。

高纳德再一次用行动宣告,这个东西趋近完美,不可能再有什么大的改进了。他还设立了奖金:谁发现TEX的一个错误。就付他2.56 美元,第二个错误5.12美元,第三个10.24美元……以此类推。结果直到今天。他也没有为此付出多少钱,可见TEX经过了如何的千锤百炼。他设置的另 一个奖项是找出其著作中错误的人能得到2.56美元。由于“256美分刚好是十六进制的一美元”。据说,获奖者将有他签名的支票视为珍宝,并不兑现。

为什么是2.56美元?Knuth 教授的答案是:

“256 pennies is one hexadecimal dollar.”

计算机鼻祖-Donald Knuth(高纳德)的传奇

从1981年夏至1996年7月1日,Knuth 教授给指出错误的人回信250多封,当中一半以上装有奖励支票。

从奖励支票清单来看,有一位名叫 Axel Böttcher 的人,曾先后5次得到两块五毛六的支票,3次得到五块一毛二的支票,真可谓牛人背后有牛人。

受麦粒与棋盘的故事影响。Knuth 教授宣布。每发现一个 TeX 程序或 METAFONT 程序中的错误,奖励从2.56美元開始,每年翻倍。最高为327.68美元。

1995年有两人领取了这项奖金。此后至今,还无人可以认领!

依Knuth本人所讲,《计算机程序设计艺术》是他毕生最重要的事业,其目的是“组织和总结所知道的计算机方法的相关知识。并打下坚实的数学、历史基础”。Knuth撰写的前三卷被翻译成多种语言,到1976年为止,已卖出超过一百万冊。

他眼下正目不转睛地编写第四卷,他期望第四卷的篇幅约为2000页,并分为三个独立的章节。

为了完毕丛书的其余部分,Knuth如今进入了一种引退的状态,全身心地投入这项工作。Knuth说,一般说来,他更喜欢在一段时间内集中精神完毕一项工作。正像他自己在书中提出的:按“一批”的模式。

Knuth从他基本的工作计划中拿出了十年,即从1976年起,致力于对数字排版的研究,设计了著名的文件准备TeX系统,字体生成程序METAFONT。这项工作带来的值得注意的副产品是用于结构文件和“文章性程式语言”附随方法论的WEB和CWEB语言。

如今,Knuth和他的妻子Jill,两个孩子John 和Jennifer一起。住在斯坦福大学校园里。他继续着《计算机程序设计艺术》第四卷的编写工作。尽管说Knuth是全身心的投入这一项工作,但他还是能挤出时间研究MMIX的设计。那是一台64位RISC(精简指令集计算机)。

而他的业余爱好仍然是音乐,还一直邀请那些可以即兴演奏四手联弹钢琴曲的人们给他留下便条。以便安排一些活动。

计算机鼻祖-Donald Knuth(高纳德)的传奇

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多