26歲創造UNIX的編程大佬,退休後卻成為一名飛行員

  • 2020 年 3 月 12 日
  • 筆記

UNIX 之父、圖靈獎得主、C 語言的前身 B 語言的開發者、作業系統 Plan 9 的主要作者、Belle(一個國際象棋程式)作者之一,這些成就都出自一人之手,編程史上從來不缺大人物,但是肯·湯普遜(一般稱之為 Ken Thompson,肯·湯普森)絕對是一個傳奇。

肯·湯普森,圖源:維基百科

在《編程人生》一書的訪談中,肯·湯普森曾回憶:「小學時受到的教育很爛,但唯獨一堂課講了二進位,從此我便被迷住,因為從小就喜歡邏輯,因此做了很多二進位的運算,甚至還藉助一台十進位計算器擴展到各種進位。」

湯普森 1943 年出生在美國新奧爾良。1960 年,就讀於加州大學伯克利分校主修電氣工程,並取得電子工程碩士學位。當時,他的論文導師是埃爾溫·伯利坎普,同樣也是一位傳奇人物。

埃爾溫·伯利坎普的博士導師是香農、Gallager 等大師,他發明了 Berlekamp 、Welch-Berlekamp 和 Berlekamp-Massey 等著名演算法,還花了不少時間研究圍棋等博弈遊戲,他是組合博弈論的創始人之一。

埃爾溫·伯利坎普,圖源:維基百科

1966 年,畢業後的湯普森被貝爾實驗室聘用。他跟丹尼斯·里奇(C語言創始人)在 Multics 作業系統上工作。那時候,電腦還處在批處理的階段,技術不夠發達,程式設計師的工作效率不高,他們只能在既慢又笨重的大型機器上工作。為了解決一系列問題,Multics 作業系統應運而生,它是由美國高級研究計劃局資助、由麻省理工學院、貝爾實驗室和通用電氣公司的研究人員共同開發的分時作業系統。

可是好景不長,因為開發周期過長、成本過高,1969 年貝爾實驗室決定撤出這個項目。令湯普森最不開心的是他曾為 Multics 寫過一個遊戲《太空旅行》,這下也玩不了了。

為了繼續玩遊戲,湯普森找到了一台舊的 PDP-7 電腦,他重新編寫了這個遊戲,還花了一個月的時間開發了全新的作業系統 UNiplexed Information and Computing System(UNICS),後來改稱為 UNIX。

UNIX 首次運行在 DEC PDP-7 上,圖源:維基百科

在 UNIX 的開發過程中,湯普森決定 UNIX 需要一種系統程式語言。於是他開發了 B 語言,也就是 C 語言的前身。B 語言在進行系統編程時不夠強大,所以 1973 年丹尼斯·里奇用 C 語言重寫了 UNIX,安裝在 PDP-11 電腦上。隨著後來 UNIX 的廣泛使用,C 語言也成為了當時最受歡迎的程式語言延續至今。

坐著的肯·湯普森與丹尼斯·里奇一起在 PDP-11 旁工作,圖源:維基百科

1980 年,湯普森與貝爾實驗室的另一位工程師約瑟夫·康登開發了一款硬體輔助程式 Belle,一個會下國際象棋的電腦。同年,湯普森當選為美國國家科學院和美國國家工程院院士。

1990年代帶有液晶顯示器的壓感國際象棋電腦,圖源:維基百科

1983 年,湯普森被貝爾實驗室任命為研究員。他還協助丹尼斯·里奇在貝爾實驗室創建了 Plan 9 和 Inferno 作業系統。這一年,美國電腦協會將圖靈獎授予肯·湯普森和丹尼斯·里奇。

肯·湯普森與丹尼斯·里奇(右),圖源:維基百科

2000 年底,湯普森從貝爾實驗室退休了,他成為了一名飛行員。在編程的世界裡遨遊半生,也想去真正的天空看看了。

如果你以為他的傳奇生涯就這麼結束了,那就太天真了。

2006 年,他又加入了 Google 公司,參與設計 Go 語言。當提到他與其他 Go 語言的原始作者時,他說:「當我們三個人(Thompson,Rob Pike 和 Robert Griesemer )準備開始開發 Go 的時候,純粹是為了研究。我們一起討厭 C ++。(笑聲)回到 Go,我們開始的想法是,對於語言的每個功能都要碰頭交流,因此不管什麼原因,我們都不會在語言中添加多餘的垃圾。」

羅伯特·格瑞史莫,羅勃·派克和肯·湯普森,圖源:Google

他認為優秀開發人員的標誌是熱情,雖然他是編程狂魔,但是他卻不建議自己的兒子去讀電腦,理由竟然是電腦發展太慢了。大佬果然是大佬。現在已經 77 歲的湯普森依然在編程路上不斷探索,我們又怎麼能停下腳步呢