保持簡單----紀(jì)念丹尼斯?里奇(Dennis Ritchie)
文/阮一峰
1954年,電氣工程師阿利斯泰爾•里奇(Alistair E. Ritchie),決定舉家從紐約州的布朗克斯維爾(Bronxville),搬到幾十公里以外的新澤西。這樣可以離他的工作單位"貝爾實(shí)驗(yàn)室"更近一些。
13歲的丹尼斯•里奇(Dennis Ritchie),就這樣隨著父親一起來到新澤西。那時(shí),誰也沒有想到,這個(gè)文靜的少年將在這里待上一輩子,并且創(chuàng)造出改變世界的發(fā)明。
中學(xué)畢業(yè)后,丹尼斯•里奇聽從父親的建議,進(jìn)入哈佛大學(xué)學(xué)習(xí)應(yīng)用數(shù)學(xué),直到拿到博士學(xué)位。他的第一份工作,是為軍方研制核武器,這并不符合他的志趣。1967年,通過父親介紹,26歲的他進(jìn)入貝爾實(shí)驗(yàn)室,從事剛剛興起的計(jì)算機(jī)研究。從此,他在新澤西老家一住就是44年,直到去世。
他在貝爾實(shí)驗(yàn)室的第一個(gè)任務(wù),是參與大項(xiàng)目Multics,即開發(fā)一個(gè)前所未有的、可以多人使用的、同時(shí)運(yùn)行多個(gè)程序的操作系統(tǒng)。該項(xiàng)目由貝爾實(shí)驗(yàn)室、麻省理工學(xué)院和通用電氣公司三方聯(lián)合研制,但是由于設(shè)計(jì)過于復(fù)雜,遲遲拿不出成果,1969年貝爾實(shí)驗(yàn)室宣布退出。
第一個(gè)任務(wù)這樣無果而終,丹尼斯•里奇很不甘,但也無能為力。誰知過完了夏天,比他小兩歲的同事肯•湯普森(Ken Thompson)找上門,說借鑒Multics的設(shè)計(jì)思路,做了一個(gè)個(gè)人項(xiàng)目Unix,問他有沒有興趣一起參與。丹尼斯•里奇立刻表示同意,于是兩人一起投入U(xiǎn)nix的開發(fā)???bull;湯普森的專業(yè)是電子工程,丹尼斯•里奇專業(yè)是應(yīng)用數(shù)學(xué),正好互補(bǔ)。經(jīng)過日以繼夜的工作,1969年圣誕節(jié)前,Unix已經(jīng)可以初步運(yùn)行了。
吸取了Multics設(shè)計(jì)復(fù)雜而導(dǎo)致失敗的教訓(xùn),丹尼斯•里奇將Unix的設(shè)計(jì)原則定為"保持簡單和直接"(Keep it simple stupid),也就是后來著名的KISS原則。為了做到這一點(diǎn),Unix由許多小程序組成,每個(gè)小程序只能完成一個(gè)功能,任何復(fù)雜的操作都必須分解成一些基本步驟,由這些小程序逐一完成,再組合起來得到最終結(jié)果。
表面上看,這樣的設(shè)計(jì)很低效:為了取得結(jié)果,你必須運(yùn)行一連串小程序,那么為什么不用一個(gè)大程序一次運(yùn)行就得到結(jié)果呢?但是事實(shí)證明,由于小程序之間可以像積木一樣自由組合,所以非常靈活,能夠輕易完成大量意想不到的任務(wù)。而且,計(jì)算機(jī)硬件的升級(jí)速度非???,所以性能也不是一個(gè)問題。另一方面,開發(fā)單一目的的小程序,要比開發(fā)大型程序容易得多,所以Unix才有可能在短短幾個(gè)月內(nèi)問世。
Unix迅速在程序員中流傳,到了80年代,已經(jīng)成為主流操作系統(tǒng),演變成整個(gè)軟件工業(yè)的基礎(chǔ),當(dāng)代最主要的操作系統(tǒng)----Windows、MacOS和Linux----都與Unix有關(guān)。由此可見,丹尼斯•里奇的"保持簡單"原則,對計(jì)算機(jī)時(shí)代的影響有多大。
丹尼斯•里奇對世界的貢獻(xiàn)還不止于此。Unix最早是用不通用的機(jī)器語言編寫的,如果換一個(gè)型號(hào)的計(jì)算機(jī),就必須重新編寫一遍。為了提高通用性和開發(fā)效率,丹尼斯•里奇決定發(fā)明一種新的計(jì)算機(jī)語言----C語言。
C語言也貫徹了"保持簡單"的原則,語法非常簡潔,對使用者的限制很少。丹尼斯•里奇編寫的教材《C編程語言》總共只有100多頁,薄得難以置信。很多人都被它的簡潔性吸引,學(xué)習(xí)并使用C語言。直到今天,C語言依然是世界上最重要的編程語言之一,"保持簡單"原則顯示了強(qiáng)大的生命力。
發(fā)明Unix和C語言,給丹尼斯•里奇帶來巨大的榮譽(yù),他得到了1983年的圖靈獎(jiǎng)、1990年的漢明獎(jiǎng)、1999年的美國國家技術(shù)獎(jiǎng)?wù)?。盡管功成名就,但是就像他的工程設(shè)計(jì)思想,丹尼斯•里奇在個(gè)人生活上也盡量"保持簡單"。他依然住在新澤西,低調(diào)地生活,不太在媒體上曝光,終身沒有結(jié)婚。
他也始終沒有跳槽,一直在貝爾實(shí)驗(yàn)室工作,盡管后者多次分拆,到了最后已經(jīng)名存實(shí)亡。2001年,接手貝爾實(shí)驗(yàn)室的朗訊公司,決定關(guān)閉大多數(shù)實(shí)驗(yàn)室,許多研究人員紛紛離開,包括Unix發(fā)明者之一的肯•湯普森都去了Google,但是丹尼斯•里奇哪里也沒去,還是留了下來。2006年12月1日,貝爾實(shí)驗(yàn)室被整體賣給了法國阿爾卡特公司,第二年他就選擇退休了。
退休以后,他過上了隱居生活,外界幾乎忘了他的存在。2011年10月12日,共事20年的同事Rob Pike從加州到新澤西去拜訪他,才發(fā)現(xiàn)他已經(jīng)去世了。由于是獨(dú)居,無法知道準(zhǔn)確的死亡時(shí)間。據(jù)他的兄弟透露,這幾年丹尼斯•里奇的健康狀況一直不好,他患有前列腺癌和心臟病。
Rob Pike在Google Plus發(fā)了一條簡短的消息,"據(jù)我所知,Unix和C語言發(fā)明人丹尼斯•里奇已經(jīng)去世",外界才知道這件事,引發(fā)了紀(jì)念浪潮。雖然這個(gè)過程有點(diǎn)令人傷感,但是必須說,這很符合他的"保持簡單"的原則。
(完)
via ruanyifeng
