圖:C語言之父 Dennis M Ritchie(丹尼斯·里奇), C語言之父,UNIX之父。 C語言是使用最廣泛的語言之一,可以說,C語言的誕生是現(xiàn)代程序語言革命的起點,是程序設計語言發(fā)展史中的一個里程碑。自C語言出現(xiàn)后,以C語言為根基的C++、Java和C#等面向?qū)ο笳Z言相繼誕生,并在各自領(lǐng)域大獲成功。但今天C語言依舊在系統(tǒng)編程、嵌入式編程等領(lǐng)域占據(jù)著統(tǒng)治地位。 C語言,這種最有效、最通用的編程語言,就是他開發(fā)的,而這還是他在做另一個項目時的副產(chǎn)品。Dennis Ritchie還和Ken Thompson一起開發(fā)了Unix操作系統(tǒng),因此,他還是名副其實的UNIX之父?,F(xiàn)年64歲的40年如一日在貝爾實驗室/朗訊科技公司(原AT&T實驗室)工作,現(xiàn)在是計算科學研究中心系統(tǒng)軟件研究部主任。 從二十世紀七十年代起,他的工作得到了很多計算機組織的公認和表彰,如:美國計算機協(xié)會(ACM)授予的系統(tǒng)及語言杰出論文獎(1974);電氣和電子工程師協(xié)會(IEEE)的 Emmanuel Piore 獎(1982);貝爾實驗室特別人員獎(1983);美國計算機協(xié)會(ACM)的圖靈獎(1983); NEC公司的 C&C 基金獎(1989);電氣和電子工程師協(xié)會(IEEE)的優(yōu)秀獎章(Hamming Medal)(1990), 等等。 目前,Dennis M. Ritchie 正擔任貝爾實驗室/朗訊科技公司(原AT&T實驗室)下屬的計算科學研究中心系統(tǒng)軟件研究部的主任一職。該中心位于美國新澤西州的 Murray Hill。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《C程序設計語言(The C Programming Language)》,現(xiàn)在此書已翻譯成多種語言,成為C語言方面最權(quán)威的教材之一。 大師的修煉之道
有人問過Dennis,他的偶像是誰,不論在計算機領(lǐng)域還是其他領(lǐng)域? 他說:我不是在英雄熏陶下成長起來的。很顯然,對我職業(yè)生涯影響最大的人物是Ken Thompson。UNIX大部分是他的工作,同樣也是C語言的前輩,同樣Plan 9系統(tǒng)的大部分工作也是他做的。并且在這其間Ken做了第一個計算機象棋大師。 Ritchie生于1941年9月9日的紐約 Bronxville,獲得學士學位并且獲得哈佛大學更高的學位,在那里以肄業(yè)生資格學習物理,以研究生資格學習應用數(shù)學。也正是在這時候,一個偶然的機會改變了他一生的選擇。Ritchie這樣描述他的轉(zhuǎn)變,當他聽取一些非課程類的計算機講座后(大約1960年),開始對計算機著迷,并選擇了一學期正規(guī)(介紹性的)課程。第一部分是模擬計算機,后面是關(guān)于打孔卡片設備的,然后是關(guān)于真正的數(shù)字式計算機的,并為Univac I號機準備了一個程序。當時他是一個主修物理學的學生,但是更加著迷于計算機處理的理論和實際問題。因此,他的畢業(yè)論文大部分是理論方面的(遞歸函數(shù)的層次),但是也開始投入更大精力到實踐方面。作為助教為同一個介紹性課程的后續(xù)版本工作了三年——不過那時計算機已經(jīng)成了IBM7049。 1968年獲得數(shù)學博士,而論文正是上面的《遞歸函數(shù)的的層次》。 1967年加入貝爾實驗室,他的父親Alistair E. Ritchie在那里有長時間的工作經(jīng)歷,他的父親對晶體管電路類的東西很有研究,正是由于父親的影響,也使得他走上了科學研究之路。 不久后,加入了Multics項目,那時由貝爾實驗室、麻省理工學院和通用電器三家的合作項目。Ritchie負責多道處理機的BCPL語言和GE650的編譯器,它們都是屬于GECOS系統(tǒng)的。同樣的,他也寫了ALTRAN語言的代數(shù)編譯器,那是用于符號計算機的一種語言和系統(tǒng)。 圖:Dennis在辦公室里 后來,Ritchie先生協(xié)助Ken Thompson做UNIX操作系統(tǒng)。在UNIX系統(tǒng)基本就緒并且在教育、政府和商業(yè)中得到一定程度的應用時,Steve Johnson和他(在Ken幫助下)開始將這個操作系統(tǒng)移植到Interdata 8/32上,通過這種方式證明其輕便性,基于UNIX快速的傳播:貝爾實驗室的第7版已經(jīng)成為商業(yè)化UNIX的第五版和BSD UNIX的基礎(chǔ)。 在UNIX發(fā)展之前,他向Thompson的B語言中加入數(shù)據(jù)類型和新的句法,就這樣產(chǎn)生了一種新語言——C,這也是他說Thompson是C語言的前輩的原因。C是便攜式UNIX的基礎(chǔ),并且它也在其它領(lǐng)域得到了廣泛應用;計算機各方面的應用程序和系統(tǒng)發(fā)展,從手持設備到巨型機,都有對它的應用。有美國標準和國際標準的C語言,并且它是后來Stroustrup 寫的C++語言的基礎(chǔ)。 他從來沒有間斷過在計算機及其操作系統(tǒng)方面的工作。也因此,他所領(lǐng)導的研究小組開發(fā)出了 Plan 9 和 Inferno。 Ritchie的業(yè)余生活也非常精彩,工作之余,他喜歡干什么呢? 他這樣描述自己的生活,干好多糾纏不清的事,大部分是和計算機相關(guān)的。另一方面,也讀讀書看看報。另一項愛好是旅行,他到過很多地方,特別喜歡旅行,但每次時間都不是很長。他是一個戀家的人,因而有時旅行不久后感到相當疲乏,但喜歡回想旅行經(jīng)歷,這時就很希望能擠出時間在一個具有異國情調(diào)的地方待得時間長一點。 曾有人問過下面的問題,對于一個人是如何涉足軟件工業(yè)領(lǐng)域的,不同人有不同的回答。是什么使Ritchie選擇了她,又是什么使得他在此領(lǐng)域如此瀟灑呢? 他的回答很簡潔:興趣和好奇心! 他說:我開始對于物理學比較感興趣,現(xiàn)在仍然是一個業(yè)余愛好者,試圖跟上物理學的一些新東西。早先上大學時包括讀研究生,我在計算機理論方面花了不少時間(如圖靈機、復雜性理論)。這其間,我對真實的電腦也非常著迷,著迷于所編即所見的經(jīng)歷:當你編出一個程序,便能立即看到你的思想的實現(xiàn)!所有的事情以一種非常有趣的方式聯(lián)系在了一起,也正是這一類的東西促使我進入這一領(lǐng)域。但不知什么原因,我沒有想過我正在這一領(lǐng)域做什么,即使時光倒流到1968年,我想也是如此。 DMR先生對問題的描述非常簡潔。 問:您的生活是怎樣和計算機聯(lián)系在一起的? D M R:在大學的時候我開始對它感興趣(大約1960-61年),我參加了一個非學術(shù)性的講座,關(guān)于大學里的Univac I(通用自動計算機I號),然后就選修了一些課程。 問:您覺得怎樣才是學編程的好方法?學習語言時一種好的工具是不是必需的? D M R:我想你最有必要做下面的事情——編一些小程序,然后編大一點的。 問:怎樣才算是一種好的大學教育呢?尤其對計算科學來說。 D M R:教育知識面最好要寬一些,不要僅僅局限于編程。即使是編程,最好多學幾種語言。我在大學時花了幾年時間學習物理和計算理論知識,現(xiàn)在我仍然對當時的選擇比較滿意。 貝爾實驗室出大師 圖:圖片看貝爾實驗室的發(fā)展 C語言或Unix,任一項發(fā)明足以讓Dennis成為一代又一代程序員們的偶像。但當我們接觸這位偉人之后發(fā)現(xiàn),Dennis是一位非常低調(diào)的人,形成對照的是他在軟件業(yè)成就輝煌的40年。今天,當初與他同期加入貝爾實驗室的科學家中,多數(shù)人都已安享晚年或是自立門戶成為老板,而Dennis還是一如既往地在這里從事自己喜歡的研究工作,著書立說,潛心編程。在完成C語言和Unix兩座高峰后,他還帶領(lǐng)他的研究小組開發(fā)出了 新一代操作系統(tǒng)Plan 9 和 Inferno。 C語言和UNIX的發(fā)展歷程,還讓我們從側(cè)面見證了業(yè)界流流傳很久的話題:貝爾實驗室出大師!而在談到貝爾實驗室成功的原因時,Dennis的評價只有四個字:管理得到! 貝爾實驗室是全球馳名的研發(fā)機構(gòu),遍布全球16個國家,自1937年以來已經(jīng)產(chǎn)生出11位諾貝爾獎獲得者。貝爾實驗室的科學家和研究人員自1925年以來已經(jīng)獲得了40,000多項發(fā)明,30,000多項專利,平均每個工作日超過4項,是全球最多產(chǎn)的發(fā)明源泉之一。 貝爾實驗室原名“貝爾電話實驗室”,1996年10月正式改稱“貝爾實驗室”(Bell Labs),先后為AT&T和朗訊科技公司的研發(fā)機構(gòu),也是后者得以成立的支柱。它主要從事通信科技的基礎(chǔ)研究和技術(shù)發(fā)展工作,目前還從事通信系統(tǒng)和設備的研制工作。 自1925年成立之時起,它一直是世界上規(guī)模最大、通信科技和控制等方面最先進、優(yōu)秀人才最集中和科技成果最突出的工業(yè)研究實驗室或研發(fā)機構(gòu)。它的工作人員從成立時的3600人和年經(jīng)費1200萬美元發(fā)展到1991年的29000人和37億美元。在1999年,雇員人數(shù)仍為25000人,年經(jīng)費36.78億美元,依然雄居世界研發(fā)機構(gòu)的榜首,被稱為“世界首要的研發(fā)機構(gòu)”和研發(fā)的“象牙之塔”。 圖:Ken Thompson (左) 和 Dennis Ritchie從克林頓手中接地過國家技術(shù)獎章 問:在AT&T和Bell實驗室有這樣多的IT發(fā)明和著名人物,您覺得有什么秘決嗎? D M R:我覺得這得益于我們的管理,使得有足夠資金資助研究,更重要的是給予充足的時間和允許某些思想發(fā)展的時間。很幸運的另一點是,這里有一批天才人物的加入。還有一定程度的幸運在里面:1970年代,在計算機硬件條件(如小型機)發(fā)生了巨大的變化,這樣使得許多機構(gòu)可以順利地開展實驗,而這之前是很困難的。 C語言是Dennis的得意這筆,對于這一筆,他看得非常平靜,當問到他對C語言的將來做一下預測時,他的回答十分簡潔:C語言正在被C++,也可能是Java所替代,也可能是更高級的腳本語言。當然,它在關(guān)于系統(tǒng)一類設計中還是相當強的工具。 問:您能對IT的將來做一下預測嗎?將來我們最有可能用什么語言? D M R:我對預測不在行,但是很明顯,人們正在從象C語言之類的直接編譯型語言,轉(zhuǎn)換到注重解釋性的語言,象某些腳本語言。 問:您對面向?qū)ο笫窃鯓永斫獾??它是不是一種好的可接受的編程思考方式?有沒有學習OO必須的有用的工具? D M R:我看過OO的東西但我現(xiàn)在還不是OO迷。這種思想是非常好的,也即是通過隱藏任務的執(zhí)行來定義界面,但是它可能做得有點過火;它以很難發(fā)現(xiàn)工作本質(zhì)的程序終結(jié);它的所有的東西就是界面。 問:數(shù)學和計算機科學有什么關(guān)系嗎? D M R:我覺得計算機科學就是:包括工程學在內(nèi)的對數(shù)學的應用。 問:現(xiàn)在的大學有部分學生中途退學,您怎樣看待這現(xiàn)象呢? D M R:在.com泡沫時期,我曾經(jīng)為此非常擔心,現(xiàn)在,至少現(xiàn)在在我們國家,好象不很普遍了。可能原因在于,人們已經(jīng)不再把計算機科學看作可以立即賺到大把美金的東東了,因此,現(xiàn)在其他的人對這門學科本身更感興趣一點。 問:您對中國和中國的程序員有什么認識?您想對他們說點什么嗎? D M R:我訪問中國好多次,但每次都很短暫,以至于很難形成一個一般的看法。上一次我還記得,在大學的見面會上,我講了一些當時正在從事的工作的情況和歷史,學生們的態(tài)度非常熱情,他們提問所表達出的知識面也很寬博。 問:您怎樣教育自己的孩子和學生? D M R:兩者我都不可能有!我沒結(jié)婚,并且我是在工業(yè)系統(tǒng)而不是學術(shù)機構(gòu)中。 C語言、UNIX雙雙飛
1963年,劍橋大學將ALGOL 60語言發(fā)展成為CPL(Combined Programming Language)語言。 1967年,劍橋大學的Matin Richards 對CPL語言進行了簡化,于是產(chǎn)生了BCPL語言。 1970年, Ken Thompson將BCPL進行了修改,并為它起了一個有趣的名字“B語言”。意思是將CPL語言煮干,提煉出它的精華。 而在1973年,B語言也給人“煮”了一下,在B語言的基礎(chǔ)上最終設計出了一種新的語言,他取了BCPL的第二個字母作為這種語言的名字,這就是C語言。 為了使UNIX操作系統(tǒng)推廣,1977年Dennis M.Ritchie 發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本《可移植的C語言編譯程序》。 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《C程序設計語言(The C Programming Language)》,從而使C語言成為目前世界上流行最廣泛的高級程序設計語言。 1988年,隨著微型計算機的日益普及, 出現(xiàn)了許多C語言版本。由于沒有統(tǒng)一的標準,使得這些C語言之間出現(xiàn)了一些不一致的地方。為了改變這種情況,美國國家標準研究所(ANSI)為C語言制定了一套ANSI標準, 成為現(xiàn)行的C語言標準。 C語言發(fā)展迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。許多著名的系統(tǒng)軟件,如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 語言編寫的。用C語言加上一些匯編語言子程序, 就更能顯示C語言的優(yōu)勢了。C++、Java等語言受C語言影響深刻。 在技術(shù)方面,曾有人問Dennis, C語言設計目標有沒有隨著時間推移而改變?如果沒變,為什么? 他說: 我個人的目標這些年來一直未變,并且,我不是1989和1999年標準的主要推動者。無論1989年ANSI標準還是ISO標準都使事情制度化了,這些條文比我最初寫的文檔要好;最需要加以說明的是我早先關(guān)于函數(shù)原型做的工作,對C++語言的影響是非常重要的一個影響。 而在關(guān)于眾多計算機語言的激烈辯論中,始終處在中心位置的C語言作者Dennis卻顯得很平靜。西班牙的一位大學生曾經(jīng)問過他類似的問題: 如果 UNIX 被選為過去和當前的操作系統(tǒng),盡管過去幾年出現(xiàn)了一些面向?qū)ο蟮恼Z言,毫無疑問C 也將被認為是“唯一的語言”。你怎么看待 C++ 和 Java,以及 C 和 C++ 程序員之間在 UseNet 上經(jīng)常發(fā)生的激烈爭論呢? 他說:C++ 的很大一部分得宜于 C。因為 C 早在 C++ 出現(xiàn)之前就已經(jīng)具有了非常好的兼容性,所以 C++ 才可以采用 C 作為建構(gòu)自身的基礎(chǔ)并使用它來開發(fā)自己的編譯器。C 被設計成為一種便攜式匯編語言,對于這一特性人們褒貶不一,C++ 則試圖把編程方法提高到面向?qū)ο筮@種更抽象的層次上來。從最近形成的標準來看,二者共同的缺點是:帶有過多的裝飾和附屬物。同樣的,它們都采用了相同的編程思想,都試圖按照真正的需求來編寫代碼。Java 顯然是 C++ 的改進版本。它砍掉了 C 中的指針操作部分,引入了生成獨立于機器的目標文件這種編程思想(雖然這個思想并不是很新的,但是也許直到現(xiàn)在它才真正可行了)。既然 Sun 和 Microsoft 公司(它的產(chǎn)品同樣的有過多的裝飾附件)已經(jīng)把 Java 作為它們之間競爭的工具,誰也難以預料事態(tài)將向何處發(fā)展。
問:您是怎樣發(fā)明C語言的?發(fā)明的過程是什么樣子的。它對您的生活和研究有什么影響嗎? D M R:公正地說,發(fā)明C語言的目的是:為了寫編譯器和語言設計,為了更易于編寫UNIX操作系統(tǒng)程序,我們做的一個可以在小型計算機上使用的工具。Unix做的比較好,并且PC開始相當普遍,由于C語言在Unix上的很好地應用,使得用它來寫應用程序和操作系統(tǒng)迅速增長起來。因此,對我來說,C語言的確非常重要。 問:您覺得C語言和C++有什么不同嗎? D M R:多年以來,C和C++,已經(jīng)是兩種不同的語言了;Stroustrup先生汲取了C語言語法和潛在的語義學中的許多東西,形成了C++語言。在一些交叉領(lǐng)域,標準委員會盡量使兩種語言兼容。 問:您覺得計算機語言和我們?nèi)祟惖恼Z言有什么不同呢? D M R:計算機語言更加正式和明確,有統(tǒng)一的規(guī)則,當然,它們都是經(jīng)過設計的。人類語言有語法,但相對來說不很正式,有些規(guī)則可以打破,當然,它們有不同的目的——為了同人交流而不是同機器交流。 人物印象 D M R先生的專業(yè)精神令人感動,近40年如一日,在他所從事的領(lǐng)域辛勤耕耘,而他的多項發(fā)明,包括C語言,Unix,也包括現(xiàn)在正在進行的Plan9,無論哪一項,在軟件發(fā)展史上都有著舉足輕重的地位,和他的偉大成就形成對照的是他的行事,態(tài)度低調(diào),他的表達,象他的軟件一樣,簡潔生動而準確。 C++的成功,很大一部分也來自于C,是C語言的普及和深入,才有了后面的鳳凰涅盤,從另一個角度,在同另一語言大師Pascal之父Niklaus Wirth交流時,C++的名字也是源自C語言的利器,Wirth先生不無惋惜地表示,后來他開發(fā)的語言可惜沒叫Pascal2。
|
|