高德納:他是無神論的IT行業裡,唯一的神

高德納, 這位現代計算機科學的鼻祖,是個傳奇的人物。36歲獲得圖靈獎,是該獎歷史上最年輕的獲獎者。他一生髮表150篇論文,解決了計算機領域最重要的3個算法,他的經典鉅著《計算機程序設計藝術》,和愛因斯坦的《相對論》,狄拉克的《量子力學》,費曼的《量子電動力學》一起,被《科學美國人》這本雜誌,評為20世紀最重要的12本書之一。

高德納:他是無神論的IT行業裡,唯一的神

他對印刷自己書的軟件不滿意,當時粗糙的排版軟件已經嚴重影響了他書的質量,於是,他就抽時間做了一套軟件叫 Tex,用來給自己的書排版,目前該軟件已經成了學術界必備的軟件之一,廣泛的應用於數學,物理以及計算機界,能優美的處理複雜的公式。該軟件bug極少,從3.0版本開始,每一次升級以圓周率為基準,往後添加一個數字,由於該軟件非常的穩定,每次升級都是細微的升級,目前的版本是3.14159265。高德納說,在他去世以後,該軟件升級為π版本,從此,軟件中所有的漏洞,都將會成為一個功能。

由於高德納的軟件非常的穩定,很難找到bug,因此他獎勵支票給漏洞發現者,第一個漏洞是1美分,然後2美分,4美分,8美分,這樣以指數的方式增加,目前是327.68美元,也就是說是2^15次方,是該軟件的第15個漏洞。其實,高德納並沒有損失什麼錢,因為收到他支票的人,都把這個支票保存起來了,沒有人真的去銀行兌換這些錢,畢竟這上面可有高德納的親筆簽名啊!

後來,他還獲得了很多獎項,包括美國國家科學獎,馮諾伊曼獎等等,這裡提到了馮諾伊曼,我想以後有機會,我想寫一寫他,這裡只稍微的提一件事情,馮諾伊曼是大科學家,他對二戰有巨大的貢獻,但是在50多歲的時候不幸患了癌症,因為他對美國實在是太重要了,結果美國軍方不惜一切代價要救活他,他的妻子和他的弟弟目睹了搶救的整個過程,真是嚇破了膽子,他們分別立下遺囑說:一旦他們陷入如此境地,千萬不要搶救。如果有讀者是學生,真的可以去學醫學,攻克癌症這個病魔。攻克癌症,諾貝爾獎會跪著發給你。高德納獲得了很多獎以後,還是一如既往的淡泊名利,他的獎盃沒有擺在櫥子裡,而是物盡其用,用來盛水果。

高德納在1938年出生在美國密爾沃基,他的父親是一個大學生,做的職業是小學老師,後來是一所教會高中的老師。每天他的父親都會在教堂裡彈奏管風琴,後來,高德納本人也特別喜歡彈奏管風琴,所以,從這一點,老讀者可能知道,我特別強調一個家庭對孩子的影響。這裡又是一個活生生的例子。他多次談到他父親對他的影響。而且,有一次採訪,他說他最遺憾的事情就是他曾經錄過一些唱片,但是後來被人借走了,就是不肯還他,更要命的是,他忘記了誰借走的,他希望借走的人能還給他。可見,音樂在他的心目中是多麼的重要。

在8年級的時候,一家糖果生產商贊助了一次比賽,要求利用其品牌裡的字母,組成新的單詞,結果,他一下子就給出了4500個單詞,官方給出的標準答案是2500個單詞,他的獲獎感言是:我還能找出更多!他贏得了比賽,獲得了一臺電視機,以及,夠全校同學享用的棒棒糖。

後來上了高中,他又獲得了西屋科學天才獎提名,獲得提名的理由是他獨立提出了一套自創的度量衡體系,比如長度的單位叫“普姿比”,麻煩程度的單位是“Mad”,能量的單位是“whatmeworry”。這個很重要,這個自己定義單位的創舉,很多年後發揮了巨大的作用,他在開發前面我說的Tex排版軟件的時候,有個單位叫優美值,就是看電腦自動排版的優美程度。後來他的這個“美不美”的單位,被多家公司採用,比如Adobe公司的排版軟件,就借鑑了很多高德納的Tex。

在高中時期的高德納,主要的興趣還是音樂,對計算機還沒啥興趣,因為當時他還沒見過計算機。他一直想和他父親一樣,搞音樂,比如吹薩克斯和低號。但是,命運被凱斯理工學院給改變了,這個大學向他提供物理獎學金,問他願不願意學物理,他就去了這個大學學物理,但是,並沒有太大的興趣,在他的微積分老師保羅•岡瑟的勸說下,從物理轉行到數學。

在1956年,他第一次接觸到了計算機,那是一臺IBM650,於是,他算找到了真愛,沒日沒夜的玩了好久,自學成才,成了編程小能手。在寫了很多諸如把一個數分解成素數的乘積,以及自己寫了一個井字棋的遊戲之後。學校籃球隊發現了這個編程天才,在1958年,凱斯學校的籃球隊請他寫一個軟件,根據球員的命中率,搶斷次數,失誤次數等數據,為球員打分,這個軟件,讓籃球隊的教練非常喜歡,在凱斯學校獲得冠軍的那一年,還單獨感謝高德納的軟件,貢獻了一份功勞。後來《新聞週刊》專門寫了一篇報道,IBM也在公司的宣傳畫上,刊登著IBM 650和高德納的合影。

高德納被計算機深深的吸引住了,他說,計算機和音樂有異曲同工之妙,他說,計算機科學和其他領域最大的區別就是在於它不斷的躍變——從微觀的角度上升到宏觀的角度。最終,他說他的從小形成的思維結構導致他和計算機發生了共鳴,他意識到自己應該成為一位計算機科學家。

在1960年,高德納以最優異的成績從凱斯理工學院畢業,由於他的成績實在是太優秀了,校方投票決定,同時授予他數學學士和碩士學位。隨後他去了加州理工學院,讀了3年,拿到了數學博士學位。從加州理工畢業後,學校馬上就把他聘為助理教授,並且在當時計算機先驅布勞斯公司兼職當顧問,當時,布勞斯公司是計算機行業的領跑者,該公司開發了以後著名的Algol 60這個編程語言,高德納功不可沒,他給Algol 60的編譯器寫了一個測試,名字叫 Man or Boy Test, 翻譯為中文就是“純爺們還是小P孩測試”,通過了以後,就是純爺們了。

在1962年,在讀博士高德納的名聲早已經飛出了加州理工,在1962年1月份,Addison-Wesley出版社找到他,問問,能不能寫一本書,編譯器方面的。他欣然答應,結果一寫,寫多了,已經寫了3000多頁。出版社一看,本來讓你寫一本書,你給寫出3000多頁出來,就讓編輯審核了一下,看看怎麼刪除,把3000頁壓縮成一本書。結果找到一些技術專家,教授去審核,這些教授一看,最好是一點也不刪,高德納寫的這3000頁,每一頁都很重要。於是,他們制定了一個瘋狂的計劃,索性出幾本書得了於是,《計算機程序設計藝術》這本史詩級的書,就這樣定下來了。

一個尚未畢業的博士,挑戰了一個前所未有的新領域,這部書一直是所有程序員首推的書,但是,我只買了,就是讀不下去,對我來說,實在是太難了!第一卷的標題叫《基本算法》,雖說裡面帶著基本兩個字,但是實際上一點也不基本。比爾蓋茨花了一些時間讀完了這本書,並且做了這本書的習題,然後他說,如果誰做完了這本書,記得給微軟發簡歷。比爾蓋茨說,你想成為一個更優秀的程序員,就去讀《基本算法》這本書。高德納:他是無神論的IT行業裡,唯一的神

但是這本書對我有點難,對其它很多人也是有點難,對此,高德納教授如此評價:要是這本書都看不懂,你應該考慮一下,要不要繼續當程序員。我考慮一下,我就是要繼續當程序員,即使我看不懂。

在1992年,高德納為了能把這部鉅著寫完,他就退休了,他總共帶了28位博士,從此不再收徒弟。另一方面,他也給想拜他為師的人留了一個念想,他開了一門課,每次提出一個問題,如果誰能快速的給出高教授滿意的答案,高德納教授會同意在這個學生的博士論文上簽字。同時,他也不再使用電子郵件。他寫作的時候,只使用筆和紙,然後再逐字逐句的錄入計算機,有記者問為什麼不直接使用計算機?他回答說,他的打字太快了,以至於他的思維跟不上他打字的速度。

高德納這個中文名字,是圖靈獎獲得者,清華大學教授姚期智的夫人,香港城市大學教授儲楓給他起的。為什麼選擇高呢?主要是個子高,身材魁梧,高德納教授一對子女也有中文名,分別叫高小強和高小珍。

最後,以small talk的作者,艾倫講的一個小故事來結束本文吧,希望讓我們從中領略一下高德納編程的功力。當時艾倫在斯坦福大學從事AI項目,作為傳統項目,感恩節的時候,會在灣區舉行一次盛大的編程競賽,最高獎勵是一隻火雞。

Lisp的作者麥卡錫負責出題,高德納作為參賽選手,獨自一人報名參賽,對手都是組隊參加的。然後,高德納一舉拿下兩個獎項,執行時間最少獎和算法效率最高獎。他參賽使用的系統是所有人都不肯使用的批處理系統,一個人,一臺爛電腦,一個爛系統。

獲獎以後,問他,你為什麼這麼牛?他淡然的回答,我學編程的時候,每天只能用5分鐘電腦,程序必須寫的一點錯誤都沒有,就像是在大理石上雕刻,必須小心翼翼,一個錯誤,就會毀掉整個作品。

最後,祝高德納教授健康長壽。

歡迎關注微信公眾號:軟件那些事兒 或者網易雲音樂搜索軟件那些事兒(語音版)B站上也可以搜索軟件那些事兒


分享到:


相關文章: