有极速快乐十分吗|极速快乐十分走势图|

计算机鼻祖 Donald Knuth 的传奇

学习计算机不能不知道的一个人
服务器君一?#19981;?#36153;了475.497 ms进行了6次数据库查询,努力地为您提供了这个页面。
试试阅读模式?希望听取您的建议

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

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

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

是Knuth独特的审美感决定了他兴趣广泛、富有多方面造诣的特点,Knuth传奇般的生产力也是源于这一点。对于Knuth来说,衡量一个计算机程序是否完整的标准不仅仅在于它是否能够运行,他认为一个计算机程序应该是雅致的、甚?#37327;?#20197;说是美的。计算机程序设计应该是一门艺术,一个算法应该像一段音乐,而一个好的程序应该如一?#35838;?#23398;作品一般。

早期经历

Knuth,1938年1月10日生于美国威斯康星州密尔?#21482;小?#20182;在模式方面辨别和熟练操作的能力在八年级的时候开始显现出?#30784;?#24403;时,当地的一家糖果制造商举办了一项比赛,比赛要求选手用其品牌“Ziegler's Giant Bar”中的字母组成新的单词,规定时间内组成单词数量最多者获胜。Knuth参加了比赛,并以单?#39318;?#25968;4500余个?#23545;?#36229;过了?#38376;?#30340;2500个的标?#36857;?#36731;松赢得?#26041;薄?#36187;后,Knuth说道,如果自己当初想到回答时用些省略符号的话,还能写出更多。这次比赛Knuth为学校赢得了一台电视机,还为每个同学赢得了一根糖果棒。

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

高中的时候,Knuth对数学并没多大兴趣,而是把主要精力放在主修的课程:听音乐和作曲上。他在高中的乐队里?#31561;?#20811;斯、大号时,曾把Dragnet、 Howdy Doody Time 和 Brylcream的主题曲联成一段新的音乐。这位著名的科学?#20197;?#36817;期评论自己的早期作品时承?#24076;骸?#23545;于版权,我一无所知。”

虽然 Knuth的等级平均分是学校历史上最高的,但是他和他的指导老师还是对他能否成功学习大学数学?#21482;騁商取nuth说在他高中阶段和大学早期一直有一种自卑感,这个问题一度是他的一个?#20064;?#20316;为一个大学新生,Knuth没有对于失败的?#24535;澹?#20182;花了许多时间攻克额外的数学难题,几个月后,他在这方面的能力已经?#23545;?#36229;过了其他同学。

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

当Knuth在Case科学院(现在的Case Western Reserve)获得物理奖学金时,梦想成为一个音乐家的计划改变了。Knuth回去继续研究数学是在大二,当时一个爱出难题的教授提出了一个特殊的问题,并?#30340;?#20010;学生能解决这个问题就立刻记成绩“A”。Knuth跟大多数同学一样,也认为那是道解不出来的题目,直到有一天,他错过了公共汽车,只能步行去看一个演出,Knuth利用路上这点?#38556;?#26102;间决定尝试一下。那阵子他运气真的是非常好,不仅问题很快就解开了,得到了“A”,还成功地经常逃课。虽然 Knuth也承?#24076;?#36867;课让他有负罪感,但是很明显,他完全有能力补上落下的功课,接下来的一学年,他的离散数学就?#20540;?#20102;个“A”,而?#19968;够?#24471;了给自己不能参加的课程评定论文等级的工作机会。

1956年,作为Case的新生,Knuth第一次接触到了计算机,那是一台IBM 650。Knuth说直到一年后,女孩才进入了他的生活。这又是计算机科学界一直以?#32431;?#27424;科学家们的一个事例之一。

Knuth 熬夜读IBM 650的说明手册,自学基本的程序设计。那时,在高等计算机语言发明之前,程序编写只能用第二代或是汇编语言。这个工作既耗时又困难,因为指令必须根据每台机器特定的构造编写,而?#23548;噬现?#20196;只须一步就可从二进制0、1系列转存到计算机?#25165;?#19978;。Knuth说,有?#35828;?#19968;次使用650的经历,他便肯定自己能编写出比说明手册上介绍的更好的程序。

Knuth很快便开始“闲逛”,编写可以执行数学函数的程序。他的第一个程序是把数字转化为素数,第三个是做井字游戏(或者说是让计算机在改正每次输的错误的过程来学会玩井字游戏)。作为学校篮球队的经理,Knuth编写了一个根据不同成绩标?#35745;?#23450;每个运动员对球队贡献等级的程序,他的努力赢来了那些认为这样做有助于球队赢得同?#26031;?#20891;的教练的好评(虽然,无庸质疑,不是每一个运动员都这样认为)。 Knuth的成?#32479;?#20102;新闻周刊的标志,他和教练、计算机的照片也被刊登在IBM650后来的说明手册上。

1960年,Knuth从 Case毕业时享有着最高荣誉,在由全体教员参加的选举上,他因其公认的出众成就获得了硕士学位。1963年,Knuth回到加利福尼亚理工学院攻取了数学博士学位,之后成为了该院的数学教授。在加利福尼亚理工学院任教期间,Knuth作为Burroughs 公司的顾?#22987;?#32493;?#37038;?#36719;件开发工作。1968年,他加入了斯坦福大学,九年后坐上了该校计算机科学学科的第一把交椅。1993年,Knuth成为斯坦福大学 “the Art of Computer Programming”(计算机程序设计艺术)的荣誉退休教授。

早期成就和计算机程序设计艺术的开端

1962 年,Knuth还是个研究生的时候就开始了他计算机程序的工作。那时,他已经开始了个人咨询,为不同的机器编写编译程序。编译程序是一种翻译原始或高级语言和对象或二进制机器语言的中间语言。在不知道众多软件公司正高额寻求成百上千的编辑者的情况下,Knuth编写了一个程序,赚得5000美元,他的名字立刻响誉了整个行业。世界上一流的出版社Addison-Wesley找到Knuth,请他写一本关于编译程序的书。到1966年,Knuth已经发表了 3000页的?#20013;?#35774;计草图,并且发明了一种综合方法,用于分析或决定结构翻译所客观需要的文法规则。最近,关于他的那第一部著作,Knuth自己这样评述:“用三年半的时间写第一章可并不是件好事。”

当Knuth的出版商计算出他的那3000页的笔迹打印成文章大约需要2000页时,大家才发现这?#23548;?#19978;是一项多么大的工程。Knuth决定将它详述,成为一部更大的关于程序设计科学的纵览,共分为七个部分。一部巨著就这样——诞生了。《计算机程序设计艺术》,?#20004;?#20173;是各程序类图书书架上标志性的书籍。微软首席执行官比尔盖茨在1995年?#37038;?#19968;次采访时说,“如果你认为你是一名真正优秀的程序员,就去读第一卷,确定可以解决其中所有的问题。”值得注意的是,盖茨本人读这本书时用去了几个月的时间,并同时进行了难以置信的训练。盖茨还说:“如果你能读懂整?#36164;?#30340;话,请给我发一份你的简历。”

依Knuth本人所讲,《计算机程序设计艺术》是他毕生最重要的事业,其目的是“组织和总结所知道的计算机方法的相关知识,并打下坚实的数学、历史基础”。Knuth撰写的前三卷被翻译成多种语言,到1976年为止,已卖出超过一百万册。他目前正全神贯注地编写第四卷,他期望第四卷的篇幅约为2000页,并分为三个独立的章节。为了完成丛书的其余部分,Knuth现在进入了一种引退的状态,全身心地?#24230;?#36825;项工作。Knuth说,一般说来,他更?#19981;?#22312;一段时间内集中精神完成一项工作,正像他自己在书中提出的:?#30784;?#19968;批”的模式。

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

现在,Knuth和他的妻子Jill,两个孩子John 和Jennifer一起,住在斯坦福大学校园里。他继续着《计算机程序设计艺术》第四卷的编写工作。虽然说Knuth是全身心的?#24230;?#36825;一项工作,但他还是能挤出时间研究MMIX的设计,那是一台64位RISC(精简指令集计算机)。而他的业余爱好仍然是音乐,还一直邀请那些能够即?#25628;?#22863;四手联弹?#26234;?#26354;的人们给他留下便条,以便安排一些活动。

成就简要回顾

编译程序: 编译程序能够实现高级语言和二进制机器语言之间的翻译。二十世纪六十年代初期,Knuth教授致力于这方面的研究,虽然现代的软件已经可以使其变的简单一些,但编写编译程序仍被认为是一项极为困难的工作。 Knuth教授在这方面最著名的成就是LR(k)分析的研究,那是一个能使确定一串字符文法规则的过程更加顺畅的值得注目的方法。

属性文法: 在编译程序的工作之后,Knuth教授走上了形式上定义程序语言意义、语义的研究道路。他建立起一个更加经济的方法去通译联合规则,他把这种方法称作“属性规则”。该方法创立的同时,计算机科学的子域被称作“属性文法”。

算法: 也许Knuth教授在计算机科学领域最原创的贡献就是他对于算法的分析。算法是编写一个程序,使之能去完成一项任务的基础,例如搜索或分类等。在加利福尼亚理工学院时,Knuth教授在一个毕业生的协作下,开发了?#32654;?#25506;究数学公理推论的Knuth-Bendix算法。1968年,Knuth教授在斯坦福,和他的一个学生开发了Knuth-Morris-Pratt算法,该法则使计算机在文章中搜索一串字符的过程更加连贯。他所著的《计算机程序设计艺术》是一个详尽的算法?#23548;?#21644;科学的概观。

数?#21482;?#25490;版: “数学书籍和?#21448;?#24050;经不像从前那样漂亮了。”Knuth教授在一篇早期关于数学排版的文章中这样写道。由于对计算机排版的校样的低质量感到无法忍受,Knuth教授从他史诗性的七卷集巨著的编写过程中拿出了十年时间,来开发一个高质量的计算机排版系统。其间,Knuth开发了两个用于文件排版和字体生成的软件系统,这两个系统现在已被世界大多数出版社运用。它们分别是TeX,用于出版业的科学排版,和“优美文章”的产品;METAFONT,一个字体生成程序。

结构化文件和文章性程式语言: Knuth教授的排版研究,引领他发明了文件构造的两种语言和一个方法论,叫作“文章性程式语言”。语言分别是WEB和CWEB,它们促进了程序编写向“文学作品,是?#32654;?#38405;读的”这个方向发展。这两种语言的结?#24076;?#19968;种是文件格式化,另一种是程序设计,这就使程序员能够同时创建两个不同的系统程序,一个面向人,另一个面向机器。当一条过程清楚地描述程序并促进其维护时,另外一个则产生一个机器可执行的程序。这些工作就是Knuth教授在实现其使程序设计为读者易懂、甚至感觉漂亮的目标的过程中,在计算机领域里所做出的巨大贡献。

本文地址:http://www.bavugt.tw/librarys/veda/detail/1176,?#38431;?#35775;问原出处。

不打个分吗?

转载随意,但请带上本文地址:

http://www.bavugt.tw/librarys/veda/detail/1176

如果你认为这篇文章值得更多人阅读,?#38431;?#20351;用下面的分享功能。
小提示:您可以?#32431;?#25463;键 Ctrl + D,或点此 加入收藏

大家都在看

阅读一百本计算机著作吧,少年

很多?#21496;?#24471;自己技术进步很慢,学习效?#23454;停?#25105;觉得一个重要原因是看的书少了。多少是多呢?#31185;?#30721;得看3、4、5、6米吧。给个具体的数量,那就100本书吧。很多人知识结构不好而且不系统,因为在特定领域有一个足够量的知?#35835;?足够良好的知识结构,系统化以后就足以应对大?#35838;?#26366;遇到过的问题。

奉劝自学者:构建特定领域的知识结构体系的路径中再也没有比学习该专业的专业课程更好的了。如果我的知识结构体系足以囊括面试官的大部分甚至吞并他的知识结构体系的话,读到他言语中的一个词我们就已经知道他要表达什么,我们可以让他坐“上位”毕竟他是面试官,但是在知识结构体系以及心理上我们就居高临下。

所以,阅读一百本计算机著作吧,少年!

《数据结构与算法分析:C++描述(第3版)》 维斯 (Mark Allen Weiss) (作者), 张怀勇 (译者), 等 (译者)

《数据结构与算法分析:C++描述(第3版)》是数据结构和算法分析的经典教?#27169;?#20070;中使用主流的程序设计语言C++作为具体的实现语言。书的内容包括表、栈、队列、树、散列表、优先队列、排序、不相交集算法、图论算法、算法分析、算法设计、摊还分析、查找树算法、k-d树和配对堆等。《数据结构与算法分析:C++描述(第3版)》适合作为计算机相关专业本科生的数据结构课程和研究生算法分析课程的教材。本科生的数据结构课程可以使用《数据结构与算法分析:C++描述(第3版)》第1章~第9章,多学时课程还可以讲解第10章;研究生算法分析课程可以使用第6章~第12章。

更多计算机宝库...

有极速快乐十分吗
现在做旧手机换菜刀赚钱吗 金蟾捕鱼技巧 浙江6十1有人中奖吗 金牛游戏中心 金牛棋牌 六肖中特期期准王中王开码现场 做恒指期货到底能不能赚钱 广西快乐10分钟计划 冠通棋牌免费下载 双色球开球号码查询 排列5杀号