本頁使用了標題或全文手工轉換

肯·湯普遜

維基百科,自由的百科全書
跳至導覽 跳至搜尋
肯尼斯·藍·湯普遜
Ken Thompson and Dennis Ritchie--1973.jpg
肯·湯普遜(左)和丹尼斯·里奇
原文名 Kenneth Lane Thompson
出生 (1943-02-04) 1943年2月4日77歲)
美國路易斯安那州紐奧良
國籍 美國
母校 加州大學柏克萊分校(1965年取得理學學士,1966年取得理學碩士
知名於 Unix
B語言
Belle英語Belle (chess machine)
UTF-8
西洋棋的殘局資料庫英語Endgame tablebase
Go語言
獎項

IEEE皮奧爾獎英語IEEE Emanuel R. Piore Award(1982)
圖靈獎(1983)
IEEE理察·衛斯里·漢明獎章(1990)
電腦先驅獎英語Computer Pioneer Award(1994)
電腦歷史博物館研究員獎(1997)
美國國家技術獎章英語National Medal of Technology(1998)
金井務獎英語Tsutomu Kanai Award(Tsutomu Kanai Award)(1999)

日本國際獎(2011)
科學生涯
研究領域 電腦科學
機構 貝爾實驗室
Entrisphere公司
Google公司

肯尼斯·藍·湯普遜(英語:Kenneth Lane Thompson,1943年2月4日)小名肯·湯普遜(英語:Ken Thompson),美國電腦科學學者和工程師。駭客文化圈子通常稱他為「ken」[1]。在貝爾實驗室工作期間,湯普遜設計和實現了Unix作業系統。他創造了B語言——C語言的前身,而且他是Plan 9作業系統的創造者和開發者之一。2006年,湯普遜進入Google公司工作,與他人共同設計了Go語言。他與丹尼斯·里奇同為1983年圖靈獎得主。

此外,肯·湯普遜還參與過正規表示式UTF-8編碼的設計,改進了文字編輯器QED英語QED (text editor),創造了ed編輯器。他曾製造過專門用於下西洋棋的電腦「Belle英語Belle (chess machine)」,並建立了殘局資料庫英語Endgame tablebase

生平[編輯]

肯·湯普遜在美國的紐奧良出生。有人曾問他如何學會了編程,他表示自己只是因為對邏輯著迷。[2]

DEC PDP-7Unix系統最初在它上面執行。

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 (text editor)相容分時系統版本,並在其中引入正規表示式支援。QED和後來由湯普遜編寫的ed編輯器對正規表示式的流行做出了重要貢獻。之後正規表示式普遍用於Unix的文字處理程式中。現在,幾乎所有使用正規表示式的程式都用到了某種來自湯普遜的記號的變體。湯普遜還發明了Thompson構造法,該演算法能夠將正規表示式轉化為非確定有限狀態自動機以提高匹配效率[9]

肯·湯普遜(坐著)和丹尼斯·里奇在一台PDP-11前面工作。
SIMH英語SIMH PDP-11模擬器上執行Version 6 Unix,其中能夠看到「/usr/ken」這個檔案。

進入70年代,肯·湯普遜和丹尼斯·里奇繼續合作開發Unix作業系統。他們二人在Research Unix的開發方面非常有影響力,以至於道格拉斯·麥克羅伊後來寫道,「你可以安心地在幾乎所有的貢獻後面都加上丹尼斯·里奇和肯·湯普遜的名字。」[10]湯普遜在2011年的一次採訪中說,Unix的第一個版本是他寫的,之后里奇開始提倡這款系統,並且幫助進行開發[11]

Unix系統的開發也幫助了C語言的發展。肯·湯普遜後來補充道,C語言「隨著Unix系統的一次重寫而發展,就這樣,它成為了系統程式設計的完美選擇。」[11]

在1975年,肯·湯普遜從貝爾實驗室休假,並回到了他的母校加州大學伯克利分校。在那裡,他幫助在PDP-11/70上面安裝了Version 6 Unix系統。後來加州大學伯克利分校維護了自己的Unix版本,即柏克萊軟體套件(BSD)。[12]

肯·湯普遜和貝爾實驗室的約瑟夫·康登英語Joseph Henry Condon共同製作了下棋機器Belle英語Belle,湯普遜負責軟體部分[13]。湯普遜還編寫了生成西洋棋殘局走法的程式,即殘局資料庫英語Endgame tablebase。對於所有只剩4到6步的殘局,只要程式從資料庫中找到了棋譜那麼就可以給出「完美」解法。後來他在西洋棋專家約翰·羅伊克羅夫特英語John Roycroft的幫助下發布了程式生成結果。

貝爾實驗室九號計畫,正在執行acme英語acme (text editor)編輯器和rc英語rc直譯器。

80年代之後,湯普遜和里奇繼續修補Research Unix,在第8到第10版中採用了BSD的代碼。在80年代中期,貝爾實驗室開始計劃用一套新的作業系統來取代Unix,即貝爾實驗室九號計畫。這個系統是一個利用Unix原理的新系統,計劃將更廣泛地用於所有主要裝置中。湯普遜為計劃的設計和實施發揮了重要作用。來自Research Unix的較新版本的一些程式,例如mkrc英語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]

在2009年的一次採訪中,湯普遜表示自己正在使用基於Linux的作業系統。[18]

榮譽和獲獎情況[編輯]

1980年,湯普遜當選美國國家工程院院士,因為「設計了Unix作業系統,它的效率、廣度、力量和風格指導了一代在小型電腦進行開發的人。」[19]

1983年,因「發展了通用作業系統的理論,特別是實現了Unix作業系統」,湯普遜和里奇共同獲得了圖靈獎。他的演講以《Reflections on Trusting Trust》(反思對信任的信任)為題[20]。文中提到的向編譯器植入的後門後來被人們稱為「Thompson hack」,對電腦安全領域產生了重要影響[20]。因為在Unix系統和C語言方面做出的貢獻,他們二人在1990年共同獲得了IEEE漢明獎英語IEEE Richard W. Hamming Medal[21],在1997年獲得了電腦歷史博物館研究員獎[22],又在1999年4月27日獲得了由美國總統比爾·柯林頓頒發的美國國家技術與創新獎章英語National Medal of Technology and Innovation

1999年,電氣電子工程師學會向湯普遜頒發了第一個金井務獎英語Tsutomu Kanai Award[23]。2011年,湯普遜和里奇二人又共同獲得了日本國際獎[24]

參見[編輯]

參考文獻[編輯]

  1. ^ ken. The Jargon File英語Jargon File (version 4.4.7). 
  2. ^ Seibel, Peter. Coders At Work. 2009: 450. 
  3. ^ Thesis Students. Elwyn Berlekamp's Home Page. University of California, Berkeley Department of Mathematics. 
  4. ^ Ken Thompson: developed UNIX at Bell Labs. [2016-10-31]. 
  5. ^ Ritchie, Dennis. The Development of the C Language. Bell Labs. [2016-10-31]. 
  6. ^ Ritchie, Dennis M. Space Travel: Exploring the solar system and the PDP-7. Bell Labs. 2001 [2016-02-04]. (原始內容存檔於2015-12-26). 
  7. ^ Ritchie, Dennis M. The Evolution of the Unix Time-sharing System. [2016-10-31]. 
  8. ^ Dennis M. Ritchie. The Development of the C Language. Bell Labs/Lucent Technologies. [2016-10-31]. 
  9. ^ Cox, Russ. Regular Expression Matching Can Be Simple And Fast. [2016-10-30]. 
  10. ^ McIlroy, M. D. A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Technical report). CSTR. Bell Labs. 1987. 139. 
  11. ^ 11.0 11.1 11.2 11.3 Dr. Dobb's: Interview with Ken Thompson. 2011-05-18 [2014-11-10]. 
  12. ^ Salus, Peter H. Chapter 7. BSD and the CSRG. The Daemon, the Gnu and the Penguin. Groklaw. 2005. 
  13. ^ Joe Condon (obituary). Physics Today. [2015-11-05]. 
  14. ^ Seibel, Peter. Coders At Work. 2009: 475. 
  15. ^ Pike, Rob. UTF-8 history. 2003-04-30. 
  16. ^ Davis, Mark. Unicode nearing 50% of the web. Official Google Blog. Google. 2010-01-28 [2010-12-05]. 
  17. ^ Khamlichi, M.el. Ken Thompson UNIX systems father. Unixmen. [2016-10-31]. 
  18. ^ Seibel, Peter. Coders At Work. 2009: 479. 
  19. ^ Dr. Ken Thompson. National Academy of Engineering. 
  20. ^ 20.0 20.1 Thompson, Ken. Reflections on trusting trust. Communications of the ACM. 1984, 27 (8): 761–763. doi:10.1145/358198.358210. 
  21. ^ IEEE Richard W. Hamming Medal Recipients (PDF). IEEE. [2011-05-29]. (原始內容 (PDF)存檔於2011年7月26日). 
  22. ^ Ken Thompson. Computer History Museum. [2016-10-29]. 
  23. ^ Ken Thompson Receives Kanai Award for Impact of Unix System. Bell Labs. 1999-03-25. (原始內容存檔於2013-03-26). 
  24. ^ Evangelista, Benny. Ken Thompson, Dennis Ritchie win Japan Prize. The San Francisco Chronicle. 2011-01-25. 

外部連結[編輯]