1960年,22歲的小高畢業了,獲得數學學士學位。
但是他的本科學業如此出色,俄亥俄州凱斯理工學院教師們投票一致同意,同時授予他碩士學位!

人家小高完全不偏科,不但數學好,還妙筆生花,寫得一手好文章,你說氣人不氣人。
他中學時就擔任學校校報的編輯,大學更進一步,主編了《工程與科學評論》,獲得了1959年國家最佳技術雜誌獎。
小高不但作文好,計算機也玩得很溜,在那個很多人不知道計算機為何物的60年代,小高就為學校籃球隊編寫了一個程序,用於統計每個人在比賽中的投籃、籃板、防守、搶斷、犯規等情況,然後給每個人都計算出得分,依次為依據挑選球員,派球員上場。

依靠這套程序,小高帶領球隊獲得了全美大學生聯賽的冠軍,這可能是最早的大數據的應用案例吧。
這個籃球程序要在IBM650計算機上運行, IBM一看樂了,這可是宣傳自家機器的好機會啊,立刻跑來拍了一個紀錄片《電子教練》:
1961年,博士一年級的小高一邊讀書,一邊攬活賺外快。

不過他的副業可不是什麼圖書管理系統,學生信息系統這種爛大街的東西。
要玩就玩大的,他整了個Algol語言編譯器,一下子賺了5000美元!

第二年暑假,他又寫了一個編譯器,這次賺了15000美元,比加州理工學院的助理教授工資都高。
這就太可怕了,60年代,會編程的都沒幾個,更別說編譯器了。
有家創業公司找到他,想拉他入伙,給他開了10萬美元的薪水(60年代的10萬至少相當於現在的百萬美元了吧?),但是被小高拒絕了。
因為小高真正的發現了自己的樂趣所在:在計算機算法中發現數學原理。
數學大神,計算機大神,寫作高手,看起來已經非常完美了,但是和小高的一個品質比起來,這些技能都要退居次席。
有了專注力,求伯君才能在深圳一間酒店中,夜以繼日用匯編寫出第一版WPS。
有了專注力,Bill Gates 才能24小時坐在電腦前,不眠不休,為牽牛星計算機編寫Basic解釋器。
有了專注力,Linus才能穿着睡衣,拉上窗簾,在自己的小黑屋中瘋狂地編寫Linux代碼。
當時,一家糖果公司舉辦了一場比賽,要求從Ziegler’s Giant Bar這個糖果名的字母中自由組合,看看能組成多少單詞。

小高天生就對這種「離散」的數據感興趣,他一看就來了勁兒,謊稱生病,兩周都沒去學校,拿着一本破字典,不分晝夜,孜孜不倦地在其中尋找。
糖果公司預計冠軍能找到2000左右的單詞, 沒想到小高的結果讓他們大跌眼鏡:居然找到了4700多個!
Addison-Wesley以出版計算機領域的教科書出名,得知小高擅長寫編譯器以後,出版社的編輯坐不住了 :「高先生,你寫編譯器這麼厲害,能不能寫一本書,講講怎麼實現編譯器。」

「這主意不錯,我喜歡寫作,你們Addison-Wesley是著名出版社,現在編譯器的書又很匱乏,我們合作吧。」
小高迅速列了一個12章的提綱,摩拳擦掌,準備開始。
但是他很快發現,如果不先發展一套計算機編程的基本理論:算法分析,寫編譯器的書會磕磕碰碰的。
於是,他又找到了編輯:「那個,我覺得應該先寫一本新書,把算法好好講講,叫《算法分析》,你覺得怎麼樣?」
《計算機程序設計藝術》,現在大家知道小高是誰了,大名鼎鼎的高德納啊。

高德納本來只想寫一本,寫着寫着發現,一本根本不夠,需要7卷才能包含所有的主題!
Addison-Wesley 也是豁了出去,那就出吧!
可以看出從第5卷開始,才算進入真正的編譯器相關的知識

如果是普通人,估計也就算了,但是高德納再次發揮了用糖果名拼寫單詞的優秀品質,準備用一生時間和它死磕到底。
既然要寫編譯器相關的書,那必然要涉及到機器,可是計算機發展一日千里,高德納也無法控制,這怎麼辦?

高德納為MIX設計了匯編指令,為它還寫了一個模擬器,這樣就可以在上面執行程序了。
《計算機程序設計藝術》中的實例程序都用MIX的匯編來實現,這對於高德納這樣的大神來說非常簡單。
對普通人來說,尤其是看慣了Python, Java,C等高級語言的同學來說,算法用匯編來寫,這不要了命嗎?
MIX匯編就像一個怪獸,守護在《計算機程序設計藝術》的大門前:「想進入大門,必須經過我這一關!」
1968年,30歲的高納德出版了《計算機程序設計藝術》第一卷,立刻成為經典,引起了學術界和工業界的注意,產生了巨大的影響。
完美主義者高納德說:「 找出一個錯誤,我給你2.56美元,現在書剛出版,找Bug還比較容易,也許你能快速收回買書的成本。」
真的有人找到了錯誤,並且收到了高納德的支票,不過,沒人捨得去兌換,通常都是裝裱起來,留作紀念。

1995年,Bill Gate在採訪中建議,任何認為自己是優秀程序員的人都應該讀一下第一卷。
他說: 「我當時花了好幾個月讀這本書,真是需要很強的自律才行,如果你讀完了,請給我郵寄一份簡歷。」

1968年,30歲的高納德成為斯坦福大學的終身教授,接下來,將會他是最富有成效的5年。
1969年,《計算機程序設計藝術》第二卷出版, 1973年第三卷出版。
1974年美國計算機學會就「迫不及待」的把計算機界的最高獎——圖靈獎——授予高納德,表彰他對算法分析和編程語言設計的重大貢獻。
這一年高納德僅僅36歲 !只靠一套還沒有完成的書就獲得ACM圖靈獎,不但是前無古人,估計也後無來者了。

因為高納德首次把算法複雜度做了量化衡量,提出了決定算法快慢的決定性因素,奠定了計算機算法的基礎,成為全世界計算機領域內的標準。
這套書售價高達幾百美元,但是卻在全世界賣了超過百萬套。
1999年,《美國科學家》雜誌曾將《計算機程序設計藝術》與愛因斯坦的《相對論》、狄拉克的《量子力學》,維納的《控制論》等書並列為20世紀最重要的12本科學類專著,可見此書的歷史地位。

然而令人大跌眼鏡的是,拿到圖靈獎以後,高納德居然宣布暫停寫作,因為他對於新書的排版非常不滿:文字、符號和排列方式實在是難看, 破壞了書的美感!
完美主義者高納德決定暫停寫作,切換身份,成為一名程序員,開發一個強大的計算機排版系統。
最終的成果是開源排版軟件TEX(可能是最早的開源項目了)和 一種字體MetaFont。

TEX和MetaFont改變了出版業, 在全世界有100多萬的擁躉。許多人認為TEX計算機排版系統上的工作是自古騰堡以來對排版的最大貢獻。
TEX的版本號也很有意思,不是數字(3.0, 3.1, 3.2....) ,也不是年份(Windows 95, 98, 2000...)。而是不斷逼近的圓周率 (3.1415926...) ,這從側面反映了軟件幾近完美,不需要做改進了。
高納德說:「最後一次升級是(於我過世後)將版本數改為 π,那時任何餘下的漏洞將被看作程序的功能!
不!他只想讓自己的書看起來更加漂亮,但是他偶然為之的工作卻能抵得上普通人為之奮鬥一輩子,這就是真正的大神吧!
有一天,Richard M. Stallman, Linus Torvalds, 和高納德 三人坐在一起聊誰對計算機世界的影響最大。
Stallman :上帝說是我開發了世界上最好的編輯器Emacs!
Linus : 嗯,上帝說是我開發了世界上最好的操作系統!
60年代末,當我在斯坦福從事AI項目時,每個感恩節我們都會和硅谷的編程高手們舉行編程競賽,McCarthy(人工智能之父)出題, 獎品是好像是一隻火雞。
高德納參與的那一年,把我們都給虐了, 他的代碼無論是程序執行和算法執行都是最快的,並且他用的是一台最慢的批處理機器!
他說:「當我學習編程時,如果每天有五分鐘的時間使用機器,就高興得不得了, 所以必須要讓程序一次運行成功,沒有錯誤,算法設計達到最佳。」
1993年,高德納提前斯坦福退休,住到了學校周邊的一個山上,開始過一種隱士生活。
他覺得電子郵件噪聲太多(垃圾郵件受害者?),不再使用了,由秘書代收,每年會花費幾周時間閱讀訂閱的期刊。
他限制了自己的公開活動,每個月他會從山上下來,在斯坦福大學做一場「計算機思考」的講座。
這一切的目的,都是為了用餘生去完成《計算機程序設計藝術》。

不過相比前3卷,後面的進展確實太慢了,第4卷的第一部4A出版的時候,已經過去將近40年了。
後面還計劃有4B ,4C,4D, 還有第5、6、7卷。
今天高德納已經83歲了,真擔心他寫不完......(完)
最後,再介紹一下我的一個備份號「想躺平的程序員」,防止被人投訴後失聯,請小夥伴們保存一下吧。這個號不會空着,經常會發一下輕鬆有趣的東西,讓大家在緊張的工作之餘樂呵一下。
鑽石舞台 發表在 痞客邦 留言(0) 人氣()