丹尼斯·裡奇:讓賈伯斯立足肩上的 C 語言之父

發表於2014-01-03

在網際網路上,幾乎所有東西都會使用C語言和Unix作業系統,但C語言之父的離世卻很少有人緬懷。2011 年,人們對賈伯斯的去世記憶深刻,但這一年還有另一位本應獲得同樣關注的人物也與世長辭,他就是C語言之父丹尼斯·裡奇(Dennis Ritchie)。

不過,並非所有人都沒能正確認識到裡奇所曾作出的貢獻。

“賈伯斯的逝世引起了一片哭聲,那種情形非常動人,而且賈伯斯受到這樣的待遇也是合情合理的。但在事實上,裡奇對這個世界的影響更大,然而公眾 卻甚至都不知道他到底是誰。”程式設計領域中的傳奇人物、目前供職於谷歌的羅伯·派克(Rob Pike)說道,他曾在貝爾實驗室與裡奇共事 20 年。

在裡奇去世時,派克在 Google+ 社交網路上發帖宣佈了這一噩耗。2011 年 10 月 8 日,在經歷了長時間的病痛折磨後,裡奇在他位於美國新澤西州的家中與世長辭。在資深科技人士中,人們對這一訊息所作出的反應是巨大的;但在網際網路上,人們 向裡奇獻上的悼詞完全無法與他對現代社會帶來的廣泛影響畫上等號。

C語言之父

丹尼斯·裡奇被譽為“C語言之父”,他在生前與貝爾實驗室的合作伙伴肯·湯普森(Ken Thompson)一起利用這種程式語言開發出了 Unix 作業系統。在隨後的歲月裡,整個科技世界中有太多東西都是在這個作業系統的基礎上構建起來的,其中也包括賈伯斯生前所建立和管理的蘋果“帝國”。

“在網際網路上,幾乎所有東西都會使用C語言和 Unix 作業系統。”派克在近日接受《連線》雜誌採訪時說道。“瀏覽器是用C語言寫成的;Unix 核心是用C語言寫成的;網路伺服器是用C語言寫成的,否則就是用衍生自C語言的 Java 或 C++ 語言寫成的,要麼就是 Python 或 Ruby 語言,而這兩種語言都是在C語言中執行的。此外,我幾乎可以擔保,所有執行這些程式的網路硬體也都是用C語言寫成的。”

Dennis Ritchie

C語言之父丹尼斯·裡奇

“現代資訊經濟在極大程度上是在裡奇生前所做工作的基礎上建立起來的,對此無論用多麼誇張的言辭來形容都不為過。”派克說道。

他還補充道,就連微軟 Windows 作業系統也曾是用C語言來程式設計的;而且,Unix 還為蘋果的桌面作業系統 Mac OS X 和移動作業系統 iOS 提供了支援。“賈伯斯可以說是‘有形之王’,而裡奇則基本上應該算是‘無形之王’。”麻省理工學院電子工程大學和電腦科學教授、電腦科學及人工智慧實 驗室(Computer Science and Artificial Intelligence Laboratory)成員馬丁·里納德(Martin Rinard)說道。

“賈伯斯的天才之處在於,他能造出這些令人們深深喜愛的產品,這是因為他很有品味,能作出讓人們歎服不已的東西。而裡奇造出的東西能讓那些技術人士用來構建核心的基礎設施,這些基礎設施在建成以後不一定會讓人們再看得到,但卻每天都用得到。”

從“B”到“C”

裡奇之所以開發出C語言,是因為他和湯普森需要一種更好的方式來構建 Unix 系統。最早的 Unix 核心是用匯編語言程式設計的,但不久以後兩人決定需要開發出一種“更高階別”的語言,能讓他們對遍及這個作業系統中的所有資料都具備更大的控制力。1970 年前後,他們用 Fortran 語言開發出了第二個版本的 Unix 系統,但效果並不理想。然後,裡奇就基於湯普森開發的“B語言”提出了一種新的語言。

關於B語言的得名有兩種說法,一種說法是來自湯普森的妻子邦妮(Bonnie),另一種說法則是來自上個世紀六十年代中期誕生於劍橋大學的 BCP 語言。但無論如何,C語言是從B語言衍生出來的這一點都是毋庸置疑的。

B 語言是一種解釋性語言,而C語言則是一種編譯語言,可被轉譯為機器編碼,然後在 CPU 上被直接執行。在當時,C語言被認為是一種更高階別的語言,不但能給裡奇和湯普森帶來他們所需要的靈活性,同時速度也很快。

與人們今天所知的C語言相比,第一個版本的C語言並無多大不同,只是稍微簡單一些。這種語言能提供完整的資料結構和變數型別,令裡奇和湯普森得 以構建了新的 Unix 核心。“他們開發出C語言是為了寫一個程式。”派克說道,他在C語言問世的十年以後加入了貝爾實驗室。“而那時他們想要編寫的程式就是 Unix 核心。”

裡奇曾開玩笑地說道,C語言擁有“組合語言的力量及其便利性”。換而言之,他承認C語言是一種不那麼華麗的語言,其執行位置仍非常接近硬體。在 今天,C語言被視為一種低階別的語言,而非高階別。但裡奇的這句玩笑話對這種新的語言來說也並不那麼公平,原因是從提供真實的資料結構這一方面來說,其運 行級別足夠高。

相關文章