- 原創 2016-08-05 劉延棟軟件那些事兒
- 老婆帶孩子去回娘家一個月,肯?湯姆遜自己在家寫了4200行代碼,這就是第一個版本的Unix,其中43個系統調用至今仍在使用...
- 文 | 劉延棟
一輛深藍色的甲殼蟲轎車,飛奔在尼米茲高速公路上,開車的司機是一個年輕的大學生,他一邊開車,一邊翻看一本厚厚的書。
這本書是當時的電腦巨頭IBM的一份程序員手冊,這個叫肯?湯姆遜的學生,剛剛了開了100公里,從加州大學伯克利分校到圣何塞的辦事處,領取了一份IBM 360大型機的程序員手冊。此前,他已經連續打了半月的電話,詢問IBM的辦事處,這本書有沒有到貨。
今天,他得到了確切的消息。于是驅車到圣何塞領取這本書。
拿到手冊以后,他迫不及待的邊開車邊閱讀。后來,他功成名就,在2000年,接受采訪的時候回憶說:我當時太興奮了,差點就出了車禍。他說,一路上,他確信了一件事兒,IBM的這臺360大型機,是徹頭徹尾的垃圾。
多年以后,湯姆遜依然掩飾不住自己對IBM的鄙視,他以嘲諷的口吻對IBM的銷售人員說:你們產品最好的部分,就是這些藍色的包裝盒。
當時的湯姆遜才21歲,他一針見血的指出了IBM 360的設計失誤,他說,IBM完完全全忽略了和計算機打交道的人——程序員和工程師——他們對我們太傲慢無理了。
事實證明了這個只有21歲年輕學生的判斷還是很獨到的。
IBM 360這個機器是計算機歷史上最大的一次賭博,IBM為了這臺大型機,決定招聘6萬名新員工,新蓋5座工廠,但是整個項目還是不斷的延遲。作為該機器的項目經理,弗瑞德?布魯克斯,根據研發IBM 360的經驗,寫了一本書叫《人月神話:軟件項目管理之道》,這本書現在仍然是計算機系學生必讀的書目之一,這本書記錄了人類工程史上一項里程碑式的大型復雜軟件系統開發經驗。
在1969年,當年這個邊開車邊讀書開了100公里的學生,和貝爾實驗的兩位同事,一位叫丹尼斯?里奇,還有一位叫Rudd Canaday的家伙,開始秘密謀劃一個新的操作系統。1969年的夏天,肯?湯姆遜的老婆要帶著他們的小孩回娘家,所以,肯?湯姆遜有一個月的時間,重新體驗單身漢的快樂,他在一個月內,給一臺廢棄的PDP7寫了一個操作系統,這就是后來的Unix。
第一個版本的Unix,只有4200行代碼,其中的34個系統調用,到現在依然在使用。我覺得關于Unix,Linux,BSD以及Mac操作系統的故事非常的精彩,所以,我要把這個故事完整的記錄下來。雖然在現在這個讀圖的年代,寫很長的文章,非常的格格不入。
這一系列的文章會很長,我分成好幾期。為了照顧微信的讀者,每一期都是一個相對獨立的故事,也會有個獨立的文章標題。這一系列文章的標題里,都會有Unix這個單詞。
在1943年,日后創造出Unix操作系統的肯?湯姆遜在新奧爾良出生,他的父親是海軍飛行員,他從小就跟著父母東奔西走,去過很多的地方,很多的國家。從小,肯?湯姆遜就對機械,電子產生了濃厚的興趣,喜歡冒險。
他最崇拜的人就是他當飛行員的父親,在他48歲的時候,他在俄羅斯花了12000美元,體驗了一把他父親開戰斗機的感覺。他開的是俄羅斯的米格29噴氣式戰機。在空中做各種驚險的動作,翻滾,失速,畫圓,做響尾蛇的避讓動作,空中急剎車。
肯?湯姆遜是一個不善言辭的家伙,他一貫追求簡單。在2008年,一群計算機愛好者,把第一個版本的Unix源代碼找來,對著源代碼,實現了一臺當初PDP的機器,并且讓這些源代碼重新運行起來。當這些計算機愛好者興奮的告訴肯?湯姆遜這件事以后,肯?湯姆遜只是回復了一個單詞,amazing。
他一貫如此,安靜,簡單,不善言辭。但是,在他48歲,開上米格29翱翔天空以后,這個48歲的大男孩也許想起了他父親當年翱翔天空的樣子。一貫不善言辭的他,寫了一篇博客,來記錄這件事情,其中,他寫道:起飛了,噴射引擎全速運轉,我感覺有人在踢我的腎。
在2000年12月,57歲的肯?湯姆遜離開了貝爾實驗室,正式退休,他成了一名飛行員。
上高三的時候,他父親從意大利那不勒斯空軍基地調回美國本土,回到圣地亞哥海軍基地。他父親年輕時候從俄克拉荷馬大學輟學,因為家庭貧窮,因此,他的父親決定要讓他的孩子都能上大學。湯姆遜回憶說:我上大學沒有問題,問題是我要選擇上哪一所?
最后,這個家庭并不富裕的孩子選擇了學費低廉的加州大學伯克利分校,雖然錄取他的還有包括麻省理工在內的諸多私利大學。在大學的時候,他選擇了電子工程專業,但是他更喜歡呆在計算機中心。
他對各種編程都非常著迷,他這樣形容編程行業,這就像蓋房子不需要購買水泥,你自己創造你自己的世界,你擁有這一切,但是卻不用離開自己的房間。
和Java的創始人高斯林一樣,湯姆遜也喜歡玩一字棋,并且在計算機上編寫了一字棋的游戲,他和電腦對戰。直到,他認識了伯克利分校的一個數學教授,叫波利坎普,接下來的幾個月里,湯姆遜屢戰屢敗,但是他并沒有氣餒,開始編寫計算機軟件輔助他,有了電腦的幫助,湯姆遜的棋藝大增,但是,還是從來沒有贏那位數學系的教授。
在一次采訪中,湯姆遜說,我快氣瘋了,我從來沒有贏過他,我用電腦來計算,都從來沒有贏過他。在一字棋上,湯姆遜雖然沒有贏波利坎普,但是,波利坎普這個數學教授卻對湯姆遜青眼有加,他推薦湯姆遜進入當時鼎鼎有名的貝爾實驗室。
湯姆遜進入的是貝爾實驗室的計算機科學中心,這個中心在當時的貝爾實驗室里并太不出名,但是沒關系,它就要出名了,因為,這個中心招聘了湯姆遜和里奇,這兩個家伙,日后讓貝爾實驗室計算機科學中心名聲大噪。
肯?湯姆遜在2006年進入Google工作,開發了Go語言,目前仍然在Google公司工作。
在1983年,湯姆遜和里奇因為Unix被授予圖靈獎。
這里引出Unix的另一個作者,丹尼斯?里奇,他是一個平易近人的人,在2003年,一名17歲的瑞典少年,發了一封郵件給里奇,問能否接受采訪。這個獲獎無數的科學家,欣然答應了這個少年的要求。
他從哈佛大學畢業,他用C語言實現了Unix,不幸的是,他于2011年10月12日,因病去世,享年70歲。他的死訊時2011年10月12日由他的好友Rob Pike發布的。由于他一直未婚,2007年退休以后,隱居在新澤西,沒人知道他具體的死亡日期。
看起來有些傷感的故事,他去世以后,也沒有太多人關注。在2011年的時候,我寫過一篇很長的文章介紹他,也沒有人看,后來我都找不到了。
作為我微信公眾號——軟件那些事兒——關注者的福利,我貼一張2002年里奇的桌面。
在2002年7月9日,應一個網站要求,大家想看一下里奇電腦的桌面。他就很愉快的發了一張截圖。從這個截圖上,我們可以看出,他用的是windows NT 4.0的操作系統。在桌面上開了一個term,這個term的名字叫drawterm, 這個term連接到一個Plan 9的服務器上,所有的工作都在那個服務器上工作。
有一次,一個程序員問他: 一個程序員從新手成長為精通C語言的開發者,并能寫出優秀的代碼,據您的經驗需要多長時間?
他回答:我不知道,我不需要學習C語言。
因為C語言是他創造的,當然不需要學習了。
下一期,我將會介紹C語言的作者,Unix的發明者之一,Plan 9的發明者之一,丹尼斯?里奇的故事。