現代電腦科學先驅高德納(Donald Knuth)成長於電腦程式設計剛起步的年代,當時13歲的他在一間糖果公司舉辦的競賽中展現了這方面的才華,該競賽要求參賽者找出所有以糖果名稱「Ziegler’s Giant Bar」字母組成的單字。這個有明確定義的問題正是他所喜愛的事情,高德納說:「我有某種強迫症傾向,我被數字和離散問題吸引,也喜歡鑽研大量資訊集合(例如網際網路檔案館)。」
高德納在地下室有條不紊地翻閱家裡厚達2000頁的字典,甚至讓父母相信他生病了,好為自己爭取兩個禮拜在家休息的時間研究這道題目。他在索引卡標注了諸如「Aa」、「Ab」和「Ba」可能的單字開頭後,接著在字典中各個欄目中標注符合條件的單字。他在過程中發現可以直接跳過糖果名稱裡沒有的字母,例如直接跳過「C」開頭的欄目,或是「B」開頭但接續「U」的字。
這場比賽的裁判預期大約有2000個單字,但最終高德納找到超過4700個單字並贏得了比賽。高德納日後獲得了更多殊榮,包括第一屆的格蕾絲‧默里‧霍珀獎(Grace Murray Hopper Award)、美國國家科學獎章(National Medal of Science)和圖靈獎(A.M. Turing Award)。
高德納把他對離散數學問題與大量資訊集合的愛好寫進了巨著《電腦程式設計藝術》(The Art of Computer Programming)中,這是他在1962年讀研究所時開始撰寫的系列書籍,至今仍未完成。高德納在1968年出版了第一卷,現在的版本已經是第42版。1969年出版了第二卷,1973年出版了第三卷。當時,他是史丹佛大學的電腦科學教授,他擔心教授工作會妨礙自己完成這部巨著,於是從1990年開始請假,然後在1993年退休,預計用剩下時間完成其他七卷,高德納至今仍在持續書寫與補充。
《電腦程式設計藝術》不僅是一本操作手冊,高德納更愛講述電腦科學的故事,他說:「人與人之間最好的交流方式就是講故事。」
除了這部代表作品以外,高德納在電腦科學的故事中還扮演了另一個角色。1970年代,當出版商寄給他第二卷第二版的校稿文件時,他被書頁上雜亂無章的數字、符號和文字排版與外觀搞得心煩意亂。他決定飛到洛杉磯看一台能數位化印刷精美刊物的機器,希望用它來提升與改善旁人的美感,但機器的價格實在太昂貴只好作罷。儘管如此,那趟旅程啟發了高德納開始開發一種電腦語言,目的是以數位方式來排版數學公式。
回到史丹佛大學後,高德納把《電腦程式設計藝術》擱置了近十年,並開發出複雜且改變業界規則的程式「TeX」,實現在桌上型電腦進行數位排版的目標。他把「TeX」做成開源程式,讓專業的數學家、電腦科學家、經濟學家、工程師、語言學家、統計學家以及其他無法用鍵盤打出專業符號或複雜公式的的人受益匪淺。在一個電腦程式往往轉瞬即逝的時代,TeX一直是讓科學論文變得更漂亮,也更容易被專家閱讀與理解的黃金標準。
高德納對於講故事的興趣也促使他發展了一種文學編程哲學——一種將電腦程式寫成文學散文的方法。識字的程式會在原始程式碼中穿插一些以熟悉的語言(例如英語)編寫的優美散文,原始程式碼提供了功能與效率,而說明則面向人類讀者而非電腦。使得任何日後要更新或調整的程式設計師從不必耗費大量時間,就能迅速理解原始設計者的演算法、設計方式和概念。高德納是一名電腦科學家,而他深知文字的重要性。
2020年,Quanta Magazine在採訪高德納教授時,他指出:「《電腦程式設計藝術》是一份宣言。它描述了我喜歡怎麼做數學,以及我希望別人怎麼教我。從第一頁開始,我講述了演算法的故事。當時的大多數教科書都沒有探討科學中人性的一面,他們只會說『這就是化學原理』或『這就是物理原理』。因此,我講科技的故事,不只呈現事實,還增加了戲劇性。如果你知道發現的順序,科學就會變得容易許多。再者,我無法抗拒好故事的誘惑。我覺得自己不是先驅,而是記者。」
在談到TeX的設計理念時,高德納說:「我從未想過要取代設計師,我只是想為後代記錄我們當時做了什麼。TeX讓設計具可複製性,在1970年代發表的幾乎每一篇數學論文看上去都很糟,下標字體甚至會跟主線文字不一樣。我知道電腦程式設計能讓書籍排版重新變得好看。」
高德納在1978年4月完成了TeX試用版的調校,五月時擁有10位使用者,六月時達到100位,到了七月直接躍升為1000位,而且每位使用者使用後都會給出回饋,告訴他:「你必須新增某項功能。」五年後,高德納發佈了人們現在使用的TeX版本。雖然程式一開始是為美國人所設計,但接著歐洲人也開始使用,因此在1980年代高德納讓程式適用於全世界的語言。
對高德納來說,創新與開發是生活的一部分,直到今天依然如此,他說:「我平均每週會寫五個新程式。詩人必須寫詩,而我必須寫程式。」
當談到高德納生活的其他行程安排時,他說:「我的行程排定原則是先做待辦清單上我最討厭的事情。這樣週末來臨時,我就會很開心。」但是,要怎麼克服做最討厭的事情呢?高德納回答:「一個人的成功是由頂點的最小值所決定,而不是頂點的最大值。如果你可以把某件事做得很好,但卻在一些事情上失敗,後者就會拖你後腿。如果你能把所有事情都做好,那你的生活就會過得很好。所以我嘗試學習如何克服別人覺得不愉快的事情。」
記者最後問了高德納:「如果你完成了《電腦程式設計藝術》會有任何影響嗎?」
他回答:「哦,我意識到電腦科學會繼續存在與發展。有一種情況是,每個人都停止使用現有的電腦,轉向學習機器學習和量子電腦,這樣我就能結束非量子電腦的故事。如果某天我可以說『故事結束了』,我會很開心。這是最容易想像的結局,但我不會回答這個問題。」
他繼續說:「我想繼續以我所知道的最好方式寫出優質內容,並涵蓋我原創的想法內容。我會盡我所能去寫,但不是說我必須在規定的期限內完成。我是如此幸運地駕馭著海浪,出生在一個適合我的特別時代。我現在已經實現了自己所有的人生目標,除了《電腦程式設計藝術》以外。現在的情況是,無論我找到什麼樣的故事,我都要繼續講,然後把它們傳遞下去。」
原文出處:Quanta