不知不覺, 丹尼斯·里奇辭世 3 周年了。2011年10月12日,和里奇共事 20 多年的同事 Rob Pike 從加州到新澤西去拜訪他,才發(fā)現(xiàn)他已經(jīng)去世了。由于是獨(dú)居,當(dāng)時無法知道準(zhǔn)確的死亡時間,后來確定離世日期是2011年10月9日。據(jù)他的兄弟透露,這幾年丹尼斯·里奇的健康狀況一直不好,他患有前列腺癌和心臟病。
喬布斯和丹尼斯·里奇都是在同年同月離世。但之后每年的這段時間,很多媒體都會紀(jì)念喬布斯,但很少提到丹尼斯·里奇。
下面 2011年10月是 liujinmarshall(應(yīng)是翻譯)的評論文章:
---------------------------------
人們對里奇的紀(jì)念,遠(yuǎn)不及對喬布斯鋪天蓋地的悼念??墒牵锲嬷档萌藗兡菢尤プ?。還是有人出來說了句公道話。
“史蒂夫·喬布斯上周去世引發(fā)了巨大的反響,這當(dāng)然合情合理。即便影響實(shí)際上更為廣泛,丹尼斯卻不為公眾所知”,羅伯·派克說。羅伯是一名在Google工作的程序員,作為業(yè)界的傳奇性人物,曾經(jīng)與里奇在著名的貝爾實(shí)驗(yàn)室共事20年。
周三晚間,派克在Google+上發(fā)表消息稱,在與病魔進(jìn)行長久的抗?fàn)幒?,里奇于上周末在新澤西的家中溘然長逝。雖然在技術(shù)圈內(nèi)引起大量反響,但在主流媒體上,里奇卻沒有得到同巨大影響相稱的悼念。丹尼斯·里奇作為C語言之父,和貝爾實(shí)驗(yàn)室資深研究員肯·湯姆森一起使用C語言開發(fā)了Unix,當(dāng)今世界大量依賴的操作系統(tǒng),其中包括史蒂夫·喬布斯治下的蘋果帝國。
丹尼斯·里奇(站立者)與肯·湯姆森 于1972年于一臺PDP-12前合影 (照片來源:貝爾實(shí)驗(yàn)室提供)
“現(xiàn)下互聯(lián)網(wǎng)基本都在用這兩樣?xùn)|西:C語言和UNIX”,派克對《連線》雜志稱,“瀏覽器是用C語言寫的。UNIX的內(nèi)核——基本上是因特網(wǎng)運(yùn)作的基礎(chǔ)——也是用C寫的。Web服務(wù)器也是用C語言寫的,如果不是的話,那就是用Java或者C++寫的,兩者都是C語言的派生;要不就是Python或者Ruby,用C語言實(shí)現(xiàn)的。然后我?guī)缀醺冶WC,運(yùn)行這些程序的網(wǎng)絡(luò)硬件,是用C語言開發(fā)的軟件驅(qū)動的。”
“幾乎很難夸大丹尼斯在信息經(jīng)濟(jì)基礎(chǔ)設(shè)施方面無所不在的影響力。”
他補(bǔ)充說,Windows曾經(jīng)也是用C語言編寫,而UNIX同時也支撐了蘋果桌面操作系統(tǒng)Mac OS X,以及iPhone與iPad的操作系統(tǒng)iOS。“如果說喬布斯是臺前之王,那里奇就是幕后之王。”MIT電氣工程與計(jì)算機(jī)系教授Martin Rinard如此評價道。Rinard也是計(jì)算機(jī)科學(xué)與人工智能實(shí)驗(yàn)室的成員。
“喬布斯的過人之處在于其品位獨(dú)特,打造人們?yōu)橹圆⒁俗⒛康漠a(chǎn)品。而里奇卻擅長于開發(fā)一些技術(shù)人員使用的基礎(chǔ)設(shè)施,天天被人們使用卻不為人知。”
從B語言到C語言
為了更好開發(fā)UNIX,丹尼斯·里奇而發(fā)明了C語言。最初的UNIX內(nèi)核使用匯編語言編寫,之后他們很快決定要用一種高級語言,讓他們更好的駕馭操作系統(tǒng)中的復(fù)雜數(shù)據(jù)。1970年左右,他們嘗試使用Fortran,不過沒有達(dá)到預(yù)期目標(biāo)。接著,在湯姆森創(chuàng)立的B語言基礎(chǔ)上,里奇提出了一門新語言。
不管你是從哪里聽來的消息,B語言得名于湯姆森的妻子Bonnie,抑或是BCPL,一門劍橋于60年代中期開發(fā)的語言。
B語言是一種解釋性語言——意味著它由一個運(yùn)行于CPU之上的中間件解釋執(zhí)行——而C卻是一門編譯語言。它被翻譯成機(jī)器代碼,在CPU上直接執(zhí)行。即便如此,C當(dāng)時被認(rèn)為是一門高級語言。C語言提供了里奇和湯姆森想要的靈活性,卻也很快。
C語言的第一個版本和現(xiàn)在的樣子相差不太多,相對簡單點(diǎn)。它可以自定義數(shù)據(jù)結(jié)構(gòu)和類型并聲明變量,里奇和湯姆森就是用它編寫了UNIX新內(nèi)核。“他們發(fā)明了C來開發(fā)程序”,十年之后加入貝爾實(shí)驗(yàn)室的派克說,“而那個程序就是UNIX內(nèi)核。”
關(guān)于里奇一直流傳的一個笑話是:C語言同時擁有了“匯編語言的強(qiáng)大能力以及…匯編語言的便利性”。換句話說,他承認(rèn)C語言并不完美,并且十分接近硬件層次。如今C語言被認(rèn)為是一門低級語言而不是高級語言。不過這個笑話并不公平。C語言提供了真正的數(shù)據(jù)結(jié)構(gòu)概念,從這個角度來說已經(jīng)足夠高級了。
“當(dāng)你在編寫一個大型程序——比如UNIX——你必須管理好各種各樣模塊之間的交互:所有用戶、文件系統(tǒng)、磁盤、程序執(zhí)行等等。而有效的管理則需要良好的數(shù)據(jù)表示,這就是所謂的數(shù)據(jù)結(jié)構(gòu)”,派克說。
“在沒有數(shù)據(jù)結(jié)構(gòu)組織的情況下,編寫一個與UNIX一樣一致和優(yōu)雅的內(nèi)核基本上是不可能的。需要一個機(jī)制組織好數(shù)據(jù),而Fortran卻不擅長于此。”
在那個時候,寫一個操作系統(tǒng)并不多見,這也給了里奇和湯姆森機(jī)會,在70年代末把操作系統(tǒng)移植到其它平臺。“從此UNIX洪水之門被打開”,派克說,“這全都多虧有了C語言。”
蘋果、微軟及其他
與此同時,C語言也開始傳播到全世界,從貝爾實(shí)驗(yàn)室到全世界的大學(xué),也到了微軟,一個在80年代異軍突起的軟件公司。“C語言的開發(fā)是一個重大的飛躍,是個很好的折衷…C語言達(dá)到了完美的平衡,讓你在較高層次高效率開發(fā)的同時,卻不失去對每處細(xì)節(jié)的控制”,NVIDIA和貝爾的首席科學(xué)家兼斯坦福大學(xué)工程系教授Bill Dally說。“它為之后數(shù)十年來軟件開發(fā)定下了基調(diào)。”
正如派克指出的那樣,C語言內(nèi)置的數(shù)據(jù)結(jié)構(gòu)后來發(fā)展出面向?qū)ο蠓妒?,被現(xiàn)代編程語言如C++和Java大量采用。
1973年,里奇發(fā)表了關(guān)于這門語言的論文,被認(rèn)為是革命開始的標(biāo)志。5年后,他和同事布萊恩·克尼漢(Brian Kernighan)發(fā)布了C語言的權(quán)威著作:《C程序設(shè)計(jì)語言》。該書最早是克尼漢為C語言編寫的教程,后來他拉著丹尼斯一起把書寫完。
當(dāng)派克還在多倫多大學(xué)讀本科的時候,在一個因病返家的下午里讀到了這本書。“那本參考手冊相對于其他的手冊而言,簡直就是清晰和可讀的典范。毋庸置疑是一部經(jīng)典之作。”,他說,“我生病躺床上翻一翻,沒想到竟讓我忘記了病痛。”
和許多大學(xué)生一樣,Pike那時已經(jīng)開始使用C語言了。由于貝爾實(shí)驗(yàn)室開始分發(fā)UNIX源代碼,它逐漸風(fēng)靡大學(xué)校園。此外,UNIX還催生了現(xiàn)代開源運(yùn)動。這并不是什么言過其實(shí),里奇的影響之大怎么說都不為過。即便里奇在1983年獲得的圖靈獎和1998年獲得的國家技術(shù)勛章也不能完全彰顯他的貢獻(xiàn)。
在克尼漢和派克眼中,里奇是一個少有的孤僻的人。“我和他一同工作了超過20個年頭,但還是覺得不是很了解他這個人”,派克說。但這并不是他低調(diào)的理由。史蒂夫·喬布斯也是一個孤僻的人,只不過保持低調(diào)只使得人們對他的崇拜有增無減。
里奇所處的時代和工作環(huán)境與喬布斯千差萬別,這也許是他未得到應(yīng)得紀(jì)念的原因。但是,他留下的遺產(chǎn)總有大佬能夠明白。“眾所周知牛頓說過他是站在巨人的肩膀上”,克尼漢說,“我們都站在丹尼斯的肩膀上。”