|
Donald E. Knuth(高德納),著名計算機(jī)科學(xué)家,斯坦福大學(xué)計算機(jī)系榮譽(yù)退休教授。高德納教授為現(xiàn)代計算機(jī)科學(xué)的先驅(qū)人物,創(chuàng)造了算法分析的領(lǐng)域,在數(shù)個理論計算機(jī)科學(xué)的分支做出基石一般的貢獻(xiàn)。在計算機(jī)科學(xué)及數(shù)學(xué)領(lǐng)域發(fā)表了多部具廣泛影響的論文和著作。1974年圖靈獎得主。他歸隱已近20載,不問世事,潛心修訂并繼續(xù)創(chuàng)作煌煌巨著《計算機(jī)程序設(shè)計藝術(shù)》(The Art of Computer Programming)多卷本。
圖靈社區(qū):我們已經(jīng)清楚您寫作《計算機(jī)程序設(shè)計藝術(shù)》(以下簡稱TAOCP)的初衷和經(jīng)歷,也知道您關(guān)于“信仰與科學(xué)的關(guān)系”的系列講座曾大受歡迎,因此對您的寫作和信仰之間的關(guān)系很感興趣。能否談一下,信仰和上帝在TAOCP的創(chuàng)作過程中,給您帶來的是哪些幫助呢?
高德納:計算機(jī)科學(xué)是既壯觀又幽美的,我嘗試盡自己所能,以最恰當(dāng)?shù)姆绞絹斫忉屛宜私獾哪承┢瑪?。很顯然,我自己并沒有任何超自然能力,但的確很喜歡講述那些似乎靜靜地等待著人們?nèi)ブv出來的故事。寫書跟講故事十分類似。
此外,雖然計算機(jī)科學(xué)非常美妙,但它也不可能包辦一切!我相信,總有一些神秘的東西是超越人類的理解而存在的。
信仰是很私人的東西,它涵蓋了一些永遠(yuǎn)無法證明的概念。因此,本人在信仰問題上的看法,我并不指望每個人都能同意。我認(rèn)為,上帝希望我能創(chuàng)造某些成果,而這些東西能夠啟發(fā)其他人去創(chuàng)造其他成果。這就是我的宗教生活和科學(xué)生活之間的主要關(guān)系。
圖靈社區(qū):您耗費(fèi)幾十年的時間創(chuàng)作的TAOCP,到現(xiàn)在為止,這部著作已經(jīng)創(chuàng)作了半個世紀(jì)。這樣的成書過程,讓我們想起歌德的《浮士德》。令人驚訝的是,目前這部作品仍可沿用您最初確立的內(nèi)容架構(gòu)。請問這種基礎(chǔ)是如何構(gòu)筑的?在目前的創(chuàng)作過程中,您用了哪些方法來保證自己的進(jìn)度呢?
高德納:是啊,我確實(shí)是幾乎不間斷地寫計算機(jī)程序超過50年了,平均每周完成多于一個程序。譬如,我剛剛查了電腦,統(tǒng)計出我在今年的持續(xù)學(xué)習(xí)和探索中,到目前為止已經(jīng)寫了74個程序。當(dāng)然,其中某些程序是短小和簡單的,但另外那些可都夠讓我忙上一陣子的。這樣的編程過程,很自然地啟發(fā)了TAOCP的內(nèi)容架構(gòu),我們能依此建立整個計算機(jī)科學(xué)的知識體系。1967年,我跟Peter Naur第一次見面時,我們發(fā)現(xiàn)各自都獨(dú)立地對這一領(lǐng)域提出了完全一致的基本框架。
都過了50年啦,照理說我早該寫完TAOCP才對。不過,我還有很多累積下來的材料,需要20年甚至更多的時間,才可以轉(zhuǎn)化成恰當(dāng)?shù)奈淖帧R虼?,?dāng)看到你問我怎樣保持進(jìn)度時,我都直想發(fā)笑。
要說我還是能有那么一點(diǎn)點(diǎn)進(jìn)度的話,那最主要?dú)w功于采用了“批處理”而非“換入換出”的機(jī)制:在一個時間段內(nèi),我通常只全神貫注地做一件事情。每年我會暫停手上的工作兩次,每次用兩三周的時間閱讀郵寄過來的期刊。我每周都會收到8份左右的期刊,我的秘書會把它們放到盒子里。瀏覽完它們并了解到技術(shù)動向后,我會在自己的文件中加入備注,提醒自己在將來專注于另外的主題時,應(yīng)該閱讀哪些內(nèi)容。
目前,我正在聚精會神在“可滿足性求解器”(SAT solvers)這個令人著迷的領(lǐng)域,最近編寫的20個程序都是面向這個主題的相關(guān)探索的。藉由自己去鉆研資料的手段,我可以更好地將核心思想傳達(dá)給非專家的讀者,并將這些思想跟其他應(yīng)用緊密結(jié)合,就仿佛我的一生都在專職研究可滿足性的求解問題那么自然。幸運(yùn)的是,我現(xiàn)在跟頂級的專家們保持著聯(lián)系,他們自告奮勇幫我檢查寫作中的錯誤。
圖靈社區(qū):我們聽說,您目前還是先寫出手稿,再在計算機(jī)中編輯。然而,您的TeX實(shí)際上顛覆了整個出版行業(yè)。那么,請問您不全用計算機(jī)寫作的原因是什么?您是否有考慮過,未來的電子寫作和閱讀應(yīng)該是怎樣的呢?
高德納:我書寫的速度跟我思維的速度是匹配的,這么一來,就完全不存在任何“瓶頸”。而我打字的速度就比我思考的速度更快,這樣當(dāng)我試圖用鍵盤創(chuàng)作重要內(nèi)容時,就會產(chǎn)生同步問題。(事實(shí)上,我也是先用筆寫下你這10個問題的答案的。此刻,我正在Mac上輸入草稿,并在過程中盡可能修潤行文。)
速度通常不會是最重要的標(biāo)準(zhǔn)??茖W(xué)一般都難以迅速解釋或迅速領(lǐng)會。我知道我的書是不容易讀,不過要知道的是,如果不是我精雕細(xì)琢地寫的話,它們會比現(xiàn)在難讀一百倍。
圖靈社區(qū):在《編程人生》中,您討論到黑盒的問題時,評論道:“程序里有黑盒是不壞,但通常來說,如果可以看到盒子里的東西,弄清楚黑盒內(nèi)部的機(jī)理,那就可以改進(jìn)它?!蔽覀冇X得這里似乎蘊(yùn)含著黑客的精神。如果是的話,您是否可以具體描述一下您心目中的黑客精神?
高德納:關(guān)于黑客精神,Steven Ley那本了不起的《黑客》中描述得最好。那本書會同時地從眾多層面來審視一個問題,并尋找新的形式來組合基本的概念。
圖靈社區(qū):您從來都以極客(geek)自詡,論文集第8卷《娛樂和游戲論文集》(Selected Papers on Fun and Games)中有一章是“極客藝術(shù)品”(geek art)。大部分中國讀者都還無緣讀到這本書,是否可以簡單介紹一下,“極客藝術(shù)品”所包含的內(nèi)容呢?
高德納:你們應(yīng)該翻譯那本書啊,我說真的!
簡單說,能稱得上“極客藝術(shù)品”的應(yīng)該是這樣的藝術(shù)作品:它不僅僅能因其美麗的顏色、質(zhì)感和形式而打動我,同時也因能其對技術(shù)的呈現(xiàn)方式而愉悅我的另一半大腦。
例如,我最珍愛的極客藝術(shù)藏品中的一件,正是Bob Sedgewick(即Robert Sedgewick,《算法》的作者——譯注)送給我的,那是1975年,他完成關(guān)于快速排序的博士論文的時候。那是一件瑰麗的雙層編織的紡織品,圖案正是他在研究中發(fā)現(xiàn)的其中一個數(shù)學(xué)模型。這個作品是他親自在提花織機(jī)上手工織造的。類似的作品還有我妻子做給我的一張巧奪天工的被子,上面的圖案是以愛因斯坦質(zhì)數(shù)的迷人模型為基礎(chǔ)的。去年,我自己也利用零碎時間做了一些作品,那是用色彩斑斕的線、櫻桃木和黃銅釘交錯而成的“凱爾特騎士之旅”。
我的很多朋友都已經(jīng)培養(yǎng)出對極客藝術(shù)品的品味。我聽說,Nathan Myrvold已經(jīng)搜羅了幾百件這樣的作品,其中大部分都是為他的居室專門制作的。
圖靈社區(qū):您的TeX系統(tǒng)是開源的,您本人也被認(rèn)為是開源的重要實(shí)踐者。在曾經(jīng)的訪談中,您說“過去的幾十年間,開放源代碼的成功可能是計算機(jī)領(lǐng)域中唯一沒使我覺得驚訝的事情?!蹦敲矗诤竺娴膸资?,您預(yù)想開源運(yùn)動將會有怎樣的發(fā)展呢?
高德納:請別讓我預(yù)測未來,也不要相信別人在這個問題上的說三道四。
回到開源,怎么說呢,有一件事是我希望發(fā)生(并且很奇怪為什么尚未發(fā)生的)。換言之,我希望人們可以找到一種比較簡單的途徑,讓用戶能夠定制他們的開源發(fā)行版。這么一來,所有人都可以使得系統(tǒng)根據(jù)他們自己的計算機(jī)進(jìn)行優(yōu)化的調(diào)適,因?yàn)橛脩羰峭ㄟ^編譯自己拿到的源代碼,而不是僅僅安裝(已經(jīng)編譯好的、未根據(jù)系統(tǒng)做好編譯優(yōu)化的——譯注)二進(jìn)制包。開源系統(tǒng)有一種尚未開發(fā)的潛力,會使它大大好于任何閉源的系統(tǒng),因?yàn)閷S械摹⑹孪却虬亩M(jìn)制成品必須在可用硬件限制的條件下照顧到最差情況。舉例來說,emacs對于我來說運(yùn)行得又好又快,但我懷疑我如果能毫無畏懼地在自己的機(jī)器上編譯它的話,它運(yùn)行起來會快得多。我沒空去學(xué)習(xí)Ubuntu這個發(fā)行版的所有底層復(fù)雜細(xì)節(jié)。(我還真的重新編譯過Linux內(nèi)核——但只有在向?qū)职咽值闹敢虏诺靡酝瓿?。?br> 圖靈社區(qū):雖然,TAOCP代表著您的主要成就,連您目前的頭銜都是“計算機(jī)程序設(shè)計藝術(shù)榮休教授”;但也有很多人認(rèn)為,您花十年時間開發(fā)的TeX,對世界的影響更大。您對此有何看法?是否可以總結(jié)一下,算法研究和實(shí)際編程之間的聯(lián)系和各自作用呢?
高德納:我對于把一項(xiàng)有益的活動排在另一項(xiàng)之前這種事,不十分感冒。例如,生物學(xué)家不應(yīng)該把所有時間都花在攻克癌癥和其他重癥的療法上。如果他們中的一些人僅在較輕微的問題上取得了重大進(jìn)展——比如,消滅了頭皮屑——他們也許實(shí)際上會帶給更多人更持久的快樂。
長遠(yuǎn)來看,TeX使得文學(xué)編程成為了可能這件事,也許最終會給更多人的生活帶來積極的影響,這一點(diǎn)強(qiáng)過我所做的任何其他工作,因?yàn)槲膶W(xué)化的程序給它的用戶帶來的改進(jìn)是巨大的。
但我們還是別拿蘋果去和橘子比較了。我認(rèn)為生活中的每一個方面都是值得改進(jìn)的,而我也很高興能在自己生活的場所和時代中以多種不同的方式做出貢獻(xiàn)。
圖靈社區(qū):《具體數(shù)學(xué):計算機(jī)科學(xué)基礎(chǔ)(第2版)》(Concrete Mathematics: A Foundation for Computer Science,2E)的中文版已經(jīng)出版。是否可以談?wù)勊膶懽鞒踔?,以及它跟TAOCP的關(guān)系?
高德納:《具體數(shù)學(xué)》是一份“綱領(lǐng)”,它的內(nèi)容是我對于數(shù)學(xué)諸多方面應(yīng)該如何教與學(xué)的思考。熟練掌握代數(shù)公式的基礎(chǔ)技能,對我來說始終都是關(guān)鍵所在。這些內(nèi)容在_TAOCP_里都有討論,但只能是蜻蜓點(diǎn)水;在斯坦福大學(xué)的課程中,我得以深入更多的細(xì)節(jié),而那些課程都被囊括在這本書中了。
圖靈社區(qū):“高德納”似乎是您僅有的一個外文姓名,這個名字讓中國讀者很有親切感。我們只知道這個名字是儲楓教授(香港城市大學(xué)計算機(jī)科學(xué)系主任,圖靈獎得主姚期智的夫人——譯注)在您1977年訪華前夕為您取的。給我們談?wù)勥@個名字的背后的故事吧?
高德納:儲楓告訴我,之所以選擇“高”作為我的中國姓,是因?yàn)槲覀€子高,還因?yàn)檩o音G和K讀起來差不多?!暗录{”兩個字,顯而易見,是“Donald”不錯的諧音,并且有著體面的意義。她還給我的愛人Jill起了“高精蘭”這個名字。
我的兩個孩子John和Jen也和我們一起來到了中國,他們當(dāng)時分別是12和11歲——他們和中國孩子們在城市公園里玩了一些不需要語言交流的游戲。儲楓給他們也分別起了“高小強(qiáng)”和“高小珍”的名字。
圖靈社區(qū):我們已經(jīng)翻譯了關(guān)于您的管風(fēng)琴的一篇介紹,也讀到您在訪談中曾經(jīng)把寫作比喻成演奏管風(fēng)琴??梢哉?wù)勔魳穼δ詈脱芯康挠绊憜幔?br> 高德納:音樂是我的主要副業(yè),也是《娛樂和游戲論文集》一書其中四個章節(jié)的主要內(nèi)容。閑下來的時間,在我在TAOCP上連續(xù)幾天工作并需要休息一下時,最近我開始(盡管只是試驗(yàn)性地)著手譜寫新的管風(fēng)琴樂曲,也算是終于兌現(xiàn)了一些我在上世紀(jì)60年代就擬訂了的計劃。盡管我知道別人來做這些事的話,可以比我高明得多,但內(nèi)心卻有一個聲音在催我歌唱!
圖靈社區(qū):最后,送上所有中國讀者的最誠摯問候,祝您保持健康,如期完成TAOCP的下一卷!
高德納:再次感謝你們富有啟發(fā)的問題。
|