在計(jì)算機(jī)發(fā)展的歷史上,大概沒有哪個程序設(shè)計(jì)語言像C那樣得到如此廣泛地流行;也沒有哪個操作系統(tǒng)像UNIX那樣獲得計(jì)算機(jī)廠家和用戶的普遍青睞和厚愛。它們對整個軟件技術(shù)和軟件產(chǎn)業(yè)都產(chǎn)生了深遠(yuǎn)的影響。而C和UNIX兩者都是貝爾實(shí)驗(yàn)室的丹尼斯·里奇(Dennis MacAlistair Ritchie)和肯尼思·湯普森(Kenneth Lane Thompson)設(shè)計(jì)、開發(fā)的。因此,他們兩人共同獲得1983年度的圖靈獎是情理中的事。我們先介紹湯普森,因?yàn)榫虲和UNN兩者的關(guān)系而言,UNIX的開發(fā)在前,C是為了使UNIX具有可移植性而后來研制的;就里奇和湯普森兩人的關(guān)系而言,他們兩人當(dāng)然是親密的合作者,但湯普森在UNIX 的開發(fā)中起了主導(dǎo)的作用,而里奇則在C的設(shè)計(jì)中起的作用更大一些。 湯普森1943年2月4日生于路易斯安娜州的新奧爾良,其父是美國海軍戰(zhàn)斗機(jī)的駕駛員。湯普森自幼的愛好有兩個,一個是下棋,一個是組裝晶體管收音機(jī)。他父親為了發(fā)展孩子的智力和能力,在晶體管當(dāng)時問世不久,價格不菲(每只晶體管約售10美元)的情況下,很舍得為湯普森買晶體管讓他擺弄。由于愛好無線電,湯普森上加州大學(xué)伯克利分校時學(xué)的專業(yè)是電氣工程,于1965年取得學(xué)士學(xué)位,第二年又取得碩士學(xué)位。求?詡洌??共渭恿送ㄓ枚?ρЧ?荊?General Dynamics Corporation)在伯克利實(shí)行的半工半讀計(jì)劃( work-study Program),因此既增長了知識,又積累了不少實(shí)踐經(jīng)驗(yàn)。 畢業(yè)以后,湯普森加盟貝爾實(shí)驗(yàn)室。雖然他學(xué)的是電子學(xué),主要是硬件課程,但由于他半工半讀時在一個計(jì)算中心當(dāng)過程序員,對軟件也相當(dāng)熟悉,而且更加偏愛,因此很快就和里奇一起被貝爾派到MIT去參加由ARPA出巨資支持的MAC項(xiàng)目,開發(fā)第二代分時系統(tǒng)MULTICS。但就在項(xiàng)目完成前不久,貝爾因感到開發(fā)費(fèi)用太大,而成功的希望則不大而退出了該項(xiàng)目,把所有成員都調(diào)回貝爾。這使湯普森和里奇深感沮喪。返回貝爾以后,面對實(shí)驗(yàn)室中仍以批處理方式工作的落后的計(jì)算機(jī)環(huán)境,他們決心以他們在MAC項(xiàng)目中已學(xué)到的多用戶、多任務(wù)技術(shù)來改造這種環(huán)境,以提高程序員的效率和設(shè)備的效率,便于人機(jī)交互和程序員之間的交互,用他們后來描寫自己當(dāng)時的心情和想法的話來說,就是“要創(chuàng)造一個舒適、愉快的工作環(huán)境”。但他們意識到,貝爾領(lǐng)導(dǎo)人既然下決心退出MAC,就不可能支持他們的想法,不可能為之立項(xiàng),提供資金和設(shè)備,他們只能悄悄干,自己去創(chuàng)造條件。1969年,萬般無奈的湯普森在庫房中偶然發(fā)現(xiàn)一臺已棄置不用的 PDP-7,大喜過望,立即開始用它來實(shí)施他們的設(shè)想。但開頭是十分困難的,因?yàn)檫@q PDP-7除了有一個硬盤、一個圖形顯示終端和一臺電傳打字機(jī)這些硬設(shè)備外,什么軟件也沒有。 他們只能在一臺 GE 645大型機(jī)上編程、調(diào)試,調(diào)通以后穿孔在紙帶上,再輸入PDP-7。以這種“可怕的”工作方式開發(fā)兩年以后,連這臺PDP-7也損壞得不能再用了。這時,他們聽到一個消息,實(shí)驗(yàn)室的專利部需要一個字處理系統(tǒng)以便處理專利申請書(貝爾每年要提出不少專利申請),湯普森立即找到上級自告奮勇承擔(dān)這一開發(fā)任務(wù),在這個冠冕堂皇的借口下,他們申請到了一臺新的、設(shè)備完善的PDP- 11,這才使開發(fā)工作順利地真正開展起來。 湯普森以極大的熱情和極高的效率投入工作。開發(fā)基本上以每個月就完成一個模塊(內(nèi)核,文件系統(tǒng),內(nèi)存管理,I/O……)的速度向前推進(jìn),到1971年底,UNIX基本成形。UNIX這個名稱是從MUL-TICS演變而來的:他們變MULTI為UNI,變CS為X。為了向上級“交差”,UNIX首先交給實(shí)驗(yàn)室的專利部使用,3個打字員利用UNIX輸人貝爾當(dāng)年的專利申請表,交口稱贊系統(tǒng)好用,大大提高了工作效率,這樣,UNIX迅速從專利部推廣到貝爾的其他部門,又從貝爾內(nèi)部推向社會。貝爾實(shí)驗(yàn)室的領(lǐng)導(dǎo)人終于認(rèn)識到了UNIX的巨大價值,把它注冊成為商標(biāo)(但有趣的是,由于法律上的原因,注冊商標(biāo)及版權(quán)被貝爾的上屬公司AT&T取得),推向市場。貝爾的一個行政長官甚至宣稱,在貝爾的無數(shù)發(fā)明中,UNIX是繼晶體管之后的最重要的一項(xiàng)發(fā)明。著名的國際咨詢公司 IDC的高級分析員 Huie Bruce Kin估計(jì),1985年單是美國就有27萬7千個計(jì)算機(jī)系統(tǒng)使用UNIX,1990年這個數(shù)字增長至210萬。目前世界上UNIX的安裝數(shù)量超過500萬套,用戶數(shù)達(dá)到3000萬。 UNIX 之所以獲得如此巨大的成功,主要是它采用了一系列先進(jìn)的技術(shù)和措施,解決了一系列軟件工程的問題,使系統(tǒng)具有功能簡單實(shí)用,操作使用方便,結(jié)構(gòu)靈活多樣的特點(diǎn)。它是有史以來使用最廣的操作系統(tǒng)之一,也是關(guān)鍵應(yīng)用中的首選操作系統(tǒng)。UNIX成為后來的操作系統(tǒng)的楷模,也是大學(xué)操作系統(tǒng)課程的“示范標(biāo)本”。歸納起來,UNIX的主要特性如下: 1作為多用戶多任務(wù)操作系統(tǒng),每個用戶都可同時運(yùn)行多個進(jìn)程。 2提供了豐富的經(jīng)過精心編選的系統(tǒng)調(diào)用。整個系統(tǒng)的實(shí)現(xiàn)緊湊、簡潔、優(yōu)美。 3提供功能強(qiáng)大的可編程外殼(Shell)語言作為用戶界面,具有簡潔高效的特點(diǎn)。 4采用樹形文件結(jié)構(gòu),具有良好的安全性、保密性和可維護(hù)性。 5提供多種通信機(jī)制,如管道通信、軟中斷通信、消息通信、共享存儲器通信和信號燈通信。 6采用進(jìn)程對換內(nèi)存管理機(jī)制和請求調(diào)頁內(nèi)存管理方式實(shí)現(xiàn)虛存,大大提高了內(nèi)存使用效率。 7系統(tǒng)主要用C編寫,不但易讀、易懂、易修改,更極大提高了可移植性。 由于以上特點(diǎn),也由于看好UNIX的應(yīng)用和前景,各大公司紛紛推出自己的 UNIX版本,如 IBM的 AIX,SUN的Solaris,HP的 HP-UX, SCO的 UNIXWARE和 open Server, DEC(已被 Compaq收購)的digital UNIX,以及加州大學(xué)伯克利分校的 UNIX BSD。這些 UNIX各具特色,形成百花齊放的局面。到20世紀(jì)op年代,UNIX版本多達(dá)100余個。UNIX的標(biāo)準(zhǔn)化工作則經(jīng)歷了一個復(fù)雜的過程。最早是UNIX 用戶協(xié)會從20世紀(jì)80年代開始此項(xiàng)工作,1984年頒布了試用標(biāo)準(zhǔn)。后來此工作被IEEE接收和繼承,制定了多個基于UNIX的“仍移植操作系統(tǒng)環(huán)境” 標(biāo)準(zhǔn),即POSIX。而計(jì)算機(jī)廠家在UNIX標(biāo)準(zhǔn)上則分裂為兩大陣營,即以AT&T和SUN為首的UNIX國際(UI)和以IBM、HP、DEC為首的開放系統(tǒng)基金會(OSF)。分裂和競爭一方面促進(jìn)了UNIX技術(shù)的迅猛發(fā)展,另外一方面則引起用戶的困惑,不利于UNIX市場的健康發(fā)展。因此,1993年 3月,兩大陣營終于走到一起,成立了“公共開發(fā)軟件環(huán)境”組織(COSE),以實(shí)現(xiàn)UNIX系統(tǒng)的統(tǒng)一化。1993年10月,Novell公司將從 AT&T購得的UNN商標(biāo)權(quán)無償移交給開放系統(tǒng)標(biāo)準(zhǔn)化組織X/OPEN,這樣,UNIX商標(biāo)不再受某一廠商控制,而由中性的國際組織管理。1995年,關(guān)于UNIX的兩個重要標(biāo)準(zhǔn) CDE(規(guī)定 UNIX的圖形界面)和 UNIX 95(規(guī)定 UNIX的應(yīng)用程序界面,也叫Spec.1170)正式頒布,為整個UNIX的標(biāo)準(zhǔn)化打下了基礎(chǔ)。1998年,IBM、Intel和SC0三家業(yè)界巨頭在加利福尼亞的蒙特雷(Monterey)聚會,進(jìn)一步商討了UNIX統(tǒng)一問題,制定了蒙特雷計(jì)劃。這個計(jì)劃結(jié)合了IBM公司的AIX、NUMA-Q和 SCO的UnixWare技術(shù),建立一條企業(yè)級商用 UNIX產(chǎn)品線,使之能同時運(yùn)行在 Intel IA-32、IA-64和 IBM PowerPC處理器之上,平臺適用范圍將覆蓋從部門級服務(wù)器到大型數(shù)據(jù)庫中心的超級服務(wù)器。目前,AIX和UnixWare已經(jīng)相互融合并達(dá)到了二進(jìn)制級的互操作性。 應(yīng)該指出,目前操作系統(tǒng)平臺形成了 UNIX、Windows NT和 LINUX三強(qiáng)鼎立的局面,而由芬蘭大學(xué)生 Linus Torvalds推出的 LINUX本身實(shí)際上也是UNIX見的一個變種。 由于功能強(qiáng)勁,用途多樣,使用方便,因此有人把UNIX稱作軟件中的“瑞士多用途折疊刀”(或叫“瑞士軍刀”)。 湯普森本人圍繞UNIX的開發(fā)工作于1978年結(jié)束。之后他從事過的項(xiàng)目有 Plan 9,這是另一個操作系統(tǒng),旨在提高分布式計(jì)算的性能。 Plan 9用單一協(xié)議查詢不同的資源、過程、程序和數(shù)據(jù),并與之進(jìn)行通信,為訪問分布于由服務(wù)器、終端和其他設(shè)備組成的網(wǎng)絡(luò)上的計(jì)算資源提供一個統(tǒng)一的方式,尤其適合于那些要求安全運(yùn)行的Web服務(wù)器。 Plan 9的設(shè)計(jì)思路是驚人的,它小而功能強(qiáng)大,而且非常靈活,是 UNIX和 LINUX的競爭產(chǎn)品。 Plan 9早在 20世紀(jì) 80年代后期就已設(shè)計(jì)成型,目前的 Plan 9第三版是 1995年推出的。但 Plan9至今只限于貝爾實(shí)驗(yàn)室內(nèi)部使用,沒有推廣和流行。最近(2000年6月),貝爾實(shí)驗(yàn)室采取驚人措施,免費(fèi)開放 Plan 9源代碼,以便讓實(shí)驗(yàn)室以外的人使用 Plan 9。貝爾實(shí)驗(yàn)室的這一舉措也許會像當(dāng)年推出UNIX一樣,在軟件界引起一次新的震蕩。此外,鑒于湯普森自幼愛好下棋,他還建造過一臺名為Belle的下棋計(jì)算機(jī),還與康頓(Joseph Condon)合作,在 PDP- 11/23和 PDP- 11/70上編制了下棋程序,這個程序從1979年到1983年在連續(xù)幾屆計(jì)算機(jī)下棋世界比賽中都獨(dú)占鰲頭,成為“四連冠”,同時也成為被美國圍棋聯(lián)盟 USCF授予“大師”稱號的第一個下棋程序。這個程序每秒可觀察15萬個棋步,與現(xiàn)今的IBM的“深藍(lán)”當(dāng)然無法相比,但在當(dāng)時卻是一個了不起的成就。 里奇比湯普森年長2歲,1941年9月9日生于紐約州的勃浪克斯山莊(Bronxville),但在9歲時移居新澤西州的塞米特。里奇的父親是一個電氣工程師,在貝爾實(shí)驗(yàn)室的交換系統(tǒng)工程實(shí)驗(yàn)室當(dāng)主任,因此,里奇一家可謂“唄爾世家”。里奇中學(xué)畢業(yè)后進(jìn)哈佛大學(xué)學(xué)物理,并于1963年獲得學(xué)士學(xué)位。其間,哈佛大學(xué)有了一臺UNIVAC I,并給學(xué)生開設(shè)有關(guān)計(jì)算機(jī)系統(tǒng)的課程,里奇聽了以后產(chǎn)生了很大的興趣。畢業(yè)以后他在應(yīng)用數(shù)學(xué)系攻讀博士學(xué)位,完成了一個有關(guān)遞歸函數(shù)論方面的課題,寫出了論文,但不知什么原因沒有答辯,沒有取得博士學(xué)位,他就離開了哈佛,于1967年進(jìn)入貝爾實(shí)驗(yàn)室,與比他早一年到貝爾的湯普森會合,從此開始了他們長達(dá)數(shù)十年的合作。 前面說過,UNIX的開發(fā)是以湯普森為主的,那末,為什么文獻(xiàn)資料中一提到UNIX,都一致地說是里奇和湯普森共同于發(fā)的,而且在“排名”上往往是里奇在前,湯普森在后呢?包括他們在1973年由ACM主辦、IBM承辦的操作系統(tǒng)原理討論會上首次向社會推介UNIX的論文 The UNIX Time- Sharing System的署名,里奇也是第一作者,湯普森則為第二作者。里奇在UNIX開發(fā)中有些什么功勞呢? 這里有兩個很重要的因素。首先,UNIX的成功應(yīng)歸功于它的創(chuàng)新。前面曾經(jīng)提到,UNIX吸取與借鑒了MULTICS的經(jīng)驗(yàn),如內(nèi)核,進(jìn)程,層次式目錄,面向流的I/0,把設(shè)備當(dāng)作文件,等等。這是可以理解的,因?yàn)槿魏涡率挛锉厝皇菍υ惺挛锏睦^承和發(fā)展。尤其是UNIX,畢竟沒有正式立項(xiàng),是湯普森、里奇等少數(shù)幾個人偷偷干的,如果一切都要從頭從新設(shè)計(jì),那幾乎是不可能的。但是UNIX在繼承中又有創(chuàng)新,比如 UNIX采用一種無格式的文件結(jié)構(gòu),文件由字節(jié)串加句號組成。這帶來兩大好處:一是在說明文件時不必加進(jìn)許多無關(guān)的“填充物”(類似于COBOL中的 FILLER),二是任何程序的輸出可直接用作其他任何程序的輸入,不必經(jīng)過轉(zhuǎn)換。后面這一點(diǎn)叫做“流水”(piping),就是UNIX首創(chuàng)的。此外,像把設(shè)備當(dāng)作文件,從而簡化了設(shè)備管理這一操作系統(tǒng)設(shè)計(jì)中的難題,雖然不是UNIX的發(fā)明,但是實(shí)現(xiàn)上它采用了一些新方法,比MULTICS更高明一些。正是在這些方面,里奇發(fā)揮了很重要的作用,使UNIX獨(dú)具特色。 其次,UNIX成功的一個重要因素是它的可移植性。正是里奇竭盡全力開發(fā)了C語言,并把UNIX用C重寫了一遍,這才使它具有了這一特性。湯普森是用匯編語言開發(fā)UNIX的,這種語言高度依賴于硬件,由它開發(fā)的軟件只能在相同的硬件平臺上運(yùn)行。里奇在由劍橋大學(xué)的里查德(M.Richard)于1969年開發(fā)的BCPL語言(Basic Combined Programming Language)的基礎(chǔ)上,巧妙地對它進(jìn)行改進(jìn)、改造,形成了既具有機(jī)器語言能直接操作二進(jìn)制位和字符的能力,又具有高級語言許多復(fù)雜處理功能如循環(huán)、轉(zhuǎn)移、分支等的一種簡單易學(xué)而又靈活、高效的高級程序設(shè)計(jì)語言。他們把這種語言稱為C,一方面指明了繼承關(guān)系(因?yàn)锽CPL的首字母是B。有些資料說是湯普森先根據(jù)BCPL開發(fā)了一種稱為B的語言,再由里奇根據(jù)B開發(fā)了C。這種說法并不太確切,因?yàn)槲覀冊跍丈c里奇本人的敘述中,都沒有見到有關(guān)B語言這一中間過程的說法),另一方面也反映了他們對軟件追求簡潔明了的一貫風(fēng)格。C開發(fā)成功以后,里奇用C把U-NIX重寫了一遍。我們這里用了“重寫”這個詞,因?yàn)槲墨I(xiàn)資料在提到這件事時都是用的這一說法,顯得很輕巧;實(shí)際上,里奇做的這件事本身就是“移植”,即把湯普森用匯編語言實(shí)現(xiàn)的UNIX改用C來實(shí)現(xiàn),這決不是什么輕巧的工作,尤其是對UNIX這樣的大型軟件。這需要付出艱苦的勞動,也是一件需要創(chuàng)造性的工作。單是里奇此舉就是可以大書特書的,而C 作為可以不依附于UNIX的一個獨(dú)立的軟件產(chǎn)品,也自有其本身的巨大價值,在計(jì)算機(jī)發(fā)展史上可以寫下濃重的一筆。C已經(jīng)實(shí)現(xiàn)標(biāo)準(zhǔn)化,即ISO于1990年公布的ISO/IEC9899,它以 ANSIC為基礎(chǔ),是第一個支持多8位字符集的程序設(shè)計(jì)語言國際標(biāo)準(zhǔn)。 前述里奇和湯普森的論文 The UNIX Time-Sharing Symtem后來發(fā)表于 Communications of ACM,1974年 7月。 ACM 1983年在紀(jì)念該刊創(chuàng)刊25周年時曾經(jīng)評選出刊登于其上的25篇文章稱之為具有里程碑式意義的研究論文,該文就是其中之一。 除了論文以外,里奇還和凱尼漢(B.W.Kernighan)合著了一本介紹 C的專著:《C程序設(shè)計(jì)語言》(The C Programming Language, Prentice-Hall,1978,1988)。我們現(xiàn)在見到的大量論述C語言程序設(shè)計(jì)的教材和專著都是以本書為藍(lán)本的。 湯普森和里奇在成名以后,都沒有走辦公司、掙大錢的路,他們?nèi)匀辉谪悹栕鏊麄兿矏圩龅氖拢疫一直保持著他們歷來的生活習(xí)慣和作風(fēng),常常工作到深夜,在貝爾是出名的“夜貓子”。里奇在接受記者采訪時,就自稱自己是 definitely a night person。里奇 1983年接受圖靈獎時已經(jīng)42歲,但仍然單身。 ACM 于1983年10月舉行的年會上向湯普森和里奇頒獎。有趣的是,ACM當(dāng)年決定新設(shè)立一個獎項(xiàng)叫“軟件系統(tǒng)獎”(Software Sys-tem Award),獎勵優(yōu)秀的軟件系統(tǒng)及其開發(fā)者。而首屆軟件系統(tǒng)獎評選結(jié)果中獎的也是UNIX。這樣,這屆年會上湯普森和里奇成了最受關(guān)注的大紅人,他們同時接受了“圖靈”和“軟件系統(tǒng)”兩個大獎,這在ACM歷年的頒獎儀式上是從來沒有過的。里奇發(fā)表的圖靈獎演說題為“對軟件研究的反思” (Reflections on Software Research),湯普森的演說題為“對深信不疑的信任的反思”(Reflections on Trusting Trust),它們刊載于 Communications of ACM,1984年 8月,757- 763頁,或見《前20年 ACM圖靈獎演說集》(ACM Turing Award Lectures——The First 20 Years: 1966- 1985, ACM Pr.), 163- 178頁。里奇在演說中強(qiáng)調(diào)了UNIX成功的因素,包括比較長的醞釀時期和他們在開發(fā)時沒有商業(yè)上的壓力。里奇認(rèn)為,對研究工作而言,受到過份的關(guān)注反而會影響創(chuàng)造力和自由的交換意見。湯普森在演說中謙虛地自稱是“程序員”(在他以前獲圖靈獎的狄克斯特拉、霍爾、克努特和弗洛伊德也都這樣稱呼過自己)。同里奇一樣,湯普森強(qiáng)調(diào)了開發(fā)程序系統(tǒng)時環(huán)境和背景的重要性。 除圖靈獎外,湯普森和里奇還從兩個著名的雜志那里獲得獎勵和榮譽(yù),一是《電子學(xué)》(Electronics)周刊,它從1974年起設(shè)立“成就獎” (achievement award),獎勵在電子線路、工藝、儀器設(shè)備等方面有重大發(fā)明創(chuàng)造的科學(xué)家,曾經(jīng)獲得該項(xiàng)獎勵的人中包括著名的提出“摩爾定理”的 Intel總裁摩爾(G. E. Moors),MOS工的發(fā)明者里趣曼(P.Richman),發(fā)明軟盤的舒格特(A.F.Shugart)等。但由于UNIX和C的巨大成功和影響,使1982年的這個獎破例授予了軟件開發(fā)者湯普森和里奇。二是讀者面很廣的Datamation月刊,它于1987年創(chuàng)刊30周年時建立了一個“計(jì)算機(jī)名人堂”(Hall of Fame),首批 30位名人中包括圖靈、馮·諾伊曼及多位圖靈獎得主,如克努特(D.Knuth),巴克斯(J.Backus),麥卡錫(J.McCarthy)等。第二年首次增補(bǔ)名人,就選中了湯普森和里奇。 |
轉(zhuǎn)自:中國 第一linux女強(qiáng)人 陳莉君 的博客![]() |
謝謝 |
怎么搞到菜園來了?幫你轉(zhuǎn)了 |
太漂亮了 |
不錯,學(xué)習(xí)。。 |