1月8日,世界上最大的消費類電子產品展會CES2019 在拉斯維加斯國際會展中心開幕。當天一個不起眼的消息是,美國發明家名人堂(National Inventors Hall of Fame)在展會上發布了2019年的入選名單。
貝爾實驗室的兩位計算機科學家Dennis Ritchie 和 Ken Thompson入選了名人堂。
眾所周知,他們發明了計算機歷史上非常重要的UNIX作業系統和C語言,沒用過這兩者都不好意思說自己學過計算機。而今年正好是UNIX發明50周年。
時間回到1969年,兩位大牛還都是剛加入貝爾實驗室計算機部門不久的小字輩,如果沒有UNIX的橫空出世,那一年本來是非常鬱悶的一年。
60年代還是大型計算機盛行的年代,主機非常昂貴和稀有,而且很不好用。1964年美國國防部委託MIT(麻省理工學院)、貝爾實驗室以及GE(通用電氣)一起開發一種叫做MULTICS(MULTiplexed Information and Computing System,多路信息與計算系統)的分時作業系統,能同時支持1000臺終端,支持300名用戶同時使用。
MULTICS研發團隊
那時候還沒有軟體工程的概念,大家奮戰了4年,還是達不到預期的性能。
1969年,貝爾實驗室決定退出。MULTICS雖然還是裝在GE645計算機上使用,但事實上遭到了徹底的失敗,還被嘲笑為:Many Unnecessarily Large Table In Core Sinultaneously。GE在一年之後也完全淡出大型機市場。
貝爾實驗室從失敗的MULTICS作業系統項目中撤出後,計算機部門也經歷了重組,計算中心和計算機研究部門分開。Dennis和Ken是最後一批留在MULTICS項目的成員。GE即將撤回他們的645/635型計算機,計算中心提了好幾個買新機器和繼續開發作業系統的預算提案,都被領導拒了。其實領導們是不打算繼續維持一個龐大的計算中心。
Dennis和Ken那段時間挺鬱悶的,也沒多少事情,就花時間搗鼓Ken的太空旅行(Space Travel)的小遊戲.在計算機還很原始的年代,程式設計師們就開始琢磨怎麼玩遊戲了,此時外界還以為這東西只能計算呢。
Ken原來在開發MULTICS的時候編寫了這個小遊戲,當然不完全是為了玩,也是展示作業系統的應用。後來他把遊戲移植到了運行GECOS作業系統的GE635型計算機。不過這個大型機器費用很貴,分時運行一次要花75美元,而且顯示器和輸入系統也很不好用。Ken向領導申請買一臺PDP-10,要花12萬美元,被拒了。後來他跟同事聊天,得知隔壁部門有臺破PDP-7小型機沒人用,他就要了過來,找了幾個小夥伴,包括Dennis,開始移植他的遊戲。
PDP-7
這個工作今天聽著很簡單,可是他們是從裸機開始,用彙編語言寫程序,然後寫在穿孔的紙帶上在PDP7上運行。
遊戲移植後在PDP7上性能不行,他們決定自己重寫個文件系統。後來又加入了進程管理,shell和一些實用工具,一個只能支持2個用戶使用的作業系統誕生了。
吸取了Multics設計複雜而導致失敗的教訓,Dennis將Unix的設計原則定為"保持簡單和直接"(Keep it simple stupid),也就是後來著名的KISS原則。
為了做到這一點,Unix由許多小程序組成,每個小程序只能完成一個功能,任何複雜的操作都必須分解成一些基本步驟,由這些小程序逐一完成,再組合起來得到最終結果。今天流行的微服務(Micro service)的思想其實是一脈相承的。
因為和Multics的複雜思想是反著來的,組員Brian Kernighan開玩笑地給系統取名為「UNICS」(UNiplexed Information and Computing System),後來取諧音便是「UNIX」。
到1969年聖誕節UNIX的第一版已經可以運行了。這時候領導看到了成果,決定支持他們購買一臺新的PDP11,於是他們把UNIX移植到了PDP11上,並能夠真正為客戶提供服務。
Ken and Dennis (站著) 在PDP-11前工作,1972年
UNIX一開始在公司內部流傳,後來傳播到整個計算機界,到80年代居然成為了最主流的作業系統,運行在數以萬計的各種計算機上。直到今天各種流行的作業系統,從計算機到智慧型手機,都有UNIX的基因。
為了提高UNIX的可移植性,Dennis在1973年開發了著名的C語言,因為KISS的原則,也成為最流行的計算機語言,直到今天還有旺盛的生命力,在此不詳述了。
兩人後來成為了傳奇,拿獎拿到手軟:
1974年 ACM 傑出論文獎;
1982年 IEEE 的 Emmanuel Piore 獎;
1983年 ACM 圖靈獎;
1983年 ACM 軟體系統獎;
1989年 NEC 的 C&C 基金獎;
1990年 IEEE 的漢明獎。
1999年 美國國家技術獎。
.
直到今天進了名人堂。
Dennis是個很簡單的人,子承父業,1967年進了貝爾實驗室,一直工作到退休,從AT&T時代到朗訊到ALU幹了整整40年。他一生獨身,2011年一個人在家中去世。
Ken Thompson在貝爾實驗室工作到2000年退休,2006年加入了Google,繼續編程。
Ken有個深藏了十幾年的秘密。他那臺PDP11一直放在貝爾實驗室給大家用,但大家發現他總能獲得最高權限。專家們仔細排查了UNIX代碼也沒發現後門,直到1983年,Ken在拿圖靈獎發表獲獎感言時才吐露了真相,原來他在C語言編譯器裡留了後門。
在圖靈獎演講上,他提出了一個深刻的問題:看到了軟體的源碼,就意味著沒有後門嗎?編譯器,連接器,甚至硬體,是不是可信的?還是我們只能信任寫軟體的人?