Quicksort算法之父——1980年圖靈獎獲得者查爾斯·霍爾

指針就像跳轉一樣,瘋狂地在數據結構之間到處指來指去。在高級語言裏面引入指針是個退步。我們可能永遠無法從這一失敗之中恢復過來。
名人堂
這段話出自查爾斯·霍爾(Charles A.R. Hoare),1980年他因“對程序設計語言的定義和設計方面的基礎性貢獻”而獲得圖靈獎。他26歲就發明了聞名於世的快速排序算法Quicksort。當然,他對計算機科學技術的貢獻還遠遠不止於此,在程序設計語言的定義和設計、數據結構和算法、操作系統等許多方面,他都有許多影響深遠的成果。他,查爾斯·霍爾,就是這樣一個了不起的人。

早年生平

霍爾是英國人,1934年1月11日生於斯里蘭卡的科倫坡。小時候的理想是當個作家,喜歡蕭伯納和羅素的作品。因爲勤奮好學、少言寡語,他被同學稱爲“教授”。中學畢業後,他進入牛津的莫頓學院學習,對數理邏輯產生了興趣,並首次接觸到了計算機。他的第一個程序用Mercury Autocode的語言編寫,解決了諾依曼書中的兩人博弈問題。

嶄露頭角

1960年,霍爾進入Elliott兄弟倫敦公司,成爲一名程序員。他接到的第一個任務,就是爲Elliott 803計算機編寫一個庫程序,實現新發明出來的Shell排序算法。在此過程中,霍爾對不斷提升代碼的效率着了迷,他不僅很好地完成了任務,還發明瞭一種新算法,比Shell還快,而且不會多耗費太多空間——Quicksort誕生了。

隨後,霍爾又接到了新任務——在公司新機型Elliott 503上實現Algol 60語言。Elliott Algol的開發非常順利,大獲成功,霍爾本人也從此受到國際學術界的重視。當然,對他來說,另一件事情更爲重要,他和項目中另一位當時比自己更專業的女程序員Jill Pym相識相知,並最後結婚。

開創性成果

1968年他到北愛爾蘭女王大學從事教學和研究,1977年轉入牛津大學至今,目前還同時擔任微軟研究院的研究員。他全身心地投入到計算機科學理論的研究中,作出了許多創造性的重大貢獻,尤其是程序設計理論和操作系統設計等方面,目前許多廣泛流行與應用着的概念都源於霍爾的工作。

1969年10月,霍爾在Communications of the ACM上發表了有里程碑意義的論文“計算機程序設計的公理基礎”。在這篇論文中,霍爾提出了公理語義學,這是繼1963年用遞歸函數定義程序,以及在1967年基於程序流程圖的歸納斷言法以後,程序邏輯研究中所取得的又一個重大技術進展。

20世紀70年代後期,霍爾深入研究並實現了程序設計語言CSP,後來成爲著名的並行處理語言Occam的基礎。80年代中期,霍爾和S. Brools等人合作,提出了“CSP理論”,開創了用代數方法研究通信併發系統的先河,形成了“進程代數”這一新的研究領域。1995年他還和我國學者、中科院院士何積豐合作,提出了統一程序設計理論。

霍爾發表過許多高水平的論著。ACM在1983年評選出最近25年中發表在Communications of the ACM上的有里程碑式意義的25篇經典論文,只有2名學者各有2篇論文入選,霍爾就是其中之一。1972年他與O.J. Dahl和E. W. Dijkstra三位圖靈獎得主合著的Structured Programming一書,更是難以逾越的高峯。

獲獎經歷

霍爾獲獎無數,1980年獲得美國計算機學會(ACM)設立的計算機界最高獎——圖靈獎;1981年獲得AFIPS的Harry Goode獎;1985年獲得英國IEE的法拉第獎章;1990年被IEEE授予計算機先驅獎。2000年獲得日本稻盛財團設立的國際大獎——京都獎(尖端技術領域)。

2009年3月他在Qcon技術會議上發表了題爲“Null引用:代價十億美元的錯誤”的演講,回憶自己1965年設計第一個全面的類型系統時,未能抵禦住誘惑,加入了Null引用,僅僅是因爲實現起來非常容易。它後來成爲許多程序設計語言的標準特性,導致了數不清的錯誤、漏洞和系統崩潰,可能在之後40年中造成了十億美元的損失。他在同月出版Communications of the ACM中表示,如何證明程序的正確性仍然是計算機科學中有待解決的重大課題。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章