肯·湯普遜

出自Local Chinese Wikipedia
(重新導向自Ken Thompson
跳至導覽 跳至搜尋

Template:NoteTA 腳本錯誤:沒有「Template wrapper」這個模塊。腳本錯誤:沒有「Check for unknown parameters」這個模塊。 肯尼斯·藍·湯普遜Template:Langx,1943年2月4日—),小名肯·湯普遜Template:Langx),美國計算機科學學者和工程師。駭客文化圈子通常稱他為「ken」[1]。在貝爾實驗室工作期間,湯普遜設計和實現了Unix作業系統。他創造了B語言——C語言的前身,而且他是Plan 9作業系統的創造者和開發者之一。2006年,湯普遜進入Google公司工作,與他人共同設計了Go語言。他與丹尼斯·里奇同為1983年圖靈獎得主。

此外,肯·湯普遜還參與過正則表達式UTF-8編碼的設計,改進了文本編輯器腳本錯誤:沒有「ilh」這個模塊。,創造了ed編輯器。他曾製造過專門用於下國際象棋的電腦「腳本錯誤:沒有「ilh」這個模塊。」,並建立了腳本錯誤:沒有「ilh」這個模塊。

生平[編輯]

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

File:Pdp7-oslo-2005.jpeg
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年代,肯·湯普遜還參與了正則表達式的設計,開發了腳本錯誤:沒有「ilh」這個模塊。相容分時系統版本,並在其中引入正則表達式支持。QED和後來由湯普遜編寫的ed編輯器對正則表達式的流行做出了重要貢獻。之後正則表達式普遍用於Unix的文本處理程序中。現在,幾乎所有使用正則表達式的程序都用到了某種來自湯普遜的記號的變體。湯普遜還發明了Thompson構造法,該算法能夠將正則表達式轉化為非確定有限狀態自動機以提高匹配效率[9]

File:Version 6 Unix SIMH PDP11 Emulation KEN.png
腳本錯誤:沒有「ilh」這個模塊。 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]

肯·湯普遜和貝爾實驗室的Template:Le共同製作了下棋機器Template:Le,湯普遜負責軟件部分[13]。湯普遜還編寫了生成國際象棋殘局走法的程序,即腳本錯誤:沒有「ilh」這個模塊。。對於所有只剩4到6步的殘局,只要程序從數據庫中找到了棋譜那麼就可以給出「完美」解法。後來他在國際象棋專家腳本錯誤:沒有「ilh」這個模塊。的幫助下發佈了程序生成結果。

File:Plan 9 from Bell Labs (with acme).png
貝爾實驗室九號計劃,正在運行acme編輯器和腳本錯誤:沒有「ilh」這個模塊。解釋器。

80年代之後,湯普遜和里奇繼續修補Research Unix,在第8到第10版中採用了BSD的代碼。在80年代中期,貝爾實驗室開始計劃用一套新的作業系統來取代Unix,即貝爾實驗室九號計劃。這個系統是一個利用Unix原理的新系統,計劃將更廣泛地用於所有主要設備中。湯普遜為計劃的設計和實施發揮了重要作用。來自Research Unix的較新版本的一些程序,例如mk腳本錯誤:沒有「ilh」這個模塊。也加入到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年共同獲得了腳本錯誤:沒有「ilh」這個模塊。[21],在1997年獲得了計算機歷史博物館研究員獎[22],又在1999年4月27日獲得了由美國總統比爾·克林頓頒發的腳本錯誤:沒有「ilh」這個模塊。

1999年,電氣電子工程師學會向湯普遜頒發了第一個腳本錯誤:沒有「ilh」這個模塊。[23]。2011年,湯普遜和里奇二人又共同獲得了日本國際獎[24]

參見[編輯]

參考文獻[編輯]

外部連結[編輯]

腳本錯誤:沒有「Side box」這個模塊。 腳本錯誤:沒有「Side box」這個模塊。

腳本錯誤:沒有「Navbox」這個模塊。 Template:Richard W. Hamming Medal recipients 腳本錯誤:沒有「Navbox」這個模塊。 Template:日本國際獎獲得者

腳本錯誤:沒有「Authority control」這個模塊。腳本錯誤:沒有「Check for unknown parameters」這個模塊。