網(wǎng)站:
JavaEye
作者:
justjavac
鏈接:
http://justjavac.javaeye.com/blog/170052
發(fā)表時間: 2008年03月11日
聲明:本文系JavaEye網(wǎng)站發(fā)布的原創(chuàng)博客文章,未經(jīng)作者書面許可,嚴(yán)禁任何網(wǎng)站轉(zhuǎn)載本文,否則必將追究法律責(zé)任!
凡是學(xué)過一點計算機知識的人大概都知道“數(shù)據(jù)結(jié)構(gòu)十算法= 程序”這一著名公式。提出這一公式并以此作為其一本專著的書名的瑞士計算機科學(xué)家尼克勞斯·沃思(Niklaus Wirth)由于發(fā)明了多種影響深遠(yuǎn)的程序設(shè)計語言,并提出結(jié)構(gòu)化程序設(shè)計這一革命性概念而獲得了1984年的圖靈獎。他是至今惟一獲此殊榮的瑞士學(xué)者。
沃思1934年2月15日生于瑞士北部離蘇黎世不遠(yuǎn)的溫特圖爾(Winterthur),其父瓦爾特是一位地理學(xué)教授。沃思小時就喜歡動手動腦,組裝飛機模型是他的最大愛好。中學(xué)畢業(yè)以后,沃思進(jìn)入在歐洲甚至全世界都很有名氣的蘇黎世工學(xué)院(ETH),1958年取得學(xué)士學(xué)位。之后他遠(yuǎn)渡大西洋到加拿大的萊維大學(xué)深造(Laval是和加拿大名城魁北克隔圣勞倫斯河相望的一座城市),于1960年取得碩士學(xué)位。之后他又一次遷移,到美國加利福尼亞,進(jìn)入加州大學(xué)伯克利分校,于1963年獲得博士學(xué)位。
學(xué)成以后,沃思受聘到斯坦福大學(xué)剛剛成立的計算機科學(xué)系工作。著名的斯坦福大學(xué)門檻極高,怎么會看中了這個來自歐洲小國的毛頭小伙子呢?原來在20世紀(jì)50年代末、60年代初的情況下,沃思的計算機經(jīng)驗和成就相當(dāng)引人注目:在蘇黎世工學(xué)院時,他曾聽過瑞士的計算機先驅(qū)斯帕塞(A.P.Speiser,他曾出任IFIP的主席)的課,用過由斯帕塞開發(fā)的計算機ERMETH(雖然作為學(xué)生,機會并不多);在萊維大學(xué)時,沃思學(xué)了數(shù)值分析,用過 Alvac III E計算機(雖然這臺計算機經(jīng)常出故障而不能開機);在伯克利時,沃思先是有一臺Bendix G-15計算機可用,后來又參加了為IBM 704開發(fā) NELIAC語言編譯程序器的科研小組。 NELIAC的全稱是 Navy Electronics Laboratory International Algol Compiler,即美國海軍電子學(xué)實驗室國際 Algol編譯程序語言,該語言用于數(shù)值計算和一些邏輯處理,其特點是用自己的語言寫自己的編譯程序,然后進(jìn)行自編譯,是一個類似于 Aled 58但具有開創(chuàng)性意義的語言。沃思在撰寫博士論文時,Algol 60報告已經(jīng)發(fā)表。 這是第一個清晰定義的語言,其語法是用嚴(yán)格公式化的方法說明的。當(dāng)時已有一些學(xué)者認(rèn)識到,清晰的規(guī)格說明對于可靠而有效的實現(xiàn)是必需的,但是并不充分:Aled 60報告中還存在一些缺陷和不足。
沃思在和 Algol的設(shè)計者之一、荷蘭人范·維京格爾藤(Andrian van Wijingaarden,他曾任阿姆斯特丹數(shù)學(xué)中心計算部主任,在開發(fā)Algol 68中提出了二級文法,又叫w文法以解決上下文有關(guān)這一難題。他曾啟發(fā)1972年圖靈獎獲得者狄克斯特拉走上計算機科學(xué)之路)多次接觸和討論以后,決定對 Algol 60作進(jìn)一步改進(jìn),并以此作為自己的博士論文課題。這就誕生了由沃思所設(shè)計的第一個語言——Euler。Euler雖然在實用性上考慮并不十分周到,但在學(xué)術(shù)上卻非常優(yōu)美,為編譯器的系統(tǒng)設(shè)計創(chuàng)造了一個很好的基礎(chǔ)。此外,它還對 Algo 60進(jìn)行了若干擴充,主要是增加了表處理能力。正是由于以上原因,斯坦福大學(xué)看中了沃思。與此同時,IFIP也注意到了Euler語言,決定吸收沃思參加對Algol語言進(jìn)行完善與擴充的工作小組。當(dāng)時,這個小組中有兩派,一派主張設(shè)計一個新語言,以便樹立一個新的里程碑;另一派則覺得時間太緊,主張對 Algo 60進(jìn)行適當(dāng)擴充。沃思參加進(jìn)去以后,自稱同時屬于這兩派,并提交了一份建議書。這份建議書經(jīng)過霍爾(Tony Hoars)等人的修改、完善以后獲得通過,這就是Aigol W(W是沃思名字的首字母)。
第二年,也就是1966年,Algol W在斯坦福大學(xué)的第一臺 IBM 360上成功實現(xiàn)并正式應(yīng)用。這中間還有一個小插曲:IBM 360當(dāng)時只提供匯編語言和 FORTRAN語言,但沃思和他的學(xué)生都覺得這兩者并不適宜于作為設(shè)計編譯器的工具。于是,沃思用了兩個星期時間寫出了一個用來描寫Algol編譯器的新的語言的定義,然后用了4個月時間在寶來公司的B-5000計算機上完成了交叉編譯程序,而沃思的一個學(xué)生則把這個交叉編譯程序移植到 IBM 360上去。這些額外的工作極大地加快了 Algol W編譯器的開發(fā),同時催生了一個新的語言 PL 360。 PL 360雖然是作為輔助工具而設(shè)計、開發(fā)的,但后來卻在許多地方獲得應(yīng)用,取得了意想不到的成功。
Algol W及 PL 360奠定了沃思作為世界級程序設(shè)計語言大師的地位,一舉成名。但沃思是一個具有強烈愛國心的人,成名后的他謝絕了斯坦福大學(xué)的挽留,于1967年回到祖國,先在蘇黎世大學(xué)任職,但第二年就回到他的母校蘇黎世工學(xué)院。在這里,他首先設(shè)計與實現(xiàn)了 PASCAL語言(Philips Automatic Sequence CAlculator Language的縮寫),這是在 CDC 6600上開發(fā)成功的。 PASCAL在數(shù)據(jù)結(jié)構(gòu)和過程控制結(jié)構(gòu)方面都有很多創(chuàng)造。對于前者,除一般的整型、實型、布爾型數(shù)據(jù)外,PASCAL還增加了字符型、子域類型、記錄結(jié)構(gòu)類型、文件類型、集合類型和指針類型;對于后者,除保留了無條件轉(zhuǎn)移的GOTO語句外,又增加了if-then-else、case、while、repeat和for等多種控制結(jié)構(gòu),還允許復(fù)合語句和處理記錄變量的分量使用with語句這種編寫形式。可以說,現(xiàn)代程序設(shè)計語言中常用的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu)絕大多數(shù)都是由PASCAL語言奠定基礎(chǔ)的,因此它在程序設(shè)計語言的發(fā)展史上具有承上啟下的重要里程碑意義。
說來有趣,沃思開發(fā)PASCAL的初衷是為了有一個適合于教學(xué)的語言,并沒有想到商業(yè)應(yīng)用。但一經(jīng)推出,由于它的簡潔明了,它所提供的豐富的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu)為程序員提供了極大的方便與靈活性,也由于它特別適合于由微處理器所組成的計算機系統(tǒng),竟然大受歡迎,廣泛地流傳開來。在C語言問世以前,PASCAL是風(fēng)靡全球、最受歡迎的語言之一,創(chuàng)下了發(fā)行拷貝數(shù)最多的世界記錄。單是沃思的一個學(xué)生菲力浦·凱恩(Phillipe Kahn),從 ETH畢業(yè)以后,在美國加利福尼亞州辦了一個軟件公司,就賣出了100多萬個PASCAL拷貝,成為百萬富翁。
1971年,沃思基于其開發(fā)程序設(shè)計語言和編程的實踐經(jīng)驗,在4月份的 Communications of ACM上發(fā)表了論文“通過逐步求精方式開發(fā)程序’(Program Development by Stepwise Refinement),首次提出了“結(jié)構(gòu)化程序設(shè)計”(structure programming)的概念。這個概念的要點是:不要求一步就編制成可執(zhí)行的程序,而是分若干步進(jìn)行,逐步求精。第一步編出的程序抽象度最高,第二步編出的程序抽象度有所降低…… 最后一步編出的程序即為可執(zhí)行的程序。用這種方法編程,似乎復(fù)雜,實際上優(yōu)點很多,可使程序易讀、易寫、易調(diào)試、易維護、易保證其正確性及驗證其正確性。結(jié)構(gòu)化程序設(shè)計方法又稱為“自頂向下”或“逐步求精”法,在程序設(shè)計領(lǐng)域引發(fā)了一場革命,成為程序開發(fā)的一個標(biāo)準(zhǔn)方法,尤其是在后來發(fā)展起來的軟件工程中獲得廣泛應(yīng)用。有人評價說沃思的結(jié)構(gòu)化程序設(shè)計概念“完全改變了人們對程序設(shè)計的思維方式”,這是一點也不夸張的。1983年1月,ACM在紀(jì)念 Communications of ACM創(chuàng)刊 25周年時,從其 1/4個世紀(jì)發(fā)表的大量論文中評選出有“里程碑意義的研究論文” 25篇,每年1篇,沃思的這篇論文就是其中之一。
PASCAL的成功也罷,結(jié)構(gòu)化程序設(shè)計思想的巨大影響也罷,都沒有停止沃思繼續(xù)創(chuàng)造性的研究與開發(fā)工作。20世紀(jì)70年代中期,為適應(yīng)并發(fā)程序設(shè)計的需要,沃思又成功開發(fā)了一個獲得廣泛應(yīng)用的語言Modula。M0dula除了提供并發(fā)程序設(shè)計功能之外,另外一個重要特征是引進(jìn)了模塊概念(這也是這個語言叫做Modula的原因)。此外,它還引進(jìn)了“進(jìn)程”(process)這一和并發(fā)程序相聯(lián)系而產(chǎn)生的重要概念。Modula語言還特別適合于書寫系統(tǒng)程序。但是,比Modula具有更加重大得多意義的卻是它的第二個版本Modula.2。這是 1976年,沃思再次赴美國,到 Xerox公司的 Palo Alto研究中心參與Alto計算機的設(shè)計與開發(fā)工作。Alto是世界上第一個具有圖形用戶界面的個人計算機系統(tǒng)(可惜Xerox公司沒有把它商品化,而由Apple公司學(xué)去了它的技術(shù)而推出 Macintosh)。
沃思回到瑞士以后,參考Alto的經(jīng)驗,設(shè)計、開發(fā)Lilith個人計算機系統(tǒng)。為了和Lilith的體系結(jié)構(gòu)相配合,沃思決定在Modula的基礎(chǔ)上開發(fā)新版本,作為整個系統(tǒng)的開發(fā)語言。Modula-2與Modula相比,語法更加簡潔,更加強調(diào)界面設(shè)計,模塊的可重用性更好。它共有3個編譯單元,即程序模塊、定義模塊和實規(guī)模塊。在定義模塊(definition module)中,只給出那些和模塊外部交往所必需的信息。例如,對模塊內(nèi)部的子程序說明而言,在定義模塊中只給出子程序名、參數(shù)名及其類型等,而不給出子程序體本身,也就是說,在定義模塊中只給出模塊外部可見的信息。在實規(guī)模塊(implementation module)中,則給出那些在模塊外部不可見的信息,例如,在模塊內(nèi)部定義的子程序說明的子程序體。這樣的安排既提高了可讀性,又有助于分別編譯。M0dula-2在優(yōu)美性(elegance)和簡潔性(simplicity)兩方面都比Modula更進(jìn)一步。
Lilith的操作系統(tǒng)、圖形軟件包、數(shù)據(jù)庫系統(tǒng)、網(wǎng)絡(luò)協(xié)議套件、文件服務(wù)器等基本系統(tǒng)和大量應(yīng)用模塊全都是用M0dula-2開發(fā)的。目前世界上已經(jīng)開發(fā)了近百個Modula-2的編譯系統(tǒng),北美和歐洲的許多大學(xué)已經(jīng)用Modula-2代替PASCAL作為計算機系本科生的第一門程序設(shè)計課程。Modula-2的標(biāo)準(zhǔn)化工作則早在1984年就已由英國開始進(jìn)行,ISO則于1987年對它進(jìn)行標(biāo)準(zhǔn)化,并采用由IBM的維也納實驗室提出的VDM-SL和經(jīng)過沃思本人加以擴充的BNF(即EBNF,見下)表達(dá)語言的語法與語義,在形式化方面達(dá)到了一個新的水平。在Lilith項目中,沃思堅持將計算機體系結(jié)構(gòu)、語言、操作環(huán)境這三者統(tǒng)一起來考慮,實行集成化、一體化設(shè)計的成功經(jīng)驗是具有革命性的創(chuàng)舉,從而使這個項目在計算機科學(xué)史上占有重要地位。
近年來沃思致力于一個新的計劃,即Oberon計劃。Oberon是將程序設(shè)計語言和操作系統(tǒng)結(jié)合在一起的、面向單用戶的個人工作站的一個系統(tǒng)。因為沃思認(rèn)為,在因特網(wǎng)日益普及的情況下,今后聯(lián)網(wǎng)的計算機主要將是個人工作站,因此如何使個人工作站功能更加強大、更加方便使用是一個十分重大的課題。沃思把這個計劃取名為Oberon是寓意深長的,因為Oberon是希臘神話中的仙境之王和女神Titania的丈夫。沃思的目標(biāo)是要使Oberon語言超越PASCAL和Modula,設(shè)計出的操作系統(tǒng)和編譯器功能更加強勁。1992年他寫了兩本書向讀者推薦Oberon(見后),可見其對這個計劃的重視。
本文的討論也很精彩,瀏覽討論>>
JavaEye推薦
中國領(lǐng)先的電子商務(wù)網(wǎng)站-淘寶網(wǎng)招賢納士,誠聘Java工程師
文章來源:
http://justjavac.javaeye.com/blog/170052
posted on 2008-03-15 10:04
justjavac(迷渡) 閱讀(106)
評論(0) 編輯 收藏