丹尼斯·里奇 - 個人簡介
C語言之父
丹尼斯·里奇(1941年9月9日—),出生于美國紐約。他是一位美國計算機科學家,他對ALTRAN、B語言、BCPL、C語言、Multics和Unix的發(fā)展做出了巨大貢獻。
里奇在哈佛大學學習物理學和應用數(shù)學畢業(yè),1967年他進入貝爾實驗室,目前他是朗訊技術公司系統(tǒng)軟件研究部門的領導人。1983年他與肯·湯普遜一起獲得了圖靈獎。理由是他們“研究發(fā)展了通用的操作系統(tǒng)理論,尤其是實現(xiàn)了UNIX操作系統(tǒng)”。1999年兩人為發(fā)展C語言和Unix操作系統(tǒng)一起獲得了美國國家科技獎章。
丹尼斯·里奇 - 表彰
1974年,美國計算機協(xié)會(ACM)授予他系統(tǒng)及語言杰出論文獎。
1982年,電氣和電子工程師協(xié)會(IEEE)授予他EmmanuelPiore獎。
1983年,他獲得了貝爾實驗室特別人員獎和
1983年,還獲得美國計算機協(xié)會頒發(fā)的圖靈獎(又稱計算機界的諾貝爾獎)。
1989年,他獲得了NEC公司的C&C基金獎。
1990年,電氣和電子工程師協(xié)會又給他頒發(fā)了優(yōu)秀獎章(HammingMedal)
1999年,他和同為UNIX之父的KenThompson獲得美國國家技術獎章
丹尼斯·里奇 - 大師的修煉之道
Ritchie生于1941年9月9日的紐約Bronxville,獲得學士學位并且獲得哈佛大學博士學位,在哈佛,先是學習物理,而后轉向應用數(shù)學。正是在這時候,一個偶然的機會改變了他一生的選擇。
大約1960年,Ritchie聽取一些非課程類的計算機講座后,開始對計算機著迷,并選擇了一學期正規(guī)(介紹性的)課程。第一部分是模擬計算機,后面是關于打孔卡片設備的,然后才是關于真正的數(shù)字式計算機的,并為UnivacI號機準備了一個程序。當時他是一個主修物理的學生,但是更加著迷于計算機處理的理論和實際問題。因此,他的畢業(yè)論文大部分是理論方面的,例如1968年獲得數(shù)學博士時的論文《遞歸函數(shù)的的層次》;但是他也開始投入更大精力到實踐方面,例如,作為助手,在IBM7049計算機上用了三年時間為同一個介紹性課程做后續(xù)版本。
在Ritchie的成長歷程中,有兩個人對他的影響最大,一個是他父親AlistairE.Ritchie,而另一個是他的摯友,同為UNIX發(fā)明人的KenThompson。
由于父親的指引,他進入全球知名的研發(fā)機構——貝爾實驗室。Dennis的父親在貝爾實驗室有長時間的工作經(jīng)歷,對晶體管電路類的東西很有研究。1967年在父親指引下加入貝爾實驗室。不久后,加入了Multics(MultiplexedInformationandComputingSystem)項目,正是這個項目,使得他和KenThompsom有了合作的機會。該項目由貝爾實驗室、麻省理工學院和通用電器三家合作,Ritchie負責多道處理機的BCPL語言和GE650的編譯器,它們都是屬于GECOS系統(tǒng)的,同樣的,他也寫了ALTRAN語言的代數(shù)編譯器,那是用于符號計算機的一種語言和系統(tǒng)。
關于KenThompson,可以從后面他對此問題的回答中得到印證。有人問過Dennis,他的偶像是誰?他的回答挺有意思。
他說:我不是在英雄熏陶下成長起來的。很顯然,對我職業(yè)生涯影響最大的人物是KenThompson。UNIX大部分是他的工作,同樣也是C語言的前輩,Plan9系統(tǒng)的大部分工作也是他做的。并且在這其間Ken做了第一個計算機象棋大師。
Dennis協(xié)助KenThompson做UNIX操作系統(tǒng),在UNIX系統(tǒng)基本就緒并且在教育、政府和商業(yè)中得到一定程度的應用時,他和另一名同伴在Ken幫助下,開始將這個操作系統(tǒng)移植到Interdata8/32上,通過這種方式證明其輕便性,基于UNIX快速的傳播:貝爾實驗室的第7版已經(jīng)成為商業(yè)化UNIX的第五版和BSDUNIX的基礎——這是UNIX快速傳播的兩個版本。
在UNIX發(fā)展之過程中,他向Thompson的B語言中加入數(shù)據(jù)類型和新的句法,就這樣產(chǎn)生了一種新語言——C,這也是他說Thompson是C語言的前輩的原因,C是便攜式UNIX的基礎,并且它也在其它領域得到了廣泛應用;計算機各方面的應用程序和系統(tǒng)發(fā)展,從手持設備到巨型機,都有對它的應用,還有美國標準和國際標準的C語言,并且它是后來BjarneStroustrup寫的C++語言的基礎。
他從來沒有間斷過在計算機及其操作系統(tǒng)方面的工作,他所領導的研究小組開發(fā)出了Plan9和Inferno。
Ritchie的業(yè)余生活也非常精彩,工作之余,有自己精彩生活。
他這樣描述自己的生活,干的大部分是和計算機相關的,有點糾纏不清的事情。另一方面,也時常讀讀書看看報。
另一項愛好是旅行,他到過很多地方,特別喜歡旅行,但每次時間都不是很長?赡芤驗樗且粋戀家的人,因而有時旅行不久后感到相當疲乏。但喜歡回想旅行經(jīng)歷,這時就很希望能擠出時間在一個具有異國情調(diào)的地方待得時間長一點。
曾有人問過下面的問題,對于一個人是如何涉足軟件工業(yè)領域的,不同人有不同的回答。是什么使Ritchie選擇了她,又是什么使得他在此領域如此瀟灑呢?
他的回答很簡潔:興趣和好奇心!他說:我開始對于物理學比較感興趣,現(xiàn)在仍然是一個業(yè)余愛好者,試圖跟上物理學的一些新東西。早先上大學時,包括讀研究生,我在計算機理論方面花了不少時間(如圖靈機、復雜性理論)。這其間,我對真實的電腦也非常著迷,著迷于所編即所見的經(jīng)歷:當你編出一個程序,便能立即看到你的思想的實現(xiàn)!所有的事情以一種非常有趣的方式聯(lián)系在了一起,也正是這一類的東西促使我進入這一領域。但不知什么原因,我沒有真正想過我正在這一領域做什么,即使時光倒流到1968年,我想也是如此。
一如Dennis開發(fā)的軟件,DMR先生對問題的描述非常簡潔。
問:您的生活是怎樣和計算機聯(lián)系在一起的?
DMR:在大學的時候我開始對它感興趣(大約1960-61年),我參加了一個非學術性的講座,關于大學里的UnivacI(通用自動計算機I號),然后就選修了一些課程。
問:您覺得怎樣才是學編程的好方法?學習語言時一種好的工具是不是必需的?
DMR:我想你最有必要做下面的事情——編一些小程序,然后編大一點的。
問:怎樣才算是一種好的大學教育呢?尤其對計算科學來說。
DMR:教育知識面最好要寬一些,不要僅僅局限于編程。即使是編程,最好多學幾種語言。我在大學時花了幾年時間學習物理和計算理論知識,現(xiàn)在我仍然對當時的選擇比較滿意。
問:數(shù)學和計算機科學有什么關系嗎?
DMR:我覺得計算機科學就是:包括工程學在內(nèi)的對數(shù)學的應用。
問:您怎樣教育自己的孩子和學生?
DMR:兩者我都不可能有!我沒結婚,并且我是在工業(yè)系統(tǒng)而不是學術機構中。
問:您對中國和中國的程序員有什么認識?您想對他們說點什么嗎?
DMR:我訪問中國好多次,但每次都很短暫,以至于很難形成一個一般的看法。上一次我還記得,在大學的見面會上,我講了一些當時正在從事的工作的情況和歷史,學生們的態(tài)度非常熱情,他們提問所表達出的知識面也很寬博。
C語言或UNIX,任一項發(fā)明足以讓Dennis成為一代又一代程序員們的偶像。但當我們接觸這位偉人之后發(fā)現(xiàn),Dennis是一位非常低調(diào)的人,形成對照的是他在軟件業(yè)成就輝煌的40年。
今天,當初與他同期加入貝爾實驗室的科學家中,多數(shù)人都已安享晚年或是自立門戶成為老板,而Dennis還是一如既往地在這里從事自己喜歡的研究工作,著書立說,潛心編程。在完成C語言和UNIX兩座高峰后,他還帶領他的研究小組開發(fā)出了新一代操作系統(tǒng)Plan9和Inferno。
C語言和UNIX的發(fā)展歷程,還讓我們從側面見證了業(yè)界流流傳很久的話題:貝爾實驗室出大師!而在談到貝爾實驗室成功的原因時,Dennis的評價只有四個字:管理得當!
在談到貝爾實驗室時,雖然它的稱呼、Logo不斷變化,但Dennis評價“貝爾實驗室仍然是相當不錯的干事的地方”。
貝爾實驗室(BellLabs)是全球馳名的研發(fā)機構,遍布全球16個國家,自1937年以來已經(jīng)產(chǎn)生出11位諾貝爾獎獲得者。貝爾實驗室的科學家和研究人員自1925年以來已經(jīng)獲得了40,000多項發(fā)明,30,000多項專利,平均每個工作日超過4項,是全球最多產(chǎn)的發(fā)明源泉之一。
貝爾實驗室原名“貝爾電話實驗室”,1996年10月正式改名為“貝爾實驗室”(BellLabs),先后為AT&T和朗訊科技公司的研發(fā)機構,也是后者得以成立的支柱。它主要從事通信科技的基礎研究和技術發(fā)展工作,目前還從事通信系統(tǒng)和設備的研制工作。
自1925年成立之初,它一直是世界上規(guī)模最大、通信科技和控制等方面最先進、優(yōu)秀人才最集中和科技成果最突出的工業(yè)研究實驗室或研發(fā)機構,它的工作人員從成立時的3600人和年經(jīng)費1200萬美元發(fā)展到1991年的29000人和37億美元。在1999年,雇員人數(shù)仍為25000人,年經(jīng)費36.78億美元,依然雄居世界研發(fā)機構的榜首,被稱為“世界首要的研發(fā)機構”和研發(fā)的“象牙之塔”。
美國國家技術獎章的統(tǒng)計數(shù)字是貝爾實驗室成就的有力補充說明,第一次的獎章是授予貝爾實驗室,1999年,Ritchie和Thompson因為在貝爾實驗室的受人矚目的成績獲得此項殊榮,是第六次以集體的名義和第七次個人名義獲得國家技術獎章。
問:在AT&T和Bell實驗室有這樣多的IT發(fā)明和著名人物,您覺得有什么秘決嗎?
DMR:我覺得這得益于我們的管理,使得有足夠資金資助研究,更重要的是給予充足的時間和允許某些思想發(fā)展的時間。很幸運的另一點是,這里有一批天才人物的加入。還有一定程度的幸運在里面:1970年代,在計算機硬件條件(如小型機)發(fā)生了巨大的變化,這樣使得許多機構可以順利地開展實驗,而這之前是很困難的。
問:現(xiàn)在的大學有部分學生中途退學,您怎樣看待這現(xiàn)象呢?
DMR:在.com泡沫時期,我曾經(jīng)為此非常擔心,現(xiàn)在,至少現(xiàn)在在我們國家,好象不很普遍了?赡茉蛟谟,人們已經(jīng)不再把計算機科學看作可以立即賺到大把美金的東東了,因此,現(xiàn)在其他的人對這門學科本身更感興趣一點。
C語言UNIX雙雙飛
作為一門偉大的語言,C語言的發(fā)展頗為有趣,C語言是借助UNIX操作系統(tǒng)的翅膀而起飛的,UNIX操作系統(tǒng)也由于C而得以快速移植落地生根,兩者相輔相承,成就了軟件史上最精彩的一幕。
1967年,Dennis參與的第一個項目是Multics,UNIX的誕生和Multics有一定淵源的。Multics是一個操作系統(tǒng)項目,被設計運行在GE-5大型主機上,但是由于整個目標過于龐大,糅合了太多的特性,Multics雖然發(fā)布了一些產(chǎn)品,但是性能都很低,最終以失敗而告終。
AT&T最終撤出了投入Multics項目的資源,其中一個開發(fā)者,KenThompson則繼續(xù)為GE-5開發(fā)軟件,并最終編寫了一個太空旅行游戲。經(jīng)過實際運行后,他發(fā)現(xiàn)游戲速度很慢而且耗費昂貴。在DennisRitchie的幫助下,Thompson用PDP-7的匯編語言重寫了這個游戲,并使其在DECPDP-7上運行起來。這次經(jīng)歷加上Multics項目的經(jīng)驗,促使Thompson開始了一個DECPDP-7上的新操作系統(tǒng)項目。Thompson和Ritchie領導一組開發(fā)者,開發(fā)了一個新的多任務操作系統(tǒng),這個項目被稱為UNICS(UniplexedInformationandComputingSystem),因為它可以支持同時的多用戶操作,也就是后來的UNIX。
最初的UNIX是用匯編語言編寫的,一些應用是由叫做B語言的解釋型語言和匯編語言混合編寫的,在移植的過程中遇到不少麻煩。早在對Multics項目調(diào)整過程中,就迫切需要一門高級計算機語言做工具,可供選擇的范圍僅僅是PL/I、Fortran等,經(jīng)過一一實驗,不得不放棄,最后Ken決定設計一種自己的語言,將BCPL語言壓縮到僅有8KB的內(nèi)存中,B語言誕生了。
B語言也并非無懈可擊,由于自身局限性,在設計UNIX操作系統(tǒng)時讓設計者吃了不少苦頭,為了解決程序的可移植性問題,他們決定對它進行簡單改進,形成NB語言。但NB在UNIX的移植方面依然不盡人意,此后Dennis又對NB語言做了改進,C語言誕生。
這是個劃時代的動作,C語言讓UNIX能夠輕易地被移植到各種不同的機器上,為UNIX的迅速普及立下汗馬功勞。
1977年Dennis發(fā)表了不依賴于具體機器系統(tǒng)的C語言編譯文本——《可移植的C語言編譯程序》,UNIX操作系統(tǒng)得已推廣的另一項有利舉措是標準化。種種得力舉措,從而使C語言成為目前世界上流行最廣泛的高級程序設計語言之一。
1978年BrianW.Kernighan和DennisM.Ritchie出版的名著《C程序設計語言(TheCProgrammingLanguage)》,常被人們稱為K&R版C教材或“白皮書”,為C語言的推廣普及立下汗馬功勞。
1988年,美國國家標準研究所(ANSI)為C語言制定了一套ANSI標準。隨著標準化的深入,C語言發(fā)展迅速,成為最受歡迎的語言之一。
而Dennis由于C語言和UNIX兩項成就,成為許多編程愛好者膜拜的對象。也正因此,和Ken二人于1983年獲得有計算機界諾貝爾獎的ACM圖靈獎。
C語言最初被用于UNIX的編寫,后來它被眾多程序員狂熱擁戴,成為使用最廣泛的系統(tǒng)開發(fā)語言,這卻是Dennis本人也沒有預料到的。
現(xiàn)在,C語言,作為一種通用的程序設計語言,它主要用來進行系統(tǒng)程序設計。具有高效、靈活、功能豐富、表達力強和移植性好等的特點,在程序員中備受青睞。C語言廣泛應用于不同的操作系統(tǒng),例如UNIX、MS-DOS、MicrosoftWindows及Linux等。C語言是一種面向過程的語言,同時具有高級語言和匯編語言的優(yōu)點。在C語言的基礎上發(fā)展起來的有支持多種程序設計風格的C++語言,網(wǎng)絡上廣泛使用的Java、JavaScript,微軟的C#等。
而UNIX作為一種一種多用戶、多任務的通用操作系統(tǒng),已發(fā)展成為當前使用普遍、影響深遠的工業(yè)界主流的操作系統(tǒng),成為重要的企業(yè)級操作平臺,廣泛運行于PC、小型機等各種環(huán)境,用于大型信息系統(tǒng)的關鍵業(yè)務服務,如數(shù)據(jù)庫和Internet主機。
在技術方面,曾有人問Dennis,C語言設計目標有沒有隨著時間推移而改變?如果沒變,為什么?他說:我個人的目標這些年來一直未變,并且,我不是1989和1999年標準的主要推動者。無論1989年ANSI標準還是ISO標準都使事情制度化了,這些條文比我最初寫的文檔要好;最需要加以說明的是我早先關于函數(shù)原型做的工作,對C++語言的影響是非常重要的一個影響。
而在關于眾多計算機語言優(yōu)劣性能的激烈辯論中,始終處在中心位置的C語言作者Dennis卻顯得很平靜。西班牙的一位大學生曾經(jīng)問過他類似的問題:如果UNIX被選為過去和當前的操作系統(tǒng),盡管過去幾年出現(xiàn)了一些面向對象的語言,毫無疑問C也將被認為是“唯一的語言”。你怎么看待C++和Java,以及C和C++程序員之間在UseNet上經(jīng)常發(fā)生的激烈爭論呢?
他說:C++的很大一部分得宜于C。因為C早在C++出現(xiàn)之前就已經(jīng)具有了非常好的兼容性,所以C++才可以采用C作為建構自身的基礎并使用它來開發(fā)自己的編譯器。C被設計成為一種便攜式匯編語言,對于這一特性人們褒貶不一,C++則試圖把編程方法提高到面向對象這種更抽象的層次上來。從最近形成的標準來看,二者共同的缺點是:帶有過多的裝飾和附屬物。同樣的,它們都采用了相同的編程思想,都試圖按照真正的需求來編寫代碼。Java顯然是C++的改進版本。它砍掉了C中的指針操作部分,引入了生成獨立于機器的目標文件這種編程思想(雖然這個思想并不是很新的,但是也許直到現(xiàn)在它才真正可行了)。既然Sun和Microsoft公司(它的產(chǎn)品同樣的有過多的裝飾附件)已經(jīng)把Java作為它們之間競爭的工具,誰也難以預料事態(tài)將向何處發(fā)展。
C語言是Dennis的得意這筆,對于這一筆,他看得非常平靜,當問到他對C語言的將來做一下預測時,他的回答十分簡潔:C語言正在被C++,也可能是Java所替代,也可能是更高級的腳本語言。當然,它在關于系統(tǒng)一類設計中還是相當強的工具。
問:您是怎樣發(fā)明C語言的?發(fā)明的過程是什么樣子的。它對您的生活和研究有什么影響嗎?
DMR:公正地說,發(fā)明C語言的目的是:為了寫編譯器和語言設計,為了更易于編寫UNIX操作系統(tǒng)程序,我們做的一個可以在小型計算機上使用的工具。UNIX做的比較好,并且PC開始相當普遍,由于C語言在UNIX上的很好地應用,使得用它來寫應用程序和操作系統(tǒng)迅速增長起來。因此,對我來說,C語言的確非常重要。
問:您覺得C語言和C++有什么不同嗎?
DMR:多年以來,C和C++,已經(jīng)是兩種不同的語言了;Stroustrup先生汲取了C語言語法和潛在的語義學中的許多東西,形成了C++語言。在一些交叉領域,標準委員會盡量使兩種語言兼容。
問:您覺得計算機語言和我們?nèi)祟惖恼Z言有什么不同呢?
DMR:計算機語言更加正式和明確,有統(tǒng)一的規(guī)則,當然,它們都是經(jīng)過設計的。人類語言有語法,但相對來說不很正式,有些規(guī)則可以打破,當然,它們有不同的目的——為了同人交流而不是同機器交流。
問:您對面向對象是怎樣理解的?它是不是一種好的可接受的編程思考方式?有沒有學習OO必須的有用的工具?
DMR:我看過OO的東西但我現(xiàn)在還不是OO迷。這種思想是非常好的,也即是通過隱藏任務的執(zhí)行來定義界面,但是它可能做得有點過火;它以很難發(fā)現(xiàn)工作本質(zhì)的程序終結;它的所有的東西就是界面。
問:您能對IT的將來做一下預測嗎?將來我們最有可能用什么語言?
DMR:我對預測不在行,但是很明顯,人們正在從象C語言之類的直接編譯型語言,轉換到注重解釋性的語言,象某些腳本語言。
丹尼斯·里奇 - C語言和UNIX
當有人問里奇他為什么使用他使用的方式開發(fā)了C語言的時候里奇回答說“這樣做看上去很好”,他說任何人在同一地方、同一時間會像他那樣做的。但是其他許多人認為這只不過反映出了里奇的謙虛。C++的開發(fā)者和設計師、里奇在貝爾實驗室的同事比雅尼·斯特勞斯特魯普說:“假如里奇決定在那十年里將他的精力花費在稀奇古怪的數(shù)學上,那么Unix將胎死腹中。”
事實上,丹尼斯·里奇與肯·湯普遜兩人發(fā)展了C語言,同時發(fā)展了Unix操作系統(tǒng),在電腦工業(yè)史上占有重要的席位。至今為止C語言在發(fā)展軟件和操作系統(tǒng)時依然是一個非常常用的電腦語言,它對許多現(xiàn)代的編程語言如C++、C#、Objective-C、Java和JavaScript擁有極大的影響。在操作系統(tǒng)方面Unix也具有極大的影響:今天市場上有許多不同的Unix方言如AIX、Solaris、MacOSX和BSD等,以及與Unix非常相似的系統(tǒng)如Minix和非常普及的Linux操作系統(tǒng)。甚至其Microsoft Windows操作系統(tǒng)與Unix相競爭的微軟為他們的用戶和開發(fā)者提供了與Unix相容的工具和C語言編譯器。
里奇還參加發(fā)展了Unix和C語言的兩個后繼軟件:Plan9和Inferno操作系統(tǒng)以及Limbo語言。兩者均是基于他以前的工作上發(fā)展的。
丹尼斯·里奇 - 人物信息
丹尼斯·里奇出生地 Bronxville
研究領域 計算機科學
著名成就 ALTRAN
B programming language
BCPL
C
Multics
Unix
研究機構 Lucent Technologies
貝爾實驗室
獲獎 圖靈獎
美國國家技術獎章