2011年,人們對喬布斯的去世記憶深刻,但這一年還有另一位本應(yīng)獲得同樣關(guān)注的人物也與世長辭,他就是C語言之父丹尼斯·里奇(Dennis Ritchie)。
不過,并非所有人都沒能正確認識到里奇所曾作出的貢獻。
“喬布斯的逝世引起了一片哭聲,那種情形非常動人,而且喬布斯受到這樣的待遇也是合情合理的。但在事實上,里奇對這個世界的影響更大,然而公眾卻甚至都不知道他到底是誰。”編程領(lǐng)域中的傳奇人物、目前供職于(微博)的羅伯·派克(Rob Pike)說道,他曾在貝爾實驗室與里奇共事20年。
在里奇去世時,派克在Google+社交網(wǎng)絡(luò)上發(fā)帖宣布了這一噩耗。2011年10月8日,在經(jīng)歷了長時間的病痛折磨后,里奇在他位于美國新澤西州的家中與世長辭。在資深科技人士中,人們對這一消息所作出的反應(yīng)是巨大的;但在互聯(lián)網(wǎng)上,人們向里奇獻上的悼詞完全無法與他對現(xiàn)代社會帶來的廣泛影響畫上等號。
C語言之父
丹尼斯·里奇被譽為“C語言之父”,他在生前與貝爾實驗室的合作伙伴肯·湯普森(Ken Thompson)一起利用這種編程語言開發(fā)出了Linux操作系統(tǒng)。在隨后的歲月里,整個科技世界中有太多東西都是在這個操作系統(tǒng)的基礎(chǔ)上構(gòu)建起來的,其中也包括喬布斯生前所建立和管理的“帝國”。
“在互聯(lián)網(wǎng)上,幾乎所有東西都會使用C語言和Unix操作系統(tǒng)。”派克在近日接受《連線》雜志采訪時說道。“瀏覽器是用C語言寫成的;Unix內(nèi)核是用C語言寫成的;網(wǎng)絡(luò)服務(wù)器是用C語言寫成的,否則就是用衍生自C語言的Java或C++語言寫成的,要么就是Python或Ruby語言,而這兩種語言都是在C語言中執(zhí)行的。此外,我?guī)缀蹩梢該?dān)保,所有運行這些程序的網(wǎng)絡(luò)硬件也都是用C語言寫成的。”
“現(xiàn)代信息經(jīng)濟在極大程度上是在里奇生前所做工作的基礎(chǔ)上建立起來的,對此無論用多么夸張的言辭來形容都不為過。”派克說道。
他還補充道,就連Windows操作系統(tǒng)也曾是用C語言來編程的;而且,Unix還為蘋果的桌面操作系統(tǒng)Mac OS X和移動操作系統(tǒng)iOS提供了支持。“喬布斯可以說是‘有形之王’,而里奇則基本上應(yīng)該算是‘無形之王’。”麻省理工學(xué)院電子工程大學(xué)和計算機科學(xué)教授、計算機科學(xué)及人工智能實驗室(Computer Science and Artificial Intelligence Laboratory)成員馬丁·里納德(Martin Rinard)說道。
“喬布斯的天才之處在于,他能造出這些令人們深深喜愛的產(chǎn)品,這是因為他很有品味,能作出讓人們嘆服不已的東西。而里奇造出的東西能讓那些技術(shù)人士用來構(gòu)建核心的基礎(chǔ)設(shè)施,這些基礎(chǔ)設(shè)施在建成以后不一定會讓人們再看得到,但卻每天都用得到。”
從“B”到“C”
里奇之所以開發(fā)出C語言,是因為他和湯普森需要一種更好的方式來構(gòu)建Unix系統(tǒng)。最早的Unix內(nèi)核是用匯編語言編程的,但不久以后兩人決定需要開發(fā)出一種“更高級別”的語言,能讓他們對遍及這個操作系統(tǒng)中的所有數(shù)據(jù)都具備更大的控制力。1970年前后,他們用Fortran語言開發(fā)出了第二個版本的Linux系統(tǒng),但效果并不理想。然后,里奇就基于湯普森開發(fā)的“B語言”提出了一種新的語言。
關(guān)于B語言的得名有兩種說法,一種說法是來自湯普森的妻子邦妮(Bonnie),另一種說法則是來自上個世紀六十年代中期誕生于劍橋大學(xué)的BCP語言。但無論如何,C語言是從B語言衍生出來的這一點都是毋庸置疑的。
B語言是一種解釋性語言,而C語言則是一種編譯語言,可被轉(zhuǎn)譯為機器編碼,然后在CPU上被直接執(zhí)行。在當(dāng)時,C語言被認為是一種更高級別的語言,不但能給里奇和湯普森帶來他們所需要的靈活性,同時速度也很快。
與人們今天所知的C語言相比,第一個版本的C語言并無多大不同,只是稍微簡單一些。這種語言能提供完整的數(shù)據(jù)結(jié)構(gòu)和變量類型,令里奇和湯普森得以構(gòu)建了新的Unix內(nèi)核。“他們開發(fā)出C語言是為了寫一個程序。”派克說道,他在C語言問世的十年以后加入了貝爾實驗室。“而那時他們想要編寫的程序就是Unix內(nèi)核。”
里奇曾開玩笑地說道,C語言擁有“匯編語言的力量及其便利性”。換而言之,他承認C語言是一種不那么華麗的語言,其運行位置仍非常接近硬件。在今天,C語言被視為一種低級別的語言,而非高級別。但里奇的這句玩笑話對這種新的語言來說也并不那么公平,原因是從提供真實的數(shù)據(jù)結(jié)構(gòu)這一方面來說,其運行級別足夠高。