計(jì)算機(jī)鼻祖撰寫20世紀(jì)最重要物理學(xué)著作(圖)
高德納是美國計(jì)算機(jī)科學(xué)家唐納德·克努斯(Donald Knuth)的中文名。這位“現(xiàn)代計(jì)算機(jī)科學(xué)的鼻祖”是計(jì)算機(jī)界的傳奇人物。他在年僅36歲時(shí)就獲得了圖靈獎(jiǎng),成為該獎(jiǎng)歷史上最年輕的獲獎(jiǎng)?wù)摺K墨@獎(jiǎng)作品《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》原計(jì)劃出七卷,至今才出到第四卷。盡管如此,它依然與愛因斯坦的《相對(duì)論》、狄拉克的《量子力學(xué)》、費(fèi)曼的《量子電動(dòng)力學(xué)》等并列,被《科學(xué)美國人》雜志評(píng)選為20世紀(jì)最重要的12本物理學(xué)著作之一。
早期經(jīng)歷:“是男人就得-67”
1938年高德納出生于美國密爾沃基。他的超凡智力在8歲時(shí)就顯示出來了。當(dāng)時(shí),一家糖果商在孩子們當(dāng)中舉辦了一項(xiàng)有趣的比賽,要求用“Ziegler’s Giant Bar”里面的字母,寫出盡可能多的單詞。裁判事先準(zhǔn)備了一份2500個(gè)單詞的列表,可小高德納令人驚訝地寫出了4500多個(gè)單詞。他為學(xué)校贏得一臺(tái)電視機(jī),還為每個(gè)同學(xué)贏得一根棒棒糖。他的賽后感言是,我還能寫出更多。
高德納就讀的大學(xué)是凱斯理工學(xué)院。1956年,他在這里第一次使用了IBM650,并開始學(xué)習(xí)編程。不久之后,高德納就對(duì)編程有了許多體會(huì)。當(dāng)時(shí)高德納還兼職管理學(xué)校的籃球隊(duì),于是他編寫了一個(gè)程序,能夠自動(dòng)評(píng)估每名球員的價(jià)值,令球隊(duì)的教練非常欣賞,還引來了CBS電視臺(tái)。后來高德納、球隊(duì)教練和IBM650的合影還被印到了IBM650的宣傳冊(cè)上。1960年,高德納以公認(rèn)出色的成就,打破了學(xué)校的慣例,同時(shí)獲得了學(xué)士和碩士?jī)蓚€(gè)學(xué)位。
隨后,高德納進(jìn)入伯克利攻讀數(shù)學(xué)博士學(xué)位。在此期間,他的編程生涯也正式開始了。他當(dāng)時(shí)所寫的程序中最值得一提的,是對(duì)ALGOL60編譯器提出的測(cè)試方法。ALGOL60經(jīng)常會(huì)因?yàn)榫幾g器不成熟而出故障。高德納編寫了一段非常簡(jiǎn)單的測(cè)試程序,江湖人稱“Man or boy test”,翻譯成中文就是“是男人就得-67”。高德納說,只要用ALGOL60編譯器來編譯我的這段程序,如果運(yùn)行結(jié)果等于-67,就說明這個(gè)編譯器是純爺們兒。
獲圖靈獎(jiǎng):蓋茨為他“做推廣”
1963年,25歲的高德納拿到了博士學(xué)位,并留在伯克利任教。在畢業(yè)前一年,高德納已經(jīng)因?yàn)樵O(shè)計(jì)編譯器而響譽(yù)計(jì)算機(jī)行業(yè)。著名的Addison-Wesley出版社向他約稿,請(qǐng)他寫一本關(guān)于編譯器和程序設(shè)計(jì)方面的書。這本來是很平常的一件事,但不久之后,他就把這件事做成了計(jì)算機(jī)科學(xué)史上的奇觀。1962年約的稿,高德納一直寫到1966年還沒交。編輯急了,找到高德納,說這都4年了你寫了多少啊。高德納說,才寫3000頁手稿。編輯大囧,忙問都這么長(zhǎng)了怎么不交稿?答曰,我還沒寫到正題呢。編輯崩潰了,說那你出個(gè)多卷本吧……
把一件平常的事做到人間極致,這就是高德納。他不是故弄玄虛,他的心里攢著一股勁兒,要寫一部與牛頓的《自然哲學(xué)的數(shù)學(xué)原理》相媲美的巨著。1968年,《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)》(TAOCP)的第一卷正式出版了。這一卷的標(biāo)題叫《基本算法》,但難度卻并不低。據(jù)說比爾·蓋茨曾經(jīng)花了幾個(gè)月的時(shí)間讀完這一卷,并且做了大量的練習(xí),然后他說,如果你想成為一個(gè)優(yōu)秀的程序員,那就去讀這個(gè)《基本算法》吧。高德納本人的說法更犀利:要是看不懂,就別當(dāng)程序員。
同年,高德納跳槽到斯坦福大學(xué),并當(dāng)上了教授。一年后,TAOCP第二卷正式出版。1973年,這本書出到了第三卷。這三卷書被計(jì)算機(jī)界驚為“神作”,在最初的幾年內(nèi)就賣出去100多萬套。按照計(jì)劃,這套書一共是七卷,但是現(xiàn)在剛剛寫完三卷,就已是震古爍今。震到什么程度呢,連圖靈獎(jiǎng)?lì)C獎(jiǎng)委員都坐不住了。按照慣例,圖靈獎(jiǎng)的獲獎(jiǎng)?wù)叨际浅删偷壬恚?jīng)過時(shí)代的檢驗(yàn)。但此時(shí),美國計(jì)算機(jī)協(xié)會(huì)便決定立即為其頒發(fā)圖靈獎(jiǎng)。這對(duì)高德納來說,無疑是個(gè)殊榮,這一年他只有36歲。至今,他仍保持著圖靈獎(jiǎng)最年輕獲獎(jiǎng)?wù)叩募o(jì)錄。
中途輟筆:圓周率充當(dāng)序列號(hào)
高德納在獲此殊榮之后,再一次令世界大跌眼鏡:他宣布從此歇筆了,因?yàn)榕虐婀ぞ咛?,破壞了這套書的美。這一動(dòng)作讓外界十分震驚。有人說,高德納江郎才盡,見好就收;有人說,圖靈獎(jiǎng)對(duì)前三卷的評(píng)價(jià)過高了,高德納只好找理由撤了;還有人說,獲獎(jiǎng)之后停止寫作,充分體現(xiàn)了他寫書的目的就是為了功利。
可高德納在輟筆的10年間居然創(chuàng)造了三個(gè)重要的成果:字體設(shè)計(jì)系統(tǒng)METAFONT、文學(xué)化編程(Literate Programming),以及其中影響最大的排版系統(tǒng)TEX。
在Word系統(tǒng)中寫科學(xué)論文是一件很辛苦的事,你需要調(diào)整格式,也很難表現(xiàn)數(shù)學(xué)式。但是在TEX中,這些麻煩幾乎完全不存在,只要載入樣式文件,排版就自動(dòng)完成了。TEX是一場(chǎng)出版界的革命,直到現(xiàn)在仍是全球?qū)W術(shù)排版的不二規(guī)范。
TEX作為一個(gè)軟件產(chǎn)品,也令人嘆為觀止。它的版本號(hào)不是自然數(shù)列,也不是年份,而是從3開始,不斷逼近圓周率(目前最新版本是3.1415926)。高德納再一次用行動(dòng)宣告,這個(gè)東西趨近完美,不可能再有什么大的改進(jìn)了。他還設(shè)立了獎(jiǎng)金:誰發(fā)現(xiàn)TEX的一個(gè)錯(cuò)誤,就付他2.56美元,第二個(gè)錯(cuò)誤5.12美元,第三個(gè)10.24美元……以此類推。結(jié)果直到今天,他也沒有為此付出多少錢,可見TEX經(jīng)過了怎樣的千錘百煉。他設(shè)置的另一個(gè)獎(jiǎng)項(xiàng)是找出其著作中錯(cuò)誤的人能得到2.56美元,因?yàn)?ldquo;256美分剛好是十六進(jìn)制的一美元”。據(jù)說,獲獎(jiǎng)?wù)邔⒂兴灻闹币暈檎鋵?,并不兌現(xiàn)。
回歸寫作:計(jì)算機(jī)王者歸來
歇筆十年的高德納,手捧這三項(xiàng)成果重出江湖,打消了一切質(zhì)疑。這時(shí)他才對(duì)十年前的歇筆事件做了一個(gè)輕描淡寫的解釋:一個(gè)人要想把事情做得漂亮,就必須要跟上帝保持和諧,現(xiàn)在,上帝終于讓我去寫四卷了。
1992年,高德納為了專心寫作,宣布提前退休,并停用電子郵箱(此人從1975年就開始玩電郵了)。高德納一共帶了28位博士生,他覺得28這個(gè)數(shù)字很好,于是便宣布不再收學(xué)生了。盡管如此,他仍然為想要師從于他的人們留下了一個(gè)盼頭:他開了一門公開課,每次會(huì)提出一個(gè)問題,如果誰能快速解出來,高德納就會(huì)為他的博士論文簽名。不知道哪位后起之秀能夠獲得如此殊榮呢,我們拭目以待吧。
2008年,在TAOCP的前三卷面市30年之后,第四卷終于面世了。而高德納自己卻已是白發(fā)蒼蒼的古稀老人了。他對(duì)計(jì)算機(jī)科學(xué)的熱愛,使他為這套叢書耗費(fèi)了一生的心血。[!--empirenews.page--]
【新知補(bǔ)丁】
圖靈獎(jiǎng) Turing Award
計(jì)算機(jī)科學(xué)界最高獎(jiǎng)。美國計(jì)算機(jī)協(xié)會(huì)(ACM)于1966年設(shè)立,專門獎(jiǎng)勵(lì)那些對(duì)計(jì)算機(jī)事業(yè)做出重要貢獻(xiàn)的個(gè)人。其名稱取自計(jì)算機(jī)科學(xué)的先驅(qū)、英國科學(xué)家阿蘭·圖靈。目前圖靈獎(jiǎng)由英特爾公司以及Google公司贊助,獎(jiǎng)金為25萬美元,一般每年只獎(jiǎng)勵(lì)一名計(jì)算機(jī)科學(xué)家。
□蘇椰(江蘇 人工智能專業(yè)) 本版圖片均為資料圖片
高德納設(shè)置了一個(gè)懸賞游戲。如果有人挑出了他編寫的TEX程序的錯(cuò)誤,他就給挑錯(cuò)者獎(jiǎng)勵(lì)。第一個(gè)錯(cuò)誤值2.56美元,第二個(gè)值5.12美元,第三個(gè)值10.24美元。據(jù)說,這張10.24美元的支票是他迄今為止為此簽出的最后一張。