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