肯·湯普遜
肯尼斯·藍·湯普遜(英語: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]。
參見
參考文獻
- ^ ken. The Jargon File (version 4.4.7). [2016-10-31]. (原始內容存檔於2011-06-24).
- ^ Seibel, Peter. Coders At Work. 2009: 450.
- ^ Thesis Students. Elwyn Berlekamp's Home Page. University of California, Berkeley Department of Mathematics. [2016-10-31]. (原始內容存檔於2021-03-15).
- ^ Ken Thompson: developed UNIX at Bell Labs. [2016-10-31]. (原始內容存檔於2011-10-10).
- ^ Ritchie, Dennis. The Development of the C Language. Bell Labs. [2016-10-31]. (原始內容存檔於2017-04-03).
- ^ Ritchie, Dennis M. Space Travel: Exploring the solar system and the PDP-7. Bell Labs. 2001 [2016-02-04]. (原始內容存檔於2015-12-26).
- ^ Ritchie, Dennis M. The Evolution of the Unix Time-sharing System. [2016-10-31]. (原始內容存檔於2015-06-11).
- ^ Dennis M. Ritchie. The Development of the C Language. Bell Labs/Lucent Technologies. [2016-10-31]. (原始內容存檔於2017-04-03).
- ^ Cox, Russ. Regular Expression Matching Can Be Simple And Fast. [2016-10-30]. (原始內容存檔於2010-01-01).
- ^ McIlroy, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (技術報告). CSTR. Bell Labs. 1987 [2016-10-31]. 139. (原始內容存檔 (PDF)於2017-11-11).
- ^ 11.0 11.1 11.2 11.3 Dr. Dobb's: Interview with Ken Thompson. 2011-05-18 [2014-11-10]. (原始內容存檔於2014-03-13).
- ^ Salus, Peter H. Chapter 7. BSD and the CSRG. The Daemon, the Gnu and the Penguin. Groklaw. 2005 [2016-10-31]. (原始內容存檔於2020-06-14).
- ^ Joe Condon (obituary). Physics Today. [2015-11-05]. (原始內容存檔於2016-10-18).
- ^ Seibel, Peter. Coders At Work. 2009: 475.
- ^ Pike, Rob. UTF-8 history. 2003-04-30 [2016-10-31]. (原始內容存檔於2011-03-01).
- ^ Davis, Mark. Unicode nearing 50% of the web. Official Google Blog. Google. 2010-01-28 [2010-12-05]. (原始內容存檔於2016-06-16).
- ^ Khamlichi, M.el. Ken Thompson UNIX systems father. Unixmen. [2016-10-31]. (原始內容存檔於2020-12-10).
- ^ Seibel, Peter. Coders At Work. 2009: 479.
- ^ Dr. Ken Thompson. National Academy of Engineering. [2016-10-31]. (原始內容存檔於2010-11-01).
- ^ 20.0 20.1 Thompson, Ken. Reflections on trusting trust. Communications of the ACM. 1984, 27 (8): 761–763. doi:10.1145/358198.358210.
- ^ IEEE Richard W. Hamming Medal Recipients (PDF). IEEE. [2011-05-29]. (原始內容 (PDF)存檔於2011年7月26日).
- ^ Ken Thompson. Computer History Museum. [2016-10-29]. (原始內容存檔於2019-07-03).
- ^ Ken Thompson Receives Kanai Award for Impact of Unix System. Bell Labs. 1999-03-25. (原始內容存檔於2013-03-26).
- ^ Evangelista, Benny. Ken Thompson, Dennis Ritchie win Japan Prize. The San Francisco Chronicle. 2011-01-25 [2016-10-31]. (原始內容存檔於2021-04-30).
外部連結
- 《Reflections on Trusting Trust (頁面存檔備份,存於網際網路檔案館)》,肯·湯普遜的圖靈獎演講
- 《Unix and Beyond: An Interview with Ken Thompson (頁面存檔備份,存於網際網路檔案館)》
- 電腦下棋:照片、視頻採訪:由計算機歷史博物館提供
- 由肯·湯普遜寫的關於國際象棋的論文 (頁面存檔備份,存於網際網路檔案館)