肯尼斯·藍·湯普遜(英語:Kenneth Lane Thompson,1943年2月4日—),小名肯·湯普遜(英語:Ken Thompson),美國電腦科學學者和工程師。黑客文化圈子通常稱他為「ken」[1]。在貝爾實驗室工作期間,湯普遜設計和實現了Unix作業系統。他創造了B語言——C語言的前身,而且他是Plan 9作業系統的創造者和開發者之一。2006年,湯普遜進入Google公司工作,與他人共同設計了Go語言。他與丹尼斯·里奇同為1983年圖靈獎得主。
肯尼斯·藍·湯普遜 Kenneth Lane Thompson | |
---|---|
出生 | 美國路易斯安那州新奧爾良 | 1943年2月4日
國籍 | 美國 |
母校 | 加州大學柏克萊分校(1965年取得理學學士,1966年取得理學碩士) |
知名於 | Unix B語言 Belle UTF-8 國際象棋的殘局資料庫 Go語言 |
獎項 | IEEE皮奧爾獎(1982) 圖靈獎(1983) |
科學生涯 | |
研究領域 | 電腦科學 |
機構 | 貝爾實驗室 Entrisphere公司 Google公司 |
此外,肯·湯普遜還參與過正則表達式和UTF-8編碼的設計,改進了文字編輯器QED,創造了ed編輯器。他曾製造過專門用於下國際象棋的電腦「Belle」,並建立了殘局資料庫。
生平
肯·湯普遜在美國的新奧爾良出生。有人曾問他如何學會了編程,他表示自己只是因為對邏輯着迷。[2]
1960年,他就讀加州大學柏克萊分校,主修電氣工程,1966年取得了電子工程碩士學位[3]。他的導師是美國數學家、電腦科學家埃爾溫·伯利坎普。1966年,肯·湯普遜加入貝爾實驗室[4]。他參與了貝爾實驗室與麻省理工學院以及通用電氣公司聯合開發的Multics系統項目。在開發Multics系統期間,湯普遜創造了Bon程式語言[5]。與此同時,他又編寫了一個名為「Space Travel」的遊戲。後來貝爾實驗室撤出了Multics計劃。為了能夠繼續玩遊戲,湯普遜只好找到一台老式PDP-7機器,重寫了他的「Space Travel」遊戲[6]。
在把遊戲移植好之後,湯普遜又着手把自己的工具擴充成完備的作業系統。他和丹尼斯·里奇帶領一些貝爾實驗室的成員在PDP-7上面進行開發工作,實現了檔案系統、行程、裝置檔案、命令列直譯器和一些小的工具程式等。1970年,在布萊恩·柯林漢的建議下,這個系統命名為「Unix」,與「Multics」名字相對應[7]。在完成Unix系統開發的基本工作之後,湯普遜覺得Unix系統需要一個系統級的程式語言,於是創造了B語言。後來里奇在B語言的基礎上創造了C語言[8]。
在60年代,肯·湯普遜還參與了正則表達式的設計,開發了QED的相容分時系統版本,並在其中引入正則表達式支援。QED和後來由湯普遜編寫的ed編輯器對正則表達式的流行做出了重要貢獻。之後正則表達式普遍用於Unix的文字處理程式中。現在,幾乎所有使用正則表達式的程式都用到了某種來自湯普遜的記號的變體。湯普遜還發明了Thompson構造法,該演算法能夠將正則表達式轉化為非確定有限狀態自動機以提高匹配效率[9]。
進入70年代,肯·湯普遜和丹尼斯·里奇繼續合作開發Unix作業系統。他們二人在Research Unix的開發方面非常有影響力,以至於道格拉斯·麥克羅伊後來寫道,「你可以安心地在幾乎所有的貢獻後面都加上丹尼斯·里奇和肯·湯普遜的名字。」[10]湯普遜在2011年的一次採訪中說,Unix的第一個版本是他寫的,之后里奇開始提倡這款系統,並且幫助進行開發[11]:
“ | 前兩三個版本的Unix系統都是我自己寫的,然後丹尼斯成為了佈道者。接下來我們用一個稱為「C」的高階語言來重寫這個系統。他的大部分工作都在C語言和I/O系統上面,而其他部分的工作都是我做的。所有的工作都是在PDP-11機器上完成的。這台機器是僥倖找到的,因為那台機器本來是用於搞學術的。[11] | ” |
Unix系統的開發也幫助了C語言的發展。肯·湯普遜後來補充道,C語言「隨着Unix系統的一次重寫而發展,就這樣,它成為了系統程式設計的完美選擇。」[11]
在1975年,肯·湯普遜從貝爾實驗室休假,並回到了他的母校加州大學伯克利分校。在那裏,他幫助在PDP-11/70上面安裝了Version 6 Unix系統。後來加州大學伯克利分校維護了自己的Unix版本,即柏克萊軟件套件(BSD)。[12]
肯·湯普遜和貝爾實驗室的約瑟夫·康登共同製作了下棋機器Belle,湯普遜負責軟件部分[13]。湯普遜還編寫了生成國際象棋殘局走法的程式,即殘局資料庫。對於所有只剩4到6步的殘局,只要程式從資料庫中找到了棋譜那麼就可以給出「完美」解法。後來他在國際象棋專家約翰·羅伊克羅夫特的幫助下發佈了程式生成結果。
80年代之後,湯普遜和里奇繼續修補Research Unix,在第8到第10版中採用了BSD的代碼。在80年代中期,貝爾實驗室開始計劃用一套新的作業系統來取代Unix,即貝爾實驗室九號計劃。這個系統是一個利用Unix原理的新系統,計劃將更廣泛地用於所有主要裝置中。湯普遜為計劃的設計和實施發揮了重要作用。來自Research Unix的較新版本的一些程式,例如mk和rc也加入到Plan 9系統中。
湯普遜試驗了早期版本的C++語言,但是後來拒絕使用C++,因為在不同版本之間經常發生不相容的情況。湯普遜在2009年的一次採訪中表達了對C++的負面評價,並說「C++做很多事情都是只達到一半的程度,而且它就是一個由各種互相衝突的想法組成的垃圾堆。」[14]
1992年,湯普遜和羅勃·派克設計並實現了UTF-8編碼方案,並將其用於Plan 9系統中[15]。現在,UTF-8編碼已經成為互聯網的主要字元編碼,在所有網頁中,使用UTF-8編碼的網頁佔了一半以上[16]。1996年,肯·湯普遜繼續和丹尼斯·里奇合作,開始從事Inferno作業系統的開發[17]。
2000年下半年,湯普遜離開貝爾實驗室,進入美國的Entrisphere公司工作。2006年辭職並加入Google公司。之後他與羅勃·派克和羅伯特·格瑞史莫(Robert Griesemer)二人共同設計了Go語言。在講述自己的開發過程時,他說他們三人都是從零開始的。出於對C++的厭惡,三個人共同討論了語言的每一項特性,所以Go語言最終沒有任何「無用的垃圾」[11]。
榮譽和獲獎情況
1980年,湯普遜當選美國國家工程院院士,因為「設計了Unix作業系統,它的效率、廣度、力量和風格指導了一代在小型電腦進行開發的人。」[19]
1983年,因「發展了通用作業系統的理論,特別是實現了Unix作業系統」,湯普遜和里奇共同獲得了圖靈獎。他的演講以《Reflections on Trusting Trust》(反思對信任的信任)為題[20]。文中提到的向編譯器植入的後門後來被人們稱為「Thompson hack」,對電腦安全領域產生了重要影響[20]。因為在Unix系統和C語言方面做出的貢獻,他們二人在1990年共同獲得了IEEE漢明獎[21],在1997年獲得了電腦歷史博物館研究員獎[22],又在1999年4月27日獲得了由美國總統比爾·克林頓頒發的美國國家技術與創新獎章。
1999年,電氣電子工程師學會向湯普遜頒發了第一個金井務獎[23]。2011年,湯普遜和里奇二人又共同獲得了日本國際獎[24]。
參見
參考文獻
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.