隨筆 - 50  文章 - 0  trackbacks - 0
          <2008年3月>
          2425262728291
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          相冊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜


          網站: JavaEye  作者: justjavac  鏈接:http://justjavac.javaeye.com/blog/170052  發表時間: 2008年03月11日

          聲明:本文系JavaEye網站發布的原創博客文章,未經作者書面許可,嚴禁任何網站轉載本文,否則必將追究法律責任!

          凡是學過一點計算機知識的人大概都知道“數據結構十算法= 程序”這一著名公式。提出這一公式并以此作為其一本專著的書名的瑞士計算機科學家尼克勞斯·沃思(Niklaus Wirth)由于發明了多種影響深遠的程序設計語言,并提出結構化程序設計這一革命性概念而獲得了1984年的圖靈獎。他是至今惟一獲此殊榮的瑞士學者。

            沃思1934年2月15日生于瑞士北部離蘇黎世不遠的溫特圖爾(Winterthur),其父瓦爾特是一位地理學教授。沃思小時就喜歡動手動腦,組裝飛機模型是他的最大愛好。中學畢業以后,沃思進入在歐洲甚至全世界都很有名氣的蘇黎世工學院(ETH),1958年取得學士學位。之后他遠渡大西洋到加拿大的萊維大學深造(Laval是和加拿大名城魁北克隔圣勞倫斯河相望的一座城市),于1960年取得碩士學位。之后他又一次遷移,到美國加利福尼亞,進入加州大學伯克利分校,于1963年獲得博士學位。

            學成以后,沃思受聘到斯坦福大學剛剛成立的計算機科學系工作。著名的斯坦福大學門檻極高,怎么會看中了這個來自歐洲小國的毛頭小伙子呢?原來在20世紀50年代末、60年代初的情況下,沃思的計算機經驗和成就相當引人注目:在蘇黎世工學院時,他曾聽過瑞士的計算機先驅斯帕塞(A.P.Speiser,他曾出任IFIP的主席)的課,用過由斯帕塞開發的計算機ERMETH(雖然作為學生,機會并不多);在萊維大學時,沃思學了數值分析,用過 Alvac III E計算機(雖然這臺計算機經常出故障而不能開機);在伯克利時,沃思先是有一臺Bendix G-15計算機可用,后來又參加了為IBM 704開發 NELIAC語言編譯程序器的科研小組。 NELIAC的全稱是 Navy Electronics Laboratory International Algol Compiler,即美國海軍電子學實驗室國際 Algol編譯程序語言,該語言用于數值計算和一些邏輯處理,其特點是用自己的語言寫自己的編譯程序,然后進行自編譯,是一個類似于 Aled 58但具有開創性意義的語言。沃思在撰寫博士論文時,Algol 60報告已經發表。 這是第一個清晰定義的語言,其語法是用嚴格公式化的方法說明的。當時已有一些學者認識到,清晰的規格說明對于可靠而有效的實現是必需的,但是并不充分:Aled 60報告中還存在一些缺陷和不足。

            沃思在和 Algol的設計者之一、荷蘭人范·維京格爾藤(Andrian van Wijingaarden,他曾任阿姆斯特丹數學中心計算部主任,在開發Algol 68中提出了二級文法,又叫w文法以解決上下文有關這一難題。他曾啟發1972年圖靈獎獲得者狄克斯特拉走上計算機科學之路)多次接觸和討論以后,決定對 Algol 60作進一步改進,并以此作為自己的博士論文課題。這就誕生了由沃思所設計的第一個語言——Euler。Euler雖然在實用性上考慮并不十分周到,但在學術上卻非常優美,為編譯器的系統設計創造了一個很好的基礎。此外,它還對 Algo 60進行了若干擴充,主要是增加了表處理能力。正是由于以上原因,斯坦福大學看中了沃思。與此同時,IFIP也注意到了Euler語言,決定吸收沃思參加對Algol語言進行完善與擴充的工作小組。當時,這個小組中有兩派,一派主張設計一個新語言,以便樹立一個新的里程碑;另一派則覺得時間太緊,主張對 Algo 60進行適當擴充。沃思參加進去以后,自稱同時屬于這兩派,并提交了一份建議書。這份建議書經過霍爾(Tony Hoars)等人的修改、完善以后獲得通過,這就是Aigol W(W是沃思名字的首字母)。

            第二年,也就是1966年,Algol W在斯坦福大學的第一臺 IBM 360上成功實現并正式應用。這中間還有一個小插曲:IBM 360當時只提供匯編語言和 FORTRAN語言,但沃思和他的學生都覺得這兩者并不適宜于作為設計編譯器的工具。于是,沃思用了兩個星期時間寫出了一個用來描寫Algol編譯器的新的語言的定義,然后用了4個月時間在寶來公司的B-5000計算機上完成了交叉編譯程序,而沃思的一個學生則把這個交叉編譯程序移植到 IBM 360上去。這些額外的工作極大地加快了 Algol W編譯器的開發,同時催生了一個新的語言 PL 360。 PL 360雖然是作為輔助工具而設計、開發的,但后來卻在許多地方獲得應用,取得了意想不到的成功。

            Algol W及 PL 360奠定了沃思作為世界級程序設計語言大師的地位,一舉成名。但沃思是一個具有強烈愛國心的人,成名后的他謝絕了斯坦福大學的挽留,于1967年回到祖國,先在蘇黎世大學任職,但第二年就回到他的母校蘇黎世工學院。在這里,他首先設計與實現了 PASCAL語言(Philips Automatic Sequence CAlculator Language的縮寫),這是在 CDC 6600上開發成功的。 PASCAL在數據結構和過程控制結構方面都有很多創造。對于前者,除一般的整型、實型、布爾型數據外,PASCAL還增加了字符型、子域類型、記錄結構類型、文件類型、集合類型和指針類型;對于后者,除保留了無條件轉移的GOTO語句外,又增加了if-then-else、case、while、repeat和for等多種控制結構,還允許復合語句和處理記錄變量的分量使用with語句這種編寫形式。可以說,現代程序設計語言中常用的數據結構和控制結構絕大多數都是由PASCAL語言奠定基礎的,因此它在程序設計語言的發展史上具有承上啟下的重要里程碑意義。

            說來有趣,沃思開發PASCAL的初衷是為了有一個適合于教學的語言,并沒有想到商業應用。但一經推出,由于它的簡潔明了,它所提供的豐富的數據結構和控制結構為程序員提供了極大的方便與靈活性,也由于它特別適合于由微處理器所組成的計算機系統,竟然大受歡迎,廣泛地流傳開來。在C語言問世以前,PASCAL是風靡全球、最受歡迎的語言之一,創下了發行拷貝數最多的世界記錄。單是沃思的一個學生菲力浦·凱恩(Phillipe Kahn),從 ETH畢業以后,在美國加利福尼亞州辦了一個軟件公司,就賣出了100多萬個PASCAL拷貝,成為百萬富翁。

            1971年,沃思基于其開發程序設計語言和編程的實踐經驗,在4月份的 Communications of ACM上發表了論文“通過逐步求精方式開發程序’(Program Development by Stepwise Refinement),首次提出了“結構化程序設計”(structure programming)的概念。這個概念的要點是:不要求一步就編制成可執行的程序,而是分若干步進行,逐步求精。第一步編出的程序抽象度最高,第二步編出的程序抽象度有所降低…… 最后一步編出的程序即為可執行的程序。用這種方法編程,似乎復雜,實際上優點很多,可使程序易讀、易寫、易調試、易維護、易保證其正確性及驗證其正確性。結構化程序設計方法又稱為“自頂向下”或“逐步求精”法,在程序設計領域引發了一場革命,成為程序開發的一個標準方法,尤其是在后來發展起來的軟件工程中獲得廣泛應用。有人評價說沃思的結構化程序設計概念“完全改變了人們對程序設計的思維方式”,這是一點也不夸張的。1983年1月,ACM在紀念 Communications of ACM創刊 25周年時,從其 1/4個世紀發表的大量論文中評選出有“里程碑意義的研究論文” 25篇,每年1篇,沃思的這篇論文就是其中之一。

            PASCAL的成功也罷,結構化程序設計思想的巨大影響也罷,都沒有停止沃思繼續創造性的研究與開發工作。20世紀70年代中期,為適應并發程序設計的需要,沃思又成功開發了一個獲得廣泛應用的語言Modula。M0dula除了提供并發程序設計功能之外,另外一個重要特征是引進了模塊概念(這也是這個語言叫做Modula的原因)。此外,它還引進了“進程”(process)這一和并發程序相聯系而產生的重要概念。Modula語言還特別適合于書寫系統程序。但是,比Modula具有更加重大得多意義的卻是它的第二個版本Modula.2。這是 1976年,沃思再次赴美國,到 Xerox公司的 Palo Alto研究中心參與Alto計算機的設計與開發工作。Alto是世界上第一個具有圖形用戶界面的個人計算機系統(可惜Xerox公司沒有把它商品化,而由Apple公司學去了它的技術而推出 Macintosh)。

            沃思回到瑞士以后,參考Alto的經驗,設計、開發Lilith個人計算機系統。為了和Lilith的體系結構相配合,沃思決定在Modula的基礎上開發新版本,作為整個系統的開發語言。Modula-2與Modula相比,語法更加簡潔,更加強調界面設計,模塊的可重用性更好。它共有3個編譯單元,即程序模塊、定義模塊和實規模塊。在定義模塊(definition module)中,只給出那些和模塊外部交往所必需的信息。例如,對模塊內部的子程序說明而言,在定義模塊中只給出子程序名、參數名及其類型等,而不給出子程序體本身,也就是說,在定義模塊中只給出模塊外部可見的信息。在實規模塊(implementation module)中,則給出那些在模塊外部不可見的信息,例如,在模塊內部定義的子程序說明的子程序體。這樣的安排既提高了可讀性,又有助于分別編譯。M0dula-2在優美性(elegance)和簡潔性(simplicity)兩方面都比Modula更進一步。

            Lilith的操作系統、圖形軟件包、數據庫系統、網絡協議套件、文件服務器等基本系統和大量應用模塊全都是用M0dula-2開發的。目前世界上已經開發了近百個Modula-2的編譯系統,北美和歐洲的許多大學已經用Modula-2代替PASCAL作為計算機系本科生的第一門程序設計課程。Modula-2的標準化工作則早在1984年就已由英國開始進行,ISO則于1987年對它進行標準化,并采用由IBM的維也納實驗室提出的VDM-SL和經過沃思本人加以擴充的BNF(即EBNF,見下)表達語言的語法與語義,在形式化方面達到了一個新的水平。在Lilith項目中,沃思堅持將計算機體系結構、語言、操作環境這三者統一起來考慮,實行集成化、一體化設計的成功經驗是具有革命性的創舉,從而使這個項目在計算機科學史上占有重要地位。

            近年來沃思致力于一個新的計劃,即Oberon計劃。Oberon是將程序設計語言和操作系統結合在一起的、面向單用戶的個人工作站的一個系統。因為沃思認為,在因特網日益普及的情況下,今后聯網的計算機主要將是個人工作站,因此如何使個人工作站功能更加強大、更加方便使用是一個十分重大的課題。沃思把這個計劃取名為Oberon是寓意深長的,因為Oberon是希臘神話中的仙境之王和女神Titania的丈夫。沃思的目標是要使Oberon語言超越PASCAL和Modula,設計出的操作系統和編譯器功能更加強勁。1992年他寫了兩本書向讀者推薦Oberon(見后),可見其對這個計劃的重視。
          本文的討論也很精彩,瀏覽討論>>


          JavaEye推薦
          中國領先的電子商務網站-淘寶網招賢納士,誠聘Java工程師



          文章來源:http://justjavac.javaeye.com/blog/170052
          posted on 2008-03-15 10:04 justjavac(迷渡) 閱讀(106) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 滦平县| 麻阳| 台南县| 婺源县| 馆陶县| 达州市| 漳平市| 大渡口区| 邵阳市| 米脂县| 行唐县| 明光市| 商南县| 长顺县| 余庆县| 谢通门县| 会泽县| 武汉市| 永州市| 霞浦县| 若羌县| 香格里拉县| 册亨县| 兴安县| 永康市| 大荔县| 沈丘县| 大石桥市| 博客| 保靖县| 香港| 潮安县| 武邑县| 湘潭市| 托里县| 怀柔区| 津市市| 永顺县| 安岳县| 德保县| 柳州市|