丹尼斯·里奇,那個給喬布斯提供肩膀的巨
C語言之父丹尼斯·里奇先生於2011年10月8日在位於美國新澤西州的家中病逝。這一新聞在廣大計算機的愛好者和研究人員中引起巨大反響,然而諸多悼詞和追憶的描述卻不夠準確。在此,我們借本文回顧里奇先生一生的巨大貢獻,願世人緬懷,願先生安息。
里奇先生被譽為C語言之父,他不但和肯·湯普森(Ken Thompson)一起創造了C語言。他還開發出了UNIX操作系統,我們如今使用的很多操作系統都是建構在UNIX內核之上,包括蘋果帝國的所有產品。
回憶一周之前,喬布斯去世時,網路上鋪天蓋地諸多讚譽與哀思,其產品風靡所帶來的全球性用戶崇拜史無前例。其實,里奇先生更應享受這些讚譽,甚至更多。
羅伯是里奇的同事,二人在貝爾實驗室共事20年,正是他在第一時間於Google+上發表這則新聞。羅伯說:
當喬布斯去世時,享受到了聲勢浩大的追思。相形之下,里奇先生對當代科技進程做出了更大的貢獻,可公眾甚至不知道他是誰,這十分不公平。
網路已經成為當代生活不可或缺的一部分。然而,缺少了里奇所創造的 C 語言和 UNIX ,網路和任何網路產品都不可能存在。比如,瀏覽器是用 C 語言寫的,網路伺服器是C語言寫的,很多人反駁說他們所使用的是 JAVA 或者 C++,但它們也是 C 語言的衍生物。包括網頁架構時的 Python 和 Ruby 兩種程序語言,也是基於 C 語言的。除此而外,所有的網路硬體產品都是 C 語言所編寫的,而 UNIX 是整個網際網路所運行的基礎。由此可見,我們怎樣評價里奇先生的豐功偉績,都不足為過。甚至Windows 也曾經用C 語言寫過,蘋果公司用於個人電腦、iPad和iPhone上的操作系統,都是基於UNIX的。
麻省理工大學計算機系的馬丁教授評價說:
如果說,喬布斯是可視化產品中的國王,那麼里奇就是不可見王國中的君主。喬布斯的貢獻在於,他如此了解用戶的需求和渴求,以至於創造出了讓當代人樂不思蜀的科技產品。然而,卻是里奇先生為這些產品提供了最核心的部件,人們看不到這些部件,卻每天都在使用著。
從B語言到C語言
1972年,丹尼斯·里奇和肯·湯普森在操作PDP-11迪吉多電腦
里奇開發 C 語言的初衷,是在與肯·湯普森合作研發 UNIX 系統時需要一種更好的描述性語言。
剛開始,UNIX 內核是使用彙編語言編寫而成的。然而隨著開發進展,數據量猛增,能夠對數據進行有效整理和靈活操作的需求便應運而生。在1970年前後,他們嘗試通過改進 Fortran 語言來進行數據管理和操作,卻沒有達到預想的目的。隨即幾年後,二人合作公布出了 B 語言。
關於 B 語言的名字由來,傳言有兩個版本。一說B是為了紀念肯恩的妻子邦妮(Bonnie),另有說法稱, B 指代 BCPL,這是上世紀60年代中期由劍橋大學開發出的一種計算機語言。這兩種說法孰是孰非並不重要,重要的是 B 語言的命名決定了其後的改進版本被命名為, C 語言。
B 語言是一種解釋性語言,也就是說它在軟體運行和 CPU 運行中起到中間層的作用。與此不同, C 語言是編譯語言,它在運行之前被編譯成機器語言,直接在 CPU 上運行,其運行速度非B語言所能比。
最早期的 C 語言和我們如今所使用的版本框架上並沒有太大出入,但是功能簡化許多。當時為了滿足研發新型 UNIX 內核的需要,它主要提供了數據結構和變數類型。
里奇曾開玩笑稱, C 語言擁有彙編語言的力量和彙編語言的便利性。這句話的意思是, C 語言的運行方式更接近於硬體系統。但是,里奇的這句玩笑並沒有準確定位 C 語言的地位, C 語言所提供的數據結構,力發千鈞,足以貫穿所有高層和底層的語言。
羅伯解釋數據結構的重要性:
當你在編寫一個大型程序的時候,你需要管理各個組件之間的聯繫,包括用戶、文件、硬碟、程序執行等等。為了對這些部分進行有效的控制,首先就需要對所使用的信息和數據進行清晰有效的表達,這個表達形式就是數據結構。
正如 UNIX 的源代碼清晰流暢,可讀性強。如果沒有一個好的數據結構作為基礎,這是不可能實現的。比如,當我們需要對大量數據進行分類和整合的時候,如果使用的是 Fortran 語言,就會變得束手無策。
由於 C 語言中對於數據結構的有效準確的定義,使得其具有強大的可移植性。這種特性使得用C語言所編寫出的操作系統可以用於不同的平台,這正是里奇在研發 UNIX 時最主要的初衷,也是如今新型操作系統的主流開發方法。
蘋果,微軟,以及其他,都是站在里奇的肩膀上比爾是英偉達公司的首席科學家,同時也是斯坦福大學貝爾實驗室的教授,他說:
C 語言的開發是科技史上不可磨滅的偉大貢獻,因為這個語言把握住了計算機科技中一個至關重要的並且是恰到好處的中間點,一方面它具備搭建高層產品的能力,另一方面又能夠對於底層數據進行有效控制。正是由於這種關聯性和樞紐性作用,決定了 C 語言所導向的近三十年來計算機編程主流方式。
從貝爾實驗室到微軟,再到眾人所熟知的利器, C 語言是怎樣在科技打造世界的革命中成為了最強有力的武器呢?
革命風潮始發於1973年,里奇發表出第一篇關於C語言的學術性論文。5年之後,他和同事布萊恩·克尼漢撰寫出里程碑式的一本書《C程序設計語言》(The C Programming Language)。克尼漢日後回憶說,為了說服里奇加入合著陣營他費盡口舌,他笑稱甚至險些「扭斷了里奇的胳膊」。
羅伯對於里奇的崇拜正是來源於這本書。當時,他還是多倫多大學裡的一名本科生,他回憶道:「我是在病床上第一次讀這本書,立馬就被其清晰的描述和深入淺出的解讀給吸引住了,這種語言和邏輯的清晰準確表達是日後任何教材或者參考手冊都無法超越的,它堪稱經典,甚至讓我忘記了當時正在生病。」
通過這本書,當年如羅伯一樣的很多大學生開始使用 C 語言。尤其當貝爾實驗室公布出 UNIX 的源代碼之後,C語言的風潮已經勢不可擋。可以說, UNIX 源代碼的公布不僅推進了計算機語言的發展,更決定了日後互聯網時代的開源計劃是應始之驅。里奇於1983年被授予圖靈獎,並且於1998年獲得了國家科技勳章。
羅伯介紹說,里奇是一個非常低調地科研工作者。和喬布斯力圖形成壟斷的個人主義截然不同,里奇一直希望自己的工作能夠為更多的科研工作者所用,能夠為他人日後的科研工作和科技進展提供便利。
克尼漢評價道:牛頓說他是站在巨人的肩膀上,如今,我們都站在里奇的肩膀上。
這句話,應該是對丹尼斯·里奇先生的一生最有力也是最中肯的評價。
推薦閱讀:
※喬布斯或將70億美元遺產直接轉給妻子
※【我突然想起他們倆:喬布斯與沃茲】
※喬布斯《遺失的訪談》全文:塵封16年的預見
※喬布斯傳111031
※喬布斯也有人性的弱點