圖靈訪談系列之八:對話歸隱的大師——Donald E. Knuth(高德納)

turingbooks發表於2020-04-07

電腦科學泰斗Donald E. Knuth(高德納)歸隱已近20載,不問世事,潛心修訂並繼續創作煌煌鉅著《計算機程式設計藝術》(The Art of Computer Programming)多卷本。

圖靈社群藉卷4A影印版出版之機,有幸邀得大師接受關於此書的訪談,並在多位社群成員留言提問的幫助下,完成了這次珍貴的訪談。

英文版連結

高博 何逸勤 翻譯

圖靈社群:很多中國程式設計師都將您視為電腦科學領域的神祗。而這樣的情況,又恰恰出現在盛行無神論的中國,很有意思。我們已經清楚您寫作《計算機程式設計藝術》(以下簡稱TAOCP)的初衷和經歷,也知道您關於“信仰與科學的關係”的系列講座曾大受歡迎,因此對您的寫作和信仰之間的關係很感興趣。能否談一下,信仰和上帝在TAOCP的創作過程中,給您帶來的是哪些幫助呢?

高德納:電腦科學是既壯觀又幽美的,我嘗試儘自己所能,以最恰當的方式來解釋我所瞭解的某些片斷。很顯然,我自己並沒有任何超自然能力,但的確很喜歡講述那些似乎靜靜地等待著人們去講出來的故事。寫書跟講故事十分類似。

此外,雖然電腦科學非常美妙,但它也不可能包辦一切!我相信,總有一些神祕的東西是超越人類的理解而存在的。

信仰是很私人的東西,它涵蓋了一些永遠無法證明的概念。因此,本人在信仰問題上的看法,我並不指望每個人都能同意。我認為,上帝希望我能創造某些成果,而這些東西能夠啟發其他人去創造其他成果。這就是我的宗教生活和科學生活之間的主要關係。

圖靈社群:對您耗費幾十年的時間創作的TAOCP,我們代表所有已經和即將從中獲益的中國讀者,向您致以誠摯的感謝。到現在為止,這部著作已經創作了半個世紀。這樣的成書過程,讓我們想起歌德的《浮士德》。令人驚訝的是,目前這部作品仍可沿用您最初確立的內容架構。請問這種基礎是如何構築的?在目前的創作過程中,您用了哪些方法來保證自己的進度呢?

高德納:是啊,我確實是幾乎不間斷地寫計算機程式超過50年了,平均每週完成多於一個程式。譬如,我剛剛查了電腦,統計出我在今年的持續學習和探索中,到目前為止已經寫了74個程式。當然,其中某些程式是短小和簡單的,但另外那些可都夠讓我忙上一陣子的。這樣的程式設計過程,很自然地啟發了TAOCP的內容架構,我們能依此建立整個電腦科學的知識體系。1967年,我跟Peter Naur第一次見面時,我們發現各自都獨立地對這一領域提出了完全一致的基本框架。

都過了50年啦,照理說我早該寫完TAOCP才對。不過,我還有很多累積下來的材料,需要20年甚至更多的時間,才可以轉化成恰當的文字。因此,當看到你問我怎樣保持進度時,我都直想發笑。

要說我還是能有那麼一點點進度的話,那最主要歸功於採用了“批處理”而非“換入換出”的機制:在一個時間段內,我通常只全神貫注地做一件事情。每年我會暫停手上的工作兩次,每次用兩三週的時間閱讀郵寄過來的期刊。我每週都會收到8份左右的期刊,我的祕書會把它們放到盒子裡。瀏覽完它們並瞭解到技術動向後,我會在自己的檔案中加入備註,提醒自己在將來專注於另外的主題時,應該閱讀哪些內容。

目前,我正在聚精會神在“可滿足性求解器”(SAT solvers)這個令人著迷的領域,最近編寫的20個程式都是面向這個主題的相關探索的。藉由自己去鑽研資料的手段,我可以更好地將核心思想傳達給非專家的讀者,並將這些思想跟其他應用緊密結合,就彷彿我的一生都在專職研究可滿足性的求解問題那麼自然。幸運的是,我現在跟頂級的專家們保持著聯絡,他們自告奮勇幫我檢查寫作中的錯誤。

圖靈社群:我們聽說,您目前還是先寫出手稿,再在計算機中編輯。然而,您的TeX實際上顛覆了整個出版行業。那麼,請問您不全用計算機寫作的原因是什麼?Dr. Dobbs在評價TAOCP 4A的時候,提到“正如前幾卷TAOCP那樣,最新的這一卷也是濃縮了一個主題的精華內容。基於其高密度的內容和描述,本書是近年來屈指可數的必須在印刷版格式下閱讀的計算機圖書之一。書中為數龐大的數學註釋,將使所有電子格式束手無策,PDF版就像一批處處寫滿文字的JPEG,難以卒讀。”您是否有考慮過,未來的電子寫作和閱讀應該是怎樣的呢?

高德納:我書寫的速度跟我思維的速度是匹配的,這麼一來,就完全不存在任何“瓶頸”。而我打字的速度就比我思考的速度更快,這樣當我試圖用鍵盤創作重要內容時,就會產生同步問題。(事實上,我也是先用筆寫下你這10個問題的答案的。此刻,我正在Mac上輸入草稿,並在過程中儘可能脩潤行文。)

速度通常不會是最重要的標準。科學一般都難以迅速解釋或迅速領會。我知道我的書是不容易讀,不過要知道的是,如果不是我精雕細琢地寫的話,它們會比現在難讀一百倍。

圖靈社群:《程式設計人生》中,您討論到黑盒的問題時,評論道:“程式裡有黑盒是不壞,但通常來說,如果可以看到盒子裡的東西,弄清楚黑盒內部的機理,那就可以改進它。”我們覺得這裡似乎蘊含著黑客的精神。如果是的話,您是否可以具體描述一下您心目中的黑客精神?

高德納:關於黑客精神,Steven Ley那本了不起的《黑客》中描述得最好。那本書會同時地從眾多層面來審視一個問題,並尋找新的形式來組合基本的概念。

圖靈社群:您從來都以極客(geek)自詡,並曾在訪談中提到,論文集第8卷《娛樂和遊戲論文集》(Selected Papers on Fun and Games)中有一章是“極客藝術品”(geek art)。大部分中國讀者都還無緣讀到這本書,是否可以簡單介紹一下,“極客藝術品”所包含的內容呢?

高德納:你們應該翻譯那本書啊,我說真的!

簡單說,能稱得上“極客藝術品”的應該是這樣的藝術作品:它不僅僅能因其美麗的顏色、質感和形式而打動我,同時也因能其對技術的呈現方式而愉悅我的另一半大腦。

例如,我最珍愛的極客藝術藏品中的一件,正是Bob Sedgewick(即Robert Sedgewick,《演算法》的作者——譯註)送給我的,那是1975年,他完成關於快速排序的博士論文的時候。那是一件瑰麗的雙層編織的紡織品,圖案正是他在研究中發現的其中一個數學模型。這個作品是他親自在提花織機上手工織造的。類似的作品還有我妻子做給我的一張巧奪天工的被子,上面的圖案是以愛因斯坦質數的迷人模型為基礎的。去年,我自己也利用零碎時間做了一些作品,那是用色彩斑斕的線、櫻桃木和黃銅釘交錯而成的“凱爾特騎士之旅”。

我的很多朋友都已經培養出對極客藝術品的品味。我聽說,Nathan Myrvold已經蒐羅了幾百件這樣的作品,其中大部分都是為他的居室專門製作的。

圖靈社群:您的TeX系統是開源的,您本人也被認為是開源的重要實踐者。在曾經的訪談中,您說“過去的幾十年間,開放原始碼的成功可能是計算機領域中唯一沒使我覺得驚訝的事情。”那麼,在後面的幾十年,您預想開源運動將會有怎樣的發展呢?

高德納:請別讓我預測未來,也不要相信別人在這個問題上的說三道四。

回到開源,怎麼說呢,有一件事是我希望發生(並且很奇怪為什麼尚未發生的)。換言之,我希望人們可以找到一種比較簡單的途徑,讓使用者能夠定製他們的開源發行版。這麼一來,所有人都可以使得系統根據他們自己的計算機進行優化的調適,因為使用者是通過編譯自己拿到的原始碼,而不是僅僅安裝(已經編譯好的、未根據系統做好編譯優化的——譯註)二進位制包。開源系統有一種尚未開發的潛力,會使它大大好於任何閉源的系統,因為專有的、事先打包的二進位制成品必須在可用硬體限制的條件下照顧到最差情況。舉例來說,emacs對於我來說執行得又好又快,但我懷疑我如果能毫無畏懼地在自己的機器上編譯它的話,它執行起來會快得多。我沒空去學習Ubuntu這個發行版的所有底層複雜細節。(我還真的重新編譯過Linux核心——但只有在嚮導手把手的指引下才得以完成。)

圖靈社群:雖然,TAOCP代表著您的主要成就,連您目前的頭銜都是“計算機程式設計藝術榮休教授”;但也有很多人認為,您花十年時間開發的TeX,對世界的影響更大。您對此有何看法?是否可以總結一下,演算法研究和實際程式設計之間的聯絡和各自作用呢?

高德納:我對於把一項有益的活動排在另一項之前這種事,不十分感冒。例如,生物學家不應該把所有時間都花在攻克癌症和其他重症的療法上。如果他們中的一些人僅在較輕微的問題上取得了重大進展——比如,消滅了頭皮屑——他們也許實際上會帶給更多人更持久的快樂。

長遠來看,TeX使得文學程式設計成為了可能這件事,也許最終會給更多人的生活帶來積極的影響,這一點強過我所做的任何其他工作,因為文學化的程式給它的使用者帶來的改進是巨大的。

但我們還是別拿蘋果去和橘子比較了。我認為生活中的每一個方面都是值得改進的,而我也很高興能在自己生活的場所和時代中以多種不同的方式做出貢獻。

圖靈社群:《具體數學:電腦科學基礎(第2版)》(Concrete Mathematics: A Foundation for Computer Science,2E)的中文版同樣會由圖靈出版。是否可以談談它的寫作初衷,以及它跟TAOCP的關係?

高德納:《具體數學》是一份“綱領”,它的內容是我對於數學諸多方面應該如何教與學的思考。熟練掌握代數公式的基礎技能,對我來說始終都是關鍵所在。這些內容在TAOCP裡都有討論,但只能是蜻蜓點水;在史丹佛大學的課程中,我得以深入更多的細節,而那些課程都被囊括在這本書中了。

圖靈社群:“高德納”似乎是您僅有的一個外文姓名,這個名字讓中國讀者很有親切感。我們只知道這個名字是儲楓教授(香港城市大學電腦科學系主任,圖靈獎得主姚期智的夫人——譯註)在您1977年訪華前夕為您取的。給我們談談這個名字的背後的故事吧?

高德納:儲楓告訴我,之所以選擇“高”作為我的中國姓,是因為我個子高,還因為子音G和K讀起來差不多。“德納”兩個字,顯而易見,是“Donald”不錯的諧音,並且有著體面的意義。她還給我的愛人Jill起了“高精蘭”這個名字。

我的兩個孩子John和Jen也和我們一起來到了中國,他們當時分別是12和11歲——他們和中國孩子們在城市公園裡玩了一些不需要語言交流的遊戲。儲楓給他們也分別起了“高小強”和“高小珍”的名字(見卷2索引)。

圖靈社群:我們已經翻譯了關於您的管風琴的一篇介紹,也讀到您在訪談中曾經把寫作比喻成演奏管風琴。可以談談音樂對您生活和研究的影響嗎?

高德納:音樂是我的主要副業,也是《娛樂和遊戲論文集》一書其中四個章節的主要內容。閒下來的時間,在我在TAOCP上連續幾天工作並需要休息一下時,最近我開始(儘管只是試驗性地)著手譜寫新的管風琴樂曲,也算是終於兌現了一些我在上世紀60年代就擬訂了的計劃。儘管我知道別人來做這些事的話,可以比我高明得多,但內心卻有一個聲音在催我歌唱!

圖靈社群:最後,送上所有中國讀者的最誠摯問候,祝您保持健康,如期完成TAOCP的下一卷!

高德納:再次感謝你們富有啟發的問題。

原文來自:圖靈社群


相關閱讀:

圖靈社群翻譯關於高德納教授的文章

圖靈訪談系列之一:陳世欣談產品經理與社群

圖靈訪談系列之二:喬樑談持續交付

圖靈訪談系列之三:田春談Lisp

圖靈訪談系列之四:松本行弘談Ruby 視訊

圖靈訪談系列之五:韓冀中談Hadoop

圖靈訪談系列之六:Gary Rosenzweig談ActionScript遊戲開發

圖靈訪談系列之七:吳朱華談雲端計算和創業

圖靈訪談系列之九:CNode社群談Node.js技術及生態

相關文章