少兒編程 > 文章資訊 > 少兒編程 > 他用50年寫出編程圣經(jīng) 被奉為程序員鼻祖
他用50年寫出編程圣經(jīng) 被奉為程序員鼻祖
酷玩實(shí)驗(yàn)室 2016-07-29
我們的高德納大師,他年輕時(shí)立下志向,決心寫出一本能完整介紹計(jì)算機(jī)領(lǐng)域的書。一寫就是40年,如今他已經(jīng)白發(fā)蒼蒼,卻依舊在寫同一本書。1968年,他的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第一卷終于正式出版。這一套書是編程史上最偉大的書之一,史稱“TAOCP”。
摘要曾經(jīng)有一位高人,教過我一句至理名言:千萬不要跟戒煙成功的男人和減肥成功的女人做朋友。他們什么事都做得出來。這種對(duì)自己都下得去狠手,逼自己幾年做一件很困難的事的人,是很可怕的。說到這個(gè),有一位堪稱典范計(jì)算機(jī)領(lǐng)域的藝術(shù)大師——高德納
我們的高德納大師,他年輕時(shí)立下志向,決心寫出一本能完整介紹計(jì)算機(jī)領(lǐng)域的書。一寫就是40年,如今他已經(jīng)白發(fā)蒼蒼,卻依舊在寫同一本書。1968年,他的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第一卷終于正式出版。這一套書是編程史上最偉大的書之一,史稱“TAOCP”。
第一卷的書名叫做《基本算法》,講述編程時(shí)要用到的基本數(shù)學(xué)知識(shí)和不同領(lǐng)域要用到的算法。可是人們買了以后才發(fā)現(xiàn),這本書超難啊!初學(xué)者根本看不懂,天才如比爾蓋茨,也花了好幾個(gè)月,攻克了許多難題才讀完。看完后的比爾蓋茨說:如果你完完整整讀完了TAOCP,請(qǐng)立刻給我發(fā)一份簡歷。而高德納自己,則認(rèn)為這本書只是啟蒙教材:“如果連這一卷都看不懂,就不要考慮當(dāng)程序員了”。
次年,TAOCP第二卷出版;1973年,第三卷也相繼出版。這時(shí)TAOCP的銷量已經(jīng)突破百萬,這套包羅萬象的計(jì)算機(jī)叢書,受到了圖靈獎(jiǎng)評(píng)委會(huì)的關(guān)注。按照高德納的計(jì)劃,TAOCP一共有7卷,這才出到第3本,都還不到一半,但是圖靈獎(jiǎng)的評(píng)委們,內(nèi)心激動(dòng)得不能自已,就想沖到高德納家里,把獎(jiǎng)杯遞到他手上。于是,他就獲得了圖靈獎(jiǎng),那年,他只有36歲,他也成為了圖靈獎(jiǎng)至今年齡最小的獲獎(jiǎng)?wù)摺?
圖:碗狀的圖靈獎(jiǎng)杯
正常人拿了這種級(jí)別的大獎(jiǎng),肯定要激動(dòng)不已連續(xù)失眠,但是我們的高德納,是個(gè)不折不扣的無敵天才,他已經(jīng)習(xí)慣了拿各種獎(jiǎng)。這些世俗庸才用來證明自己的東西,他根本不care,還在家里把獎(jiǎng)杯當(dāng)做盛水果的盆。從小拿獎(jiǎng)到手軟的他,得到的第一個(gè)獎(jiǎng)是在8歲的時(shí)候,當(dāng)時(shí)有家糖果商舉辦了一場(chǎng)比賽,要求用“ Ziegler’s Giant Bar”里面的字母,寫出盡可能多的單詞。孩子們大都只能寫出幾十個(gè)單詞,這時(shí)小高德納坐上打字機(jī),一口氣寫出 4500多個(gè)單詞,然后笑著說:我還能寫出更多。
就是這種舍我其誰的表情,在場(chǎng)的所有人都被震懾住了,趕緊把冠軍給了他。10歲開始,他一直想當(dāng)一名音樂家,每天都在練習(xí)吹奏各種樂器,上中學(xué)時(shí)已經(jīng)能譜曲,甚至能親手制作一臺(tái)管風(fēng)琴,后來擺在他家里的管風(fēng)琴,就是他自己設(shè)計(jì)的。
從細(xì)節(jié)看,真的很厲害。
他的思緒全都在音樂上,高中的時(shí)候,幾乎沒有完整地聽過一堂課,但是老師們卻很喜歡他,因?yàn)樵谕耆宦犞v的情況下,他的成績依然是年級(jí)第一。高中畢業(yè)時(shí),他的平均成績達(dá)到了97.5分,是那個(gè)學(xué)校歷史最高的分?jǐn)?shù)。后來他考入了當(dāng)時(shí)美國最頂尖的研究型大學(xué)凱斯理工學(xué)院。
他就是在這里,發(fā)現(xiàn)了比音樂更熱愛的東西,大一暑假留校打工,已經(jīng)是深夜了,這時(shí)他看到幾個(gè)人,正在把一個(gè)巨大的東西搬進(jìn)機(jī)房,那是當(dāng)時(shí)最先進(jìn)的計(jì)算機(jī)——IBM650。 龐大的機(jī)箱和閃爍的指示燈,讓他好奇不已。他趁人不注意偷偷鉆進(jìn)機(jī)房,和這臺(tái)機(jī)器大戰(zhàn)了三天三夜。
三天以后他從機(jī)房出來,整個(gè)人都消瘦了,但是他的眼睛閃爍著亮光,因?yàn)橥ㄟ^這三天的自學(xué),他已經(jīng)完全掌握了編程原理。并且他發(fā)現(xiàn),自己能編寫出比IBM650說明書上更難、更復(fù)雜的程序。
當(dāng)時(shí)他還是學(xué)校籃球隊(duì)的管理人員,他突發(fā)奇想,可以把球員們?cè)谇驁?chǎng)上的表現(xiàn),包括得分、籃板、搶斷等數(shù)據(jù)編入一個(gè)程序。當(dāng)面對(duì)不同對(duì)手的時(shí)候,可以計(jì)算出最佳的球員布陣和攻防戰(zhàn)術(shù)。戰(zhàn)績平平的凱斯理工學(xué)院,竟然憑借這個(gè)軟件,贏得了當(dāng)年高校聯(lián)賽的冠軍!
這樣的一個(gè)程序,放在今天好像沒什么,但在那個(gè)人們連電腦都沒見過的時(shí)代,絕對(duì)是尖端的黑科技啊!學(xué)校的老師們被這個(gè)復(fù)雜的程序折服了!
本科畢業(yè)的時(shí)候,老師們一致決定,直接給他一個(gè)碩士學(xué)位吧!
25歲時(shí),他發(fā)現(xiàn)市面上,幾乎沒有編程的教材,于是決定寫一本能夠全面介紹編譯器和程序設(shè)計(jì)方面的書,一寫就是四年。出版社編輯的胡子都半米長了,問他怎么還沒寫完
他說:我剛寫完這本書的概述,才寫了3000頁。
由于內(nèi)容太多,他決定出一套系列叢書,寫完一本賣一本。于是1968年,《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》第一卷正式出版了,這就是我們開頭提到的,最后為他贏得圖靈獎(jiǎng)的書。得獎(jiǎng)后的高德納,已經(jīng)是舉世矚目的計(jì)算機(jī)科學(xué)家。按理說應(yīng)該繼續(xù)寫書,走向人生更高的巔峰。然而人家根本沒在乎得沒得獎(jiǎng),就在獲得圖靈獎(jiǎng)當(dāng)年,他宣布暫停TAOCP的寫作,潛心研究字體和排版。他在采訪中說:我忍了很久了,當(dāng)今的文字排版技術(shù)太爛了,破壞了我著作的美感,我要去開發(fā)更先進(jìn)的排版技術(shù),更優(yōu)美的字體,讓我的書看起來更漂亮!
這個(gè)理由也太任性吧!全世界都被他的這個(gè)決定震撼到了。筆耕一輟就是五年,五年后,在世人疑惑的目光中,高德納發(fā)布了兩個(gè)響亮的成果:
TEX排版系統(tǒng)和METAFONT字體系統(tǒng)
如果大家用word寫過復(fù)雜的數(shù)學(xué)公式,就知道那種咬牙切齒的感覺,每個(gè)符號(hào)都要單獨(dú)尋找,字體字號(hào)字距要不斷調(diào)整,而TEX系統(tǒng)完全解決了這些問題,大大加快了學(xué)術(shù)論文的編寫速度,而且它所排出的文字之美,讓人們由衷感嘆:
啊,一毫米都不能再挪動(dòng)了
TEX的版本號(hào)不是自然數(shù)列,而是從3開始,不斷地逼近圓周率。目前最新版本是3.1415926,意思就是在說,我的系統(tǒng)已經(jīng)無限接近于完美了,沒有什么要改的地方了。
此外,他還為TEX系統(tǒng)設(shè)立了獎(jiǎng)金,第一個(gè)發(fā)現(xiàn)系統(tǒng)漏洞的人,可以獲得2.56美金; 第二個(gè)人可以獲得5.12美金。依此類推,我們都知道,傳說某個(gè)國王就因?yàn)檫@種指數(shù)游戲,失去了江山,也有人嘲笑微軟,說比爾蓋茨再有錢,如果每有一個(gè)bug就賠錢,他早就傾家蕩產(chǎn)了。高德納作為算法大師,更清楚指數(shù)增長的可怕性。然而到現(xiàn)在為止,他只寄出過兩張支票,可見他對(duì)完美的追求有多么極致。
第二個(gè)成果是字體系統(tǒng)METAFONT,從METAFONT中字體的優(yōu)美程度來講,可以說計(jì)算機(jī)界最懂字體的兩個(gè)人,一個(gè)是喬布斯,另一個(gè)就是高德納。TEX和METAFONT這兩項(xiàng)成果,同樣深刻影響著世界。以至于到今天,大部分學(xué)術(shù)文章依舊在用TEX排版,憑借這兩項(xiàng)支線成果,高德納獲得了美國總統(tǒng)卡特親自頒發(fā)的美國國家科學(xué)獎(jiǎng)獎(jiǎng)?wù)隆?
有了漂亮的排版和優(yōu)美的字體,高德納重啟了TAOCP的寫作,但由于計(jì)算機(jī)領(lǐng)域發(fā)展迅速,至今只寫到第四卷第一部分(4A)。
這套叢書如今早已成為,程序員界的圣經(jīng),高德納也因此成為了編程界的上帝。高德納有一個(gè)與其他所有編程大師都不同的看法:他從不認(rèn)為編程是一門科學(xué),而是一門藝術(shù)。用他的話說:“因?yàn)榫幊桃蠹记珊椭腔郏⑶耶a(chǎn)生美的目標(biāo)。”
各位碼農(nóng)兄弟,如果你們看完了他寫的書,別忘了給比爾·蓋茨打個(gè)電話!