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