1. 程式人生 > >丹尼斯·裡奇,那個給喬布斯提供肩膀的巨人[轉載]

丹尼斯·裡奇,那個給喬布斯提供肩膀的巨人[轉載]

http://img1.guokr.com/gkimage/0v/dp/c8/0vdpc8.png

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語言

http://img1.guokr.com/gkimage/qd/t6/9c/qdt69c.png

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年獲得了國家科技勳章。

羅伯介紹說,裡奇是一個非常低調地科研工作者。和喬布斯力圖形成壟斷的個人主義截然不同,裡奇一直希望自己的工作能夠為更多的科研工作者所用,能夠為他人日後的科研工作和科技進展提供便利。

克尼漢評價道:牛頓說他是站在巨人的肩膀上,如今,我們都站在裡奇的肩膀上。

這句話,應該是對丹尼斯·裡奇先生的一生最有力也是最中肯的評價。

圖片和資訊來源: wired

轉載這篇文章來表達對計算機專家、C語言的發明人丹尼斯.裡奇的悼念。