Knuth(佩服的一塌糊涂)
Donald Knuth自傳的開頭這樣寫道:“Donald Knuth真的只是一個(gè)人么?”(我覺得不是,^_^)作為世
界頂級計(jì)算機(jī)科學(xué)家之一,Knuth教授已經(jīng)完成了編譯程序、屬性文法和運(yùn)算法則
的前沿研究,并編著完成了已在程序設(shè)計(jì)領(lǐng)域中具有權(quán)威標(biāo)準(zhǔn)和參考價(jià)值的書目
的前三卷(就是那三本art of computer programming哦)。在完成該項(xiàng)工作之余,Knuth還用了十年時(shí)間發(fā)明了兩個(gè)數(shù)字排版系統(tǒng)(latex,相信大家聽說過),
并編寫了六本著作對其做了詳盡的解釋說明,現(xiàn)在,這兩個(gè)系統(tǒng)已經(jīng)被廣泛地運(yùn)用
于全世界的數(shù)學(xué)刊物的排版中。隨后,Knuth又發(fā)明了文件程序設(shè)計(jì)的兩種語言,
以及“文章性程式語言”相關(guān)的方法論。
到目前為止,Knuth已經(jīng)出版發(fā)行了17部書籍,一百五十余篇論文,包括了巴比倫
算法、圣經(jīng)、字母“s”的歷史等多方面的內(nèi)容。作為一名數(shù)學(xué)家,Knuth曾開創(chuàng)了幾
門新的課程,為純計(jì)算數(shù)學(xué)做出了很大貢獻(xiàn)。他所獲得的獎(jiǎng)項(xiàng)和榮譽(yù)數(shù)不勝數(shù),其
中最值得注目的有1974年美國計(jì)算機(jī)協(xié)會圖靈獎(jiǎng)(ACM Turing Award)(計(jì)算機(jī)里的諾貝爾獎(jiǎng)),1979年美國
前總統(tǒng)卡特授予的科學(xué)金獎(jiǎng)(Medal of Science)以及1996年11月由于發(fā)明先進(jìn)技術(shù)
榮獲的極受尊重的京都獎(jiǎng)(Kyoto Prize)。在不多的業(yè)余時(shí)間里,Knuth不僅寫小說,
還是一個(gè)音樂家、作曲家、管風(fēng)琴設(shè)計(jì)師。
是Knuth獨(dú)特的審美感決定了他興趣廣泛、富有多方面造詣的特點(diǎn),Knuth傳奇般的
生產(chǎn)力也是源于這一點(diǎn)。對于Knuth來說,衡量一個(gè)計(jì)算機(jī)程序是否完整的標(biāo)準(zhǔn)不僅
僅在于它是否能夠運(yùn)行,他認(rèn)為一個(gè)計(jì)算機(jī)程序應(yīng)該是雅致的、甚至可以說是美的。
計(jì)算機(jī)程序設(shè)計(jì)應(yīng)該是一門藝術(shù),一個(gè)算法應(yīng)該像一段音樂,而一個(gè)好的程序應(yīng)該
如一部文學(xué)作品一般。
早期經(jīng)歷
Knuth,1938年1月10日生于美國威斯康星州密爾沃基市。他在模式方面辨別和熟練
操作的能力在八年級的時(shí)候開始顯現(xiàn)出來。當(dāng)時(shí),當(dāng)?shù)氐囊患姨枪圃焐膛e辦了一
項(xiàng)比賽,比賽要求選手用其品牌“Ziegler's Giant Bar”中的字母組成新的單詞,規(guī)
定時(shí)間內(nèi)組成單詞數(shù)量最多者獲勝。Knuth參加了比賽,并以單詞總數(shù)4500余個(gè)遠(yuǎn)遠(yuǎn)
超過了裁判的2500個(gè)的標(biāo)準(zhǔn),輕松贏得頭獎(jiǎng)。賽后,Knuth說道,如果自己當(dāng)初想到
回答時(shí)用些省略符號的話,還能寫出更多。這次比賽Knuth為學(xué)校贏得了一臺電視機(jī),
還為每個(gè)同學(xué)贏得了一根糖果棒。
Knuth多產(chǎn)的出版事業(yè)開始于他的高中時(shí)代,當(dāng)時(shí)他的科技設(shè)計(jì)被Westinghouse
Science Talent Search 光榮提及。他的“Potzebie System of Weights and Measures
”的基礎(chǔ)章節(jié)被登在“Mad”雜志第26號,“Power”的基礎(chǔ)章節(jié)被叫作“whatmeworry”。
“Mad”的編輯認(rèn)識到了年輕的Donald著作的重要性,以25美元買下了他的文章,并刊登在了其
1957年6月的期刊上。
高中的時(shí)候,Knuth對數(shù)學(xué)并沒多大興趣,而是把主要精力放在主修的課程:聽音樂和
作曲上。他在高中的樂隊(duì)里吹薩克斯、大號時(shí),曾把Dragnet、 Howdy Doody Time 和
Brylcream的主題曲聯(lián)成一段新的音樂。這位著名的科學(xué)家在近期評論自己的早期作品
時(shí)承認(rèn):“對于版權(quán),我一無所知。”
雖然Knuth的等級平均分是學(xué)校歷史上最高的,但是他和他的指導(dǎo)老師還是對他能否成功
學(xué)習(xí)大學(xué)數(shù)學(xué)持懷疑態(tài)度。Knuth說在他高中階段和大學(xué)早期一直有一種自卑感,這個(gè)問
題一度是他的一個(gè)障礙。作為一個(gè)大學(xué)新生,Knuth沒有對于失敗的恐懼,他花了許多時(shí)
間攻克額外的數(shù)學(xué)難題,幾個(gè)月后,他在這方面的能力已經(jīng)遠(yuǎn)遠(yuǎn)超過了其他同學(xué)。
高等教育和早期的計(jì)算機(jī)工作
當(dāng)Knuth在Case科學(xué)院(現(xiàn)在的Case Western Reserve)獲得物理獎(jiǎng)學(xué)金時(shí),夢想成為
一個(gè)音樂家的計(jì)劃改變了。Knuth回去繼續(xù)研究數(shù)學(xué)是在大二,當(dāng)時(shí)一個(gè)愛出難題的教
授提出了一個(gè)特殊的問題,并說哪個(gè)學(xué)生能解決這個(gè)問題就立刻記成績“A”。Knuth跟
大多數(shù)同學(xué)一樣,也認(rèn)為那是道解不出來的題目,直到有一天,他錯(cuò)過了公共汽車,
只能步行去看一個(gè)演出,Knuth利用路上這點(diǎn)空閑時(shí)間決定嘗試一下。那陣子他運(yùn)氣
真的是非常好,不僅問題很快就解開了,得到了“A”,還成功地經(jīng)常逃課。雖然Knuth
也承認(rèn),逃課讓他有負(fù)罪感,但是很明顯,他完全有能力補(bǔ)上落下的功課,接下來的一學(xué)
年,他的離散數(shù)學(xué)就又得了個(gè)“A”,而且還獲得了給自己不能參加的課程評定論文等級的
工作機(jī)會。
1956年,作為Case的新生,Knuth第一次接觸到了計(jì)算機(jī),那是一臺IBM 650。Knuth說
直到一年后,女孩才進(jìn)入了他的生活。這又是計(jì)算機(jī)科學(xué)界一直以來虧欠科學(xué)家們的
一個(gè)事例之一(這句話有意思,^_^)。
Knuth熬夜讀IBM
650的說明手冊,自學(xué)基本的程序設(shè)計(jì)。那時(shí),在高等計(jì)算機(jī)語言發(fā)明
之前,程序編寫只能用第二代或是匯編語言。這個(gè)工作既耗時(shí)又困難,因?yàn)橹噶畋仨毟?br />據(jù)每臺機(jī)器特定的構(gòu)造編寫,而實(shí)際上指令只須一步就可從二進(jìn)制0、1系列轉(zhuǎn)存到計(jì)算
機(jī)硬盤上。Knuth說,有了第一次使用650的經(jīng)歷,他便肯定自己能編寫出比說明手冊上
介紹的更好的程序。
Knuth很快便開始“閑逛”,編寫可以執(zhí)行數(shù)學(xué)函數(shù)的程序。他的第一個(gè)程序是把數(shù)字轉(zhuǎn)
化為素?cái)?shù),第三個(gè)是做井字游戲(或者說是讓計(jì)算機(jī)在改正每次輸?shù)腻e(cuò)誤的過程來學(xué)會
玩井字游戲)。作為學(xué)校籃球隊(duì)的經(jīng)理,Knuth編寫了一個(gè)根據(jù)不同成績標(biāo)準(zhǔn)評定每個(gè)
運(yùn)動員對球隊(duì)貢獻(xiàn)等級的程序,他的努力贏來了那些認(rèn)為這樣做有助于球隊(duì)贏得同盟冠
軍的教練的好評(雖然,無庸質(zhì)疑,不是每一個(gè)運(yùn)動員都這樣認(rèn)為)。Knuth的成就成了
新聞周刊的標(biāo)志,他和教練、計(jì)算機(jī)的照片也被刊登在IBM650后來的說明手冊上。
1960年,Knuth從Case畢業(yè)時(shí)享有著最高榮譽(yù),在由全體教員參加的選舉上,他因其公認(rèn)
的出眾成就獲得了碩士學(xué)位。1963年,Knuth回到加利福尼亞理工學(xué)院攻取了數(shù)學(xué)博士學(xué)
位,之后成為了該院的數(shù)學(xué)教授。在加利福尼亞理工學(xué)院任教期間,Knuth作為Burroughs
公司的顧問繼續(xù)從事軟件開發(fā)工作。1968年,他加入了斯坦福大學(xué),九年后坐上了該校計(jì)
算機(jī)科學(xué)學(xué)科的第一把交椅。1993年,Knuth成為斯坦福大學(xué)“the Art of Computer
Programming”(計(jì)算機(jī)程序設(shè)計(jì)藝術(shù))的榮譽(yù)退休教授。
早期成就和計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)的開端
1962年,Knuth還是個(gè)研究生的時(shí)候就開始了他計(jì)算機(jī)程序的工作。那時(shí),他已經(jīng)開始了
個(gè)人咨詢,為不同的機(jī)器編寫編譯程序。編譯程序是一種翻譯原始或高級語言和對象或
二進(jìn)制機(jī)器語言的中間語言。(恩,最近在做一個(gè)編譯程序,有興趣的同學(xué)可以來辦公室找我,^_^)在不知道眾多軟件公司正高額尋求成百上千的編輯者的情
況下,Knuth編寫了一個(gè)程序,賺得5000美元,他的名字立刻響譽(yù)了整個(gè)行業(yè)。世界上
一流的出版社Addison-Wesley找到Knuth,請他寫一本關(guān)于編譯程序的書。到1966年,
Knuth已經(jīng)發(fā)表了3000頁的手寫設(shè)計(jì)草圖,并且發(fā)明了一種綜合方法,用于分析或決定
結(jié)構(gòu)翻譯所客觀需要的文法規(guī)則。最近,關(guān)于他的那第一部著作,Knuth自己這樣評
述:“用三年半的時(shí)間寫第一章可并不是件好事。”
當(dāng)Knuth的出版商計(jì)算出他的那3000頁的筆跡打印成文章大約需要2000頁時(shí),大家才發(fā)現(xiàn)
這實(shí)際上是一項(xiàng)多么大的工程。Knuth決定將它詳述,成為一部更大的關(guān)于程序設(shè)計(jì)科學(xué)
的縱覽,共分為七個(gè)部分。一部巨著就這樣——誕生了。《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》,至今
仍是各程序類圖書書架上標(biāo)志性的書籍。微軟首席執(zhí)行官比爾?蓋茨在1995年接受一次采
訪時(shí)說,“如果你認(rèn)為你是一名真正優(yōu)秀的程序員,就去讀第一卷,確定可以解決其中所
有的問題。”值得注意的是,蓋茨本人讀這本書時(shí)用去了幾個(gè)月的時(shí)間,并同時(shí)進(jìn)行了難
以置信的訓(xùn)練。蓋茨還說:“如果你能讀懂整套書的話,請給我發(fā)一份你的簡歷。(恩,這句話大家仔細(xì)看看,呵呵;可惜我只看了前兩冊的一部分,而且不懂居多,所以只好在這里鬼混。)”
依Knuth本人所講,《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》是他畢生最重要的事業(yè),其目的是“組織和
總結(jié)所知道的計(jì)算機(jī)方法的相關(guān)知識,并打下堅(jiān)實(shí)的數(shù)學(xué)、歷史基礎(chǔ)”。Knuth撰寫的前
三卷被翻譯成多種語言,到1976年為止,已賣出超過一百萬冊。他目前正全神貫注地編
寫第四卷,他期望第四卷的篇幅約為2000頁,并分為三個(gè)獨(dú)立的章節(jié)。為了完成叢書的
其余部分,Knuth現(xiàn)在進(jìn)入了一種引退的狀態(tài),全身心地投入這項(xiàng)工作。Knuth說,一般
說來,他更喜歡在一段時(shí)間內(nèi)集中精神完成一項(xiàng)工作,正像他自己在書中提出的:按
“一批”的模式(值得一提的是這位老人家最近把這個(gè)書扔掉,去開發(fā)一個(gè)小的游戲,而且玩的不亦樂乎)。
Knuth從他主要的工作計(jì)劃中拿出了十年,即從1976年起,致力于對數(shù)字排版的研究,
設(shè)計(jì)了著名的文件準(zhǔn)備TeX系統(tǒng),字體生成程序METAFONT。這項(xiàng)工作帶來的值得注意的
副產(chǎn)品是用于結(jié)構(gòu)文件和“文章性程式語言”附隨方法論的WEB和CWEB語言(
Tex的誕生主要是因?yàn)槔先思易约河X得現(xiàn)有的排版讓它的書看起來不順眼,所以干脆自己寫了個(gè)排版軟件;系里的碩士如果以后投國外期刊,tex是必學(xué)的一個(gè)課程哦)。
現(xiàn)在,Knuth和他的妻子Jill,兩個(gè)孩子John 和Jennifer一起,住在斯坦福大學(xué)校園里。
他繼續(xù)著《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第四卷的編寫工作。雖然說Knuth是全身心的投入這一
項(xiàng)工作,但他還是能擠出時(shí)間研究MMIX的設(shè)計(jì),那是一臺64位RISC(精簡指令集計(jì)算機(jī))
而他的業(yè)余愛好仍然是音樂,還一直邀請那些能夠即興演奏四手聯(lián)彈鋼琴曲的人們給他
留下便條,以便安排一些活動。
成就簡要回顧
編譯程序
編譯程序能夠?qū)崿F(xiàn)高級語言和二進(jìn)制機(jī)器語言之間的翻譯。二十世紀(jì)六十年代初期,
Knuth教授致力于這方面的研究,雖然現(xiàn)代的軟件已經(jīng)可以使其變的簡單一些,但編寫
編譯程序仍被認(rèn)為是一項(xiàng)極為困難的工作。Knuth教授在這方面最著名的成就是LR(k)分
析的研究,那是一個(gè)能使確定一串字符文法規(guī)則的過程更加順暢的值得注目的方法。
屬性文法
在編譯程序的工作之后,Knuth教授走上了形式上定義程序語言意義、語義的研究道路。
他建立起一個(gè)更加經(jīng)濟(jì)的方法去通譯聯(lián)合規(guī)則,他把這種方法稱作“屬性規(guī)則”。該方法
創(chuàng)立的同時(shí),計(jì)算機(jī)科學(xué)的子域被稱作“屬性文法”。
算法
也許Knuth教授在計(jì)算機(jī)科學(xué)領(lǐng)域最原創(chuàng)的貢獻(xiàn)就是他對于算法的分析。算法是編寫一個(gè)
程序,使之能去完成一項(xiàng)任務(wù)的基礎(chǔ),例如搜索或分類等。在加利福尼亞理工學(xué)院時(shí),
Knuth教授在一個(gè)畢業(yè)生的協(xié)作下,開發(fā)了用來探究數(shù)學(xué)公理推論的Knuth-Bendix算法。
1968年,Knuth教授在斯坦福,和他的一個(gè)學(xué)生開發(fā)了Knuth-Morris-Pratt算法,該法則
使計(jì)算機(jī)在文章中搜索一串字符的過程更加連貫。他所著的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》是
一個(gè)詳盡的算法實(shí)踐和科學(xué)的概觀。
數(shù)字化排版
“數(shù)學(xué)書籍和雜志已經(jīng)不像從前那樣漂亮了。”Knuth教授在一篇早期關(guān)于數(shù)學(xué)排版的文章
中這樣寫道。由于對計(jì)算機(jī)排版的校樣的低質(zhì)量感到無法忍受,Knuth教授從他史詩性的
七卷集巨著的編寫過程中拿出了十年時(shí)間,來開發(fā)一個(gè)高質(zhì)量的計(jì)算機(jī)排版系統(tǒng)。其間,
Knuth開發(fā)了兩個(gè)用于文件排版和字體生成的軟件系統(tǒng),這兩個(gè)系統(tǒng)現(xiàn)在已被世界大多數(shù)
出版社運(yùn)用。它們分別是TeX,用于出版業(yè)的科學(xué)排版,和“優(yōu)美文章”的產(chǎn)品METAFONT,
一個(gè)字體生成程序。
結(jié)構(gòu)化文件和文章性程式語言
Knuth教授的排版研究,引領(lǐng)他發(fā)明了文件構(gòu)造的兩種語言和一個(gè)方法論,叫作“文章性程
式語言”。語言分別是WEB和CWEB,它們促進(jìn)了程序編寫向“文學(xué)作品,是用來閱讀的”這個(gè)
方向發(fā)展。這兩種語言的結(jié)合,一種是文件格式化,另一種是程序設(shè)計(jì),這就使程序員能
夠同時(shí)創(chuàng)建兩個(gè)不同的系統(tǒng)程序,一個(gè)面向人,另一個(gè)面向機(jī)器。當(dāng)一條過程清楚地描述
程序并促進(jìn)其維護(hù)時(shí),另外一個(gè)則產(chǎn)生一個(gè)機(jī)器可執(zhí)行的程序。這些工作就是Knuth教授在
實(shí)現(xiàn)其使程序設(shè)計(jì)為讀者易懂、甚至感覺漂亮的目標(biāo)的過程中,在計(jì)算機(jī)領(lǐng)域里所做出的
巨大貢獻(xiàn)。
(注:
其個(gè)人主頁為:http://www-cs-faculty.stanford.edu/~knuth/
轉(zhuǎn)載于:https://www.cnblogs.com/dyllove98/archive/2005/10/03/2462121.html
總結(jié)
以上是生活随笔為你收集整理的Knuth(佩服的一塌糊涂)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么不提供离线Blog管理工具呢?
- 下一篇: 求快乐环岛歌词