保持簡單:紀念丹尼斯?里奇

作者: 阮一峰

日期:2011年10月25日

1954年,電氣工程師阿利斯泰爾?里奇(Alistair E. Ritchie),決定舉家從紐約州的布朗克斯維爾(Bronxville),搬到幾十公里以外的新澤西。這樣可以離他的工作單位“貝爾實驗室”更近一些。

13歲的丹尼斯?里奇(Dennis Ritchie),就這樣隨著父親一起來到新澤西。那時,誰也沒有想到,這個文靜的少年將在這里待上一輩子,并且創造出改變世界的發明。

中學畢業后,丹尼斯?里奇聽從父親的建議,進入哈佛大學學習應用數學,直到拿到博士學位。他的第一份工作,是為軍方研制核武器,這并不符合他的志趣。1967年,通過父親介紹,26歲的他進入貝爾實驗室,從事剛剛興起的計算機研究。從此,他在新澤西老家一住就是44年,直到去世。

他在貝爾實驗室的第一個任務,是參與大項目 Multics,即開發一個前所未有的、可以多人使用的、同時運行多個程序的操作系統。該項目由貝爾實驗室、麻省理工學院和通用電氣公司三方聯合研制,但是由于設計過于復雜,遲遲拿不出成果,1969年貝爾實驗室宣布退出。

第一個任務這樣無果而終,丹尼斯?里奇很不甘,但也無能為力。誰知過完了夏天,比他小兩歲的同事肯?湯普森(Ken Thompson)找上門,說借鑒 Multics 的設計思路,做了一個個人項目 Unix,問他有沒有興趣一起參與。丹尼斯?里奇立刻表示同意,于是兩人一起投入Unix的開發。肯?湯普森的專業是電子工程,丹尼斯?里奇專業是應用數學,正好互補。經過日以繼夜的工作,1969年圣誕節前,Unix 已經可以初步運行了。

吸取了 Multics 設計復雜而導致失敗的教訓,丹尼斯?里奇將 Unix 的設計原則定為“保持簡單和直接”(Keep it simple stupid),也就是后來著名的 KISS 原則。為了做到這一點,Unix 由許多小程序組成,每個小程序只能完成一個功能,任何復雜的操作都必須分解成一些基本步驟,由這些小程序逐一完成,再組合起來得到最終結果。

表面上看,這樣的設計很低效:為了取得結果,你必須運行一連串小程序,那么為什么不用一個大程序一次運行就得到結果呢?但是事實證明,由于小程序之間可以像積木一樣自由組合,所以非常靈活,能夠輕易完成大量意想不到的任務。而且,計算機硬件的升級速度非常快,所以性能也不是一個問題。另一方面,開發單一目的的小程序,要比開發大型程序容易得多,所以 Unix 才有可能在短短幾個月內問世。

Unix 迅速在程序員中流傳,到了80年代,已經成為主流操作系統,演變成整個軟件工業的基礎,當代最主要的操作系統----Windows、MacOS 和 Linux----都與 Unix 有關。由此可見,丹尼斯?里奇的”保持簡單“原則,對計算機時代的影響有多大。

丹尼斯?里奇對世界的貢獻還不止于此。Unix 最早是用不通用的機器語言編寫的,如果換一個型號的計算機,就必須重新編寫一遍。為了提高通用性和開發效率,丹尼斯?里奇決定發明一種新的計算機語言----C 語言。

C 語言也貫徹了“保持簡單”的原則,語法非常簡潔,對使用者的限制很少。丹尼斯?里奇編寫的教材《C 編程語言》總共只有100多頁,薄得難以置信。很多人都被它的簡潔性吸引,學習并使用 C 語言。直到今天,C 語言依然是世界上最重要的編程語言之一,”保持簡單“原則顯示了強大的生命力。

發明 Unix 和 C 語言,給丹尼斯?里奇帶來巨大的榮譽,他得到了1983年的圖靈獎、1990年的漢明獎、1999年的美國國家技術獎章。盡管功成名就,但是就像他的工程設計思想,丹尼斯?里奇在個人生活上也盡量”保持簡單“。他依然住在新澤西,低調地生活,不太在媒體上曝光,終身沒有結婚。

他也始終沒有跳槽,一直在貝爾實驗室工作,盡管后者多次分拆,到了最后已經名存實亡。2001年,接手貝爾實驗室的朗訊公司,決定關閉大多數實驗室,許多研究人員紛紛離開,包括Unix發明者之一的肯?湯普森都去了 Google,但是丹尼斯?里奇哪里也沒去,還是留了下來。2006年12月1日,貝爾實驗室被整體賣給了法國阿爾卡特公司,第二年他就選擇退休了。

退休以后,他過上了隱居生活,外界幾乎忘了他的存在。2011年10月12日,共事20年的同事 Rob Pike 從加州到新澤西去拜訪他,才發現他已經去世了。由于是獨居,無法知道準確的死亡時間。據他的兄弟透露,這幾年丹尼斯?里奇的健康狀況一直不好,他患有前列腺癌和心臟病。

Rob Pike 在 Google Plus 發了一條簡短的消息,”據我所知,Unix和C語言發明人丹尼斯?里奇已經去世“,外界才知道這件事,引發了紀念浪潮。雖然這個過程有點令人傷感,但是必須說,這很符合他的”保持簡單“的原則。

最后生成于 2018-7-9 07:42:00

体彩7位数