1. 程式人生 > >C語言之父丹尼斯·裡奇

C語言之父丹尼斯·裡奇

丹尼斯·裡奇具體介紹網址:http://baike.baidu.com/view/6648356.htm?qq-pf-to=pcqq.c2c#1

人們對裡奇的紀念,遠不及對喬布斯鋪天蓋地的悼念。可是,裡奇值得人們那樣去做。


  還是有人出來說了句公道話。

  “史蒂夫·喬布斯去世引發了巨大的反響,這當然合情合理。即便影響實際上更為廣泛,丹尼斯卻不為公眾所知”,羅伯·派克說。羅伯是一名在Google工作的程式設計師,作為業界的傳奇性人物,曾經與裡奇在著名的貝爾實驗室共事20年。

  週三晚間,派克在Google+上發表訊息稱,在與病魔進行長久的抗爭後,裡奇於上週末在新澤西的家中溘然長逝。雖然在技術圈內引起大量反響,但在
主流媒體上,裡奇卻沒有得到同巨大影響相稱的悼念。丹尼斯·裡奇作為C語言之父,和貝爾實驗室資深研究員肯·湯姆森一起使用C語言開發了Unix,當今世界大量依賴的作業系統,其中包括史蒂夫·喬布斯治下的蘋果帝國。

  “現下網際網路基本都在用這兩樣東西:C語言和UNIX”,派克對《連線》雜誌稱,“瀏覽器是用C語言寫的。UNIX的核心——基本上是因特網運作的基礎——也是用C寫的。Web伺服器也是用C語言寫的,如果不是的話,那就是用Java或者C++寫的,兩者都是C語言的派生;要不就是Python或者Ruby,用C語言實現的。然後我幾乎敢保證,執行這些程式的網路硬體,是用C語言開發的軟體驅動的。”

  “幾乎很難誇大丹尼斯在資訊經濟基礎設施方面無所不在的影響力。”


  他補充說,Windows曾經也是用C語言編寫,而UNIX同時也支撐了蘋果桌面作業系統Mac OS X,以及iPhone與iPad的作業系統iOS。“如果說喬布斯是臺前之王,那裡奇就是幕後之王。”MIT電氣工程與計算機系教授Martin Rinard如此評價道。Rinard也是電腦科學與人工智慧實驗室的成員。

  “喬布斯的過人之處在於其品位獨特,打造人們為之著迷並引人注目的產品。而裡奇卻擅長於開發一些技術人員使用的基礎設施,天天被人們使用卻不為人知。”

從B語言到C語言

  為了更好開發UNIX,丹尼斯·裡奇而發明了C語言。最初的UNIX核心使用匯編語言編寫,之後他們很快決定要用一種高階語言,讓他們更好的駕馭作業系統中的複雜資料。1970年左右,他們嘗試使用Fortran,不過沒有達到預期目標。接著,在湯姆森創立的B語言基礎上,裡奇提出了一門新語言。


  不管你是從哪裡聽來的訊息,B語言得名於湯姆森的妻子Bonnie,抑或是BCPL,一門劍橋於60年代中期開發的語言。

  B語言是一種解釋性語言——意味著它由一個運行於CPU之上的中介軟體解釋執行——而C卻是一門編譯語言。它被翻譯成機器程式碼,在CPU上直接執行。即便如此,C當時被認為是一門高階語言。C語言提供了裡奇和湯姆森想要的靈活性,卻也很快。

  C語言的第一個版本和現在的樣子相差不太多,相對簡單點。它可以自定義資料結構和型別並宣告變數,裡奇和湯姆森就是用它編寫了UNIX新核心。“他們發明了C來開發程式”,十年之後加入貝爾實驗室的派克說,“而那個程式就是UNIX核心。”

  關於裡奇一直流傳的一個笑話是:C語言同時擁有了“組合語言的強大能力以及...組合語言的便利性”。換句話說,他承認C語言並不完美,並且十分接近硬體層次。如今C語言被認為是一門低階語言而不是高階語言。不過這個笑話並不公平。C語言提供了真正的資料結構概念,從這個角度來說已經足夠高階了。

  “當你在編寫一個大型程式——比如UNIX——你必須管理好各種各樣模組之間的互動:所有使用者、檔案系統、磁碟、程式執行等等。而有效的管理則需要良好的資料表示,這就是所謂的資料結構”,派克說。

  “在沒有資料結構組織的情況下,編寫一個與UNIX一樣一致和優雅的核心基本上是不可能的。需要一個機制組織好資料,而Fortran卻不擅長於此。”

  在那個時候,寫一個作業系統並不多見,這也給了裡奇和湯姆森機會,在70年代末把作業系統移植到其它平臺。“從此UNIX洪水之門被開啟”,派克說,“這全都多虧有了C語言。”

蘋果、微軟及其他

  與此同時,C語言也開始傳播到全世界,從貝爾實驗室到全世界的大學,也到了微軟,一個在80年代異軍突起的軟體公司。“C語言的開發是一個重大的飛躍,是個很好的折衷...C語言達到了完美的平衡,讓你在較高層次高效率開發的同時,卻不失去對每處細節的控制”,NVIDIA和貝爾的首席科學家兼斯坦福大學工程系教授Bill Dally說。“它為之後數十年來軟體開發定下了基調。”

  正如派克指出的那樣,C語言內建的資料結構後來發展出面向物件正規化,被現代程式語言如C++和Java大量採用。

  1973年,裡奇發表了關於這門語言的論文,被認為是革命開始的標誌。5年後,他和同事布萊恩·克尼漢(Brian Kernighan)釋出了C語言的權威著作:《C程式設計語言》。該書最早是克尼漢為C語言編寫的教程,後來他拉著丹尼斯一起把書寫完。

  當派克還在多倫多大學讀本科的時候,在一個因病返家的下午裡讀到了這本書。“那本參考手冊相對於其他的手冊而言,簡直就是清晰和可讀的典範。毋庸置疑是一部經典之作。”,他說,“我生病躺床上翻一翻,沒想到竟讓我忘記了病痛。”

  和許多大學生一樣,Pike那時已經開始使用C語言了。由於貝爾實驗室開始分發UNIX原始碼,它逐漸風靡大學校園。此外,UNIX還催生了現代開源運動。這並不是什麼言過其實,裡奇的影響之大怎麼說都不為過。即便裡奇在1983年獲得的圖靈獎和1998年獲得的國家技術勳章也不能完全彰顯他的貢獻。

  在克尼漢和派克眼中,裡奇是一個少有的孤僻的人。“我和他一同工作了超過20個年頭,但還是覺得不是很瞭解他這個人”,派克說。但這並不是他低調的理由。史蒂夫·喬布斯也是一個孤僻的人,只不過保持低調只使得人們對他的崇拜有增無減。

  裡奇所處的時代和工作環境與喬布斯千差萬別,這也許是他未得到應得紀念的原因。但是,他留下的遺產總有大佬能夠明白。“眾所周知牛頓說過他是站在巨人的肩膀上”,克尼漢說,“我們都站在丹尼斯的肩膀上。”