丹尼斯·里奇被譽(yù)為“C語言之父”,他在生前與貝爾實(shí)驗(yàn)室的合作伙伴肯·湯普森(Ken Thompson)一起利用這種編程語言開發(fā)出了Unix操作系統(tǒng)。在隨后的歲月里,整個科技世界中有太多東西都是在這個操作系統(tǒng)的基礎(chǔ)上構(gòu)建起來的,其中也包括喬布斯生前所建立和管理的蘋果“帝國”。
“在互聯(lián)網(wǎng)上,幾乎所有東西都會使用C語言和Unix操作系統(tǒng)?!迸煽嗽诮战邮堋哆B線》雜志采訪時說道?!盀g覽器是用C語言寫成的;Unix內(nèi)核是用C語言寫成的;網(wǎng)絡(luò)服務(wù)器是用C語言寫成的,否則就是用衍生自C語言的Java或C++語言寫成的,要么就是Python或Ruby語言,而這兩種語言都是在C語言中執(zhí)行的。此外,我?guī)缀蹩梢該?dān)保,所有運(yùn)行這些程序的網(wǎng)絡(luò)硬件也都是用C語言寫成的。”
“現(xiàn)代信息經(jīng)濟(jì)在極大程度上是在里奇生前所做工作的基礎(chǔ)上建立起來的,對此無論用多么夸張的言辭來形容都不為過?!迸煽苏f道。
他還補(bǔ)充道,就連微軟Windows操作系統(tǒng)也曾是用C語言來編程的;而且,Unix還為蘋果的桌面操作系統(tǒng)Mac OS X和移動操作系統(tǒng)iOS提供了支持?!皢滩妓箍梢哉f是‘有形之王’,而里奇則基本上應(yīng)該算是‘無形之王’。”麻省理工學(xué)院電子工程大學(xué)和計算機(jī)科學(xué)教授、計算機(jī)科學(xué)及人工智能實(shí)驗(yàn)室(Computer Science and Artificial Intelligence Laboratory)成員馬丁·里納德(Martin Rinard)說道。
“喬布斯的天才之處在于,他能造出這些令人們深深喜愛的產(chǎn)品,這是因?yàn)樗苡衅肺?,能作出讓人們嘆服不已的東西。而里奇造出的東西能讓那些技術(shù)人士用來構(gòu)建核心的基礎(chǔ)設(shè)施,這些基礎(chǔ)設(shè)施在建成以后不一定會讓人們再看得到,但卻每天都用得到?!?/span>
正所謂“吃水不忘挖井人”,在互聯(lián)網(wǎng)發(fā)展的今天,讓我們一起來了解這位偉人:
1954年,電氣工程師阿利斯泰爾·里奇(Alistair E. Ritchie),決定舉家從紐約州的布朗克斯維爾(Bronxville),搬到幾十公里以外的新澤西。這樣可以離他的工作單位”貝爾實(shí)驗(yàn)室”更近一些。
13歲的丹尼斯·里奇(Dennis Ritchie),就這樣隨著父親一起來到新澤西。那時,誰也沒有想到,這個文靜的少年將在這里待上一輩子,并且創(chuàng)造出改變世界的發(fā)明。
中學(xué)畢業(yè)后,丹尼斯·里奇聽從父親的建議,進(jìn)入哈佛大學(xué)學(xué)習(xí)應(yīng)用數(shù)學(xué),直到拿到博士學(xué)位。他的第一份工作,是為軍方研制核武器,這并不符合他的志趣。1967年,通過父親介紹,26歲的他進(jìn)入貝爾實(shí)驗(yàn)室,從事剛剛興起的計算機(jī)研究。從此,他在新澤西老家一住就是44年,直到去世。
Dennis Ritchie 丹尼斯·里奇
他在貝爾實(shí)驗(yàn)室的第一個任務(wù),是參與大項目Multics,即開發(fā)一個前所未有的、可以多人使用的、同時運(yùn)行多個程序的操作系統(tǒng)。該項目由貝爾實(shí)驗(yàn)室、麻省理工學(xué)院和通用電氣公司三方聯(lián)合研制,但是由于設(shè)計過于復(fù)雜,遲遲拿不出成果,1969年貝爾實(shí)驗(yàn)室宣布退出。
第一個任務(wù)這樣無果而終,丹尼斯·里奇很不甘,但也無能為力。誰知過完了夏天,比他小兩歲的同事肯·湯普森(Ken Thompson)找上門,說借鑒Multics的設(shè)計思路,做了一個個人項目Unix,問他有沒有興趣一起參與。丹尼斯·里奇立刻表示同意,于是兩人一起投入Unix的開發(fā)??稀丈膶I(yè)是電子工程,丹尼斯·里奇專業(yè)是應(yīng)用數(shù)學(xué),正好互補(bǔ)。經(jīng)過日以繼夜的工作,1969年圣誕節(jié)前,Unix已經(jīng)可以初步運(yùn)行了。
吸取了Multics設(shè)計復(fù)雜而導(dǎo)致失敗的教訓(xùn),丹尼斯·里奇將Unix的設(shè)計原則定為”保持簡單和直接”(Keep it simple stupid),也就是后來著名的KISS原則。為了做到這一點(diǎn),Unix由許多小程序組成,每個小程序只能完成一個功能,任何復(fù)雜的操作都必須分解成一些基本步驟,由這些小程序逐一完成,再組合起來得到最終結(jié)果。
表面上看,這樣的設(shè)計很低效:為了取得結(jié)果,你必須運(yùn)行一連串小程序,那么為什么不用一個大程序一次運(yùn)行就得到結(jié)果呢?但是事實(shí)證明,由于小程序之間可以像積木一樣自由組合,所以非常靈活,能夠輕易完成大量意想不到的任務(wù)。而且,計算機(jī)硬件的升級速度非???,所以性能也不是一個問題。另一方面,開發(fā)單一目的的小程序,要比開發(fā)大型程序容易得多,所以Unix才有可能在短短幾個月內(nèi)問世。
Unix迅速在程序員中流傳,到了80年代,已經(jīng)成為主流操作系統(tǒng),演變成整個軟件工業(yè)的基礎(chǔ),當(dāng)代最主要的操作系統(tǒng)—-Windows、MacOS和Linux—-都與Unix有關(guān)。由此可見,丹尼斯·里奇的”保持簡單”原則,對計算機(jī)時代的影響有多大。
丹尼斯·里奇對世界的貢獻(xiàn)還不止于此。Unix最早是用不通用的機(jī)器語言編寫的,如果換一個型號的計算機(jī),就必須重新編寫一遍。為了提高通用性和開發(fā)效率,丹尼斯·里奇決定發(fā)明一種新的計算機(jī)語言—-C語言。
C語言也貫徹了”保持簡單”的原則,語法非常簡潔,對使用者的限制很少。丹尼斯·里奇編寫的教材《C編程語言》總共只有100多頁,薄得難以置信。很多人都被它的簡潔性吸引,學(xué)習(xí)并使用C語言。直到今天,C語言依然是世界上最重要的編程語言之一,”保持簡單”原則顯示了強(qiáng)大的生命力。
發(fā)明Unix和C語言,給丹尼斯·里奇帶來巨大的榮譽(yù),他得到了1983年的圖靈獎、1990年的漢明獎、1999年的美國國家技術(shù)獎?wù)?。盡管功成名就,但是就像他的工程設(shè)計思想,丹尼斯·里奇在個人生活上也盡量”保持簡單”。他依然住在新澤西,低調(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)確的死亡時間。據(jù)他的兄弟透露,這幾年丹尼斯·里奇的健康狀況一直不好,他患有前列腺癌和心臟病。
Rob Pike在Google Plus發(fā)了一條簡短的消息,”據(jù)我所知,Unix和C語言發(fā)明人丹尼斯·里奇已經(jīng)去世”,外界才知道這件事,引發(fā)了紀(jì)念浪潮。
而今天,我們是站在巨人的肩上,但,請不要忘記時代的先驅(qū)—丹尼斯·里奇(Dennis Ritchie)