高納德設置了一個懸賞遊戲。若是有人挑出了他編寫的TEX程序的錯誤,他就給挑錯者獎勵。第一個錯誤值2.56美圓,第二個值5.12美圓,第三個值10.24美圓。聽說,這張10.24美圓的支票是他迄今爲止爲此簽出的最後一張。程序員
高納德是美國計算機科學家唐納德·克努斯(DonaldKnuth)的中文名。這位「現代計算機科學的鼻祖」是計算機界的傳奇人物。他在 年僅36歲時就得到了圖靈獎,成爲該獎歷史上最年輕的獲獎者。他的獲獎做品《計算機程序設計藝術》原計劃出七卷,至今纔出到第四卷。儘管如此,它依然與愛 因斯坦的《相對論》、狄拉克的《量子力學》、費曼的《量子電動力學》等並列,被《科學美國人》雜誌評選爲20世紀最重要的12本物理學著做之一。算法
1 早期經歷編程
「是男人就得-67」工具
1938年高納德出生於美國密爾沃基。他的超凡智力在8歲時就顯示出來了。當時,一家糖果商在孩子們當中舉辦了一項有趣的比賽,要求用 「Ziegler’s GiantBar」裏面的字母,寫出儘量多的單詞。裁判事先準備了一份2500個單詞的列表,可小高納德使人驚訝地寫出了4500多個單詞。他爲學校贏 得一臺電視機,還爲每一個同窗贏得一根棒棒糖。他的賽後感言是,我還能寫出更多。學習
高納德就讀的大學是凱斯理工學院。1956年,他在這裏第一次使用了IBM650,並開始學習編程。不久以後,高納德就對編程有了許多體 會。當時高納德還兼職管理學校的籃球隊,因而他編寫了一個程序,可以自動評估每名球員的價值,令球隊的教練很是欣賞,還引來了CBS電視臺。後來高納德、 球隊教練和IBM650的合影還被印到了IBM650的宣傳冊上。1960年,高納德以公認出色的成就,打破了學校的慣例,同時得到了學士和碩士兩個學 位。測試
隨後,高納德進入伯克利攻讀數學博士學位。在此期間,他的編程生涯也正式開始了。他當時所寫的程序中最值得一提的,是對ALGOL60編 譯器提出的測試方法。ALGOL60常常會由於編譯器不成熟而出故障。高納德編寫了一段很是簡單的測試程序,江湖人稱「Man or boytest」,翻譯成中文就是「是男人就得-67」。高納德說,只要用ALGOL60編譯器來編譯個人這段程序,若是運行結果等於-67,就說明這個 編譯器是純爺們兒。字體
2 獲圖靈獎翻譯
蓋茨爲他「作推廣」設計
1963年,25歲的高納德拿到了博士學位,並留在伯克利任教。在畢業前一年,高納德已經由於設計編譯器而響譽計算機行業。著名的 Addison-Wesley出版社向他約稿,請他寫一本關於編譯器和程序設計方面的書。這原本是很日常的一件事,但不久以後,他就把這件事作成了計算機 科學史上的奇觀。1962年約的稿,高納德一直寫到1966年還沒交。編輯急了,找到高納德,說這都4年了你寫了多少啊。高納德說,才寫3000頁手稿。 編輯大囧,忙問都這麼長了怎麼不交稿?答曰,我還沒寫到正題呢。編輯崩潰了,說那你出個多卷本吧……遊戲
把一件日常的事作到人間極致,這就是高納德。他不是故弄玄虛,他的內心攢着一股勁兒,要寫一部與牛頓的《天然哲學的數學原理》相媲美的鉅著。 1968年,《計算機程序設計藝術》(TAOCP)的第一卷正式出版了。這一卷的標題叫《基本算法》,但難度卻並不低。聽說比爾·蓋茨曾經花了幾個月的時 間讀完這一卷,而且作了大量的練習,而後他說,若是你想成爲一個優秀的程序員,那就去讀這個《基本算法》吧。高納德本人的說法更犀利:要是看不懂,就別當 程序員。
同年,高納德跳槽到斯坦福大學,並當上了教授。一年後,TAOCP第二卷正式出版。1973年,這本書出到了第三卷。這三卷書被計算機界驚爲「 神做」,在最初的幾年內就賣出去100多萬套。按照計劃,這套書一共是七卷,可是如今剛剛寫完三卷,就已經是震古爍今。震到什麼程度呢,連圖靈獎頒獎委員都 坐不住了。按照慣例,圖靈獎的獲獎者都是成就等身,要通過時代的檢驗。但此時,美國計算機協會便決定當即爲其頒發圖靈獎。這對高納德來講,無疑是個殊榮, 這一年他只有36歲。至今,他仍保持着圖靈獎最年輕獲獎者的紀錄。
3 中途輟筆
圓周率充當序列號
高納德在獲此殊榮以後,再一次令世界大跌眼鏡:他宣佈今後歇筆了,由於排版工具太差,破壞了這套書的美。這一動做讓外界十分震驚。有人說,高德 納江郎才盡,見好就收;有人說,圖靈獎對前三卷的評價太高了,高納德只好找理由撤了;還有人說,獲獎以後中止寫做,充分體現了他寫書的目的就是爲了功利。
可高納德在輟筆的10年間竟然創造了三個重要的成果:字體設計系統METAFONT、文學化編程(Literate Programming),以及其中影響最大的排版系統TEX。
在Word系統中寫科學論文是一件很辛苦的事,你須要調整格式,也很難表現數學式。可是在TEX中,這些麻煩幾乎徹底不存在,只要載入樣式文件,排版就自動完成了。TEX是一場出版界的革命,直到如今還是全球學術排版的不二規範。
TEX做爲一個軟件產品,也使人歎爲觀止。它的版本號不是天然數列,也不是年份,而是從3開始,不斷逼近圓周率(目前最新版本是 3.1415926)。高納德再一次用行動宣告,這個東西趨近完美,不可能再有什麼大的改進了。他還設立了獎金:誰發現TEX的一個錯誤,就付他2.56 美圓,第二個錯誤5.12美圓,第三個10.24美圓……以此類推。結果直到今天,他也沒有爲此付出多少錢,可見TEX通過了怎樣的千錘百煉。他設置的另 一個獎項是找出其著做中錯誤的人能獲得2.56美圓,由於「256美分恰好是十六進制的一美圓」。聽說,獲獎者將有他簽名的支票視爲珍寶,並不兌現。
4 迴歸寫做
計算機王者歸來
歇筆十年的高納德,手捧這三項成果重出江湖,打消了一切質疑。這時他纔對十年前的歇筆事件作了一個輕描淡寫的解釋:一我的要想把事情作得漂亮,就必需要跟上帝保持和諧,如今,上帝終於讓我去寫四捲了。
1992年,高納德爲了專心寫做,宣佈提早退休,並停用電子郵箱(此人從1975年就開始玩電郵了)。高納德一共帶了28位博士生,他以爲28 這個數字很好,因而便宣佈再也不收學生了。儘管如此,他仍然爲想要師從於他的人們留下了一個盼頭:他開了一門公開課,每次會提出一個問題,若是誰能快速解出 來,高納德就會爲他的博士論文簽名。不知道哪位後起之秀可以得到如此殊榮呢,咱們拭目以待吧。
2008年,在TAOCP的前三卷面市30年以後,第四卷終於面世了。而高納德本身卻已經是白髮蒼蒼的古稀老人了。他對計算機科學的熱愛,使他爲這套叢書耗費了一輩子的心血。