No.446 第19屆圖靈獎、結(jié)構(gòu)化編程開創(chuàng)者、PASCAL作者:尼古拉斯·沃斯

2024-07-12 10:00:0024:59 4879
所屬專輯:軟件那些事兒
聲音簡介

Niklaus Wirth 是一位著名的編程語言設(shè)計師。只要學(xué)過一點計算機的人,應(yīng)該都聽過“數(shù)據(jù)結(jié)構(gòu) + 算法 = 程序”這個公式吧?這個公式的提出者正是瑞士的計算機科學(xué)家尼克勞斯·沃思(Niklaus Wirth),他不僅發(fā)明了多種對編程界影響深遠的語言,還提出了結(jié)構(gòu)化程序設(shè)計的革命性概念。憑借這些成就,他在1984年獲得了圖靈獎,是目前唯一一位獲得這個獎項的瑞士學(xué)者。


Wirth 的母校是蘇黎世聯(lián)邦理工學(xué)院(ETH),在歐洲乃至全球都有很高的聲譽。1967年,他回到母校,1968年成為教授,一直到1999年退休。在 ETH 期間,他發(fā)明了多種編程語言,其中最著名的就是 Pascal。


尼克勞斯·沃思(Niklaus Wirth)于1934年2月15日出生在瑞士北部靠近蘇黎世的溫特圖爾(Winterthur)。他的父親瓦爾特是一位地理學(xué)教授。沃思從小就喜歡動手動腦,他最大的愛好是組裝飛機模型。中學(xué)畢業(yè)后,沃思進入了享有盛名的蘇黎世聯(lián)邦理工學(xué)院(ETH),并于1958年獲得學(xué)士學(xué)位。


之后,沃思跨越大西洋,前往加拿大的拉瓦爾大學(xué)深造,這所大學(xué)位于魁北克,與圣勞倫斯河對岸的魁北克市隔河相望。他于1960年獲得了碩士學(xué)位。隨后,沃思又移居美國加利福尼亞,在加州大學(xué)伯克利分校繼續(xù)深造,并于1963年獲得博士學(xué)位。


畢業(yè)后,沃思受聘于剛剛成立的斯坦福大學(xué)計算機科學(xué)系。斯坦福大學(xué)以其高門檻著稱,那為何會看中這位來自歐洲的小伙子呢?原來在20世紀50年代末和60年代初,沃思已經(jīng)在計算機領(lǐng)域取得了相當引人注目的成就。在蘇黎世聯(lián)邦理工學(xué)院時,他曾聽過瑞士計算機先驅(qū)斯帕塞(A.P. Speiser)的課,并使用過由斯帕塞開發(fā)的計算機ERMETH;在拉瓦爾大學(xué)時,他學(xué)習(xí)了數(shù)值分析,并使用過Alvac III E計算機;在伯克利,他先是有機會使用Bendix G-15計算機,后來又參與了為IBM 704開發(fā)NELIAC編譯器的項目。


在撰寫博士論文時,沃思決定對Algol 60語言進行改進,并以此作為自己的研究課題,從而設(shè)計了他的第一個編程語言——Euler。盡管Euler在實用性上還有不足,但其學(xué)術(shù)價值極高,為編譯器系統(tǒng)設(shè)計奠定了良好的基礎(chǔ)。也正因為如此,斯坦福大學(xué)對沃思產(chǎn)生了興趣。同時,國際信息處理聯(lián)合會(IFIP)也注意到了Euler語言,并邀請沃思參與Algol語言的完善和擴充工作。


在參與Algol語言工作組時,沃思提出了一份建議書,經(jīng)過霍爾(Tony Hoare)等人的修改和完善后,這份建議書得以通過,這就是后來的Algol W語言。1966年,Algol W在斯坦福大學(xué)的IBM 360計算機上成功實現(xiàn)并正式應(yīng)用。


在這個過程中,還有一個有趣的小插曲:當時IBM 360只提供匯編語言和FORTRAN語言,沃思和他的學(xué)生認為這兩者都不適合作為設(shè)計編譯器的工具。于是,沃思花了兩個星期時間設(shè)計了一種新的語言,用于描述Algol編譯器,并用了四個月時間在寶來公司的B-5000計算機上完成了交叉編譯程序,而他的一個學(xué)生則將其移植到IBM 360上。這些額外的工作大大加快了Algol W編譯器的開發(fā),同時催生了一個新的語言——PL 360。雖然PL 360最初只是作為輔助工具開發(fā)的,但它后來在許多地方得到了應(yīng)用,取得了意想不到的成功。


Algol W和PL 360的成功奠定了尼克勞斯·沃思(Niklaus Wirth)作為世界級編程語言大師的地位,使他一舉成名。但沃思是個具有強烈愛國心的人,成名后,他謝絕了斯坦福大學(xué)的挽留,于1967年回到祖國瑞士,先在蘇黎世大學(xué)任職,但第二年便回到了他的母校蘇黎世聯(lián)邦理工學(xué)院(ETH)。


在ETH期間,沃思設(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),還允許使用with語句處理記錄變量的分量??梢哉f,現(xiàn)代編程語言中常用的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu)大多數(shù)都是由PASCAL語言奠定基礎(chǔ)的,因此它在編程語言的發(fā)展史上具有承上啟下的重要里程碑意義。


有趣的是,沃思開發(fā)PASCAL的初衷是為了有一個適合教學(xué)的語言,并沒有想到它會在商業(yè)上得到廣泛應(yīng)用。但一經(jīng)推出,由于它的簡潔明了以及提供的豐富的數(shù)據(jù)結(jié)構(gòu)和控制結(jié)構(gòu),PASCAL為程序員提供了極大的便利與靈活性。此外,它特別適合用于微處理器組成的計算機系統(tǒng),因而大受歡迎,廣泛流傳。在C語言問世前,PASCAL是風(fēng)靡全球、最受歡迎的語言之一,創(chuàng)下了發(fā)行拷貝數(shù)最多的世界紀錄。沃思的學(xué)生菲力浦·凱恩(Phillipe Kahn)從ETH畢業(yè)后,在美國加利福尼亞州創(chuàng)辦了一家軟件公司,僅PASCAL一項就賣出了超過100萬個拷貝,成為百萬富翁。


1971年,沃思基于其在開發(fā)編程語言和編程實踐中的經(jīng)驗,在4月份的《ACM通訊》(Communications of the ACM)上發(fā)表了論文《通過逐步求精方式開發(fā)程序》(Program Development by Stepwise Refinement),首次提出了“結(jié)構(gòu)化程序設(shè)計”(structured programming)的概念。這個概念的核心是:不要求一步就編寫出可執(zhí)行的程序,而是分若干步進行,逐步求精。第一步編寫出的程序抽象度最高,第二步的程序抽象度有所降低……最后一步的程序即為可執(zhí)行的程序。雖然這種方法看似復(fù)雜,實際上卻有很多優(yōu)點,使程序更易讀、易寫、易調(diào)試、易維護,并且更易于保證其正確性和驗證其正確性。結(jié)構(gòu)化程序設(shè)計方法,又稱為“自頂向下”或“逐步求精”法,在程序設(shè)計領(lǐng)域引發(fā)了一場革命,成為程序開發(fā)的標準方法,特別是在后來發(fā)展起來的軟件工程中得到了廣泛應(yīng)用。有人評價說沃思的結(jié)構(gòu)化程序設(shè)計概念“完全改變了人們對程序設(shè)計的思維方式”,這并不夸張。1983年1月,ACM在紀念《ACM通訊》創(chuàng)刊25周年時,從其1/4個世紀發(fā)表的大量論文中評選出25篇“具有里程碑意義的研究論文”,沃思的這篇論文就是其中之一。


PASCAL的成功和結(jié)構(gòu)化程序設(shè)計思想的巨大影響并沒有讓沃思停下繼續(xù)研究與開發(fā)的腳步。20世紀70年代中期,為適應(yīng)并發(fā)程序設(shè)計的需要,沃思成功開發(fā)了一個廣泛應(yīng)用的語言——Modula。Modula除了提供并發(fā)程序設(shè)計功能外,還引入了模塊概念(這也是該語言命名為Modula的原因)以及“進程”(process)這一重要概念。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ā)新版本,即Modula-2。Modula-2相比Modula,語法更加簡潔,更加注重界面設(shè)計和模塊的可重用性。它有三個編譯單元,即程序模塊、定義模塊和實規(guī)模塊。在定義模塊中,只給出模塊外部交互所需的信息,而在實規(guī)模塊中,則給出模塊內(nèi)部實現(xiàn)的詳細信息。這樣的安排既提高了可讀性,又有助于分別編譯。Modula-2在優(yōu)美性和簡潔性上更進一步。Lilith的操作系統(tǒng)、圖形軟件包、數(shù)據(jù)庫系統(tǒng)、網(wǎng)絡(luò)協(xié)議套件、文件服務(wù)器等基本系統(tǒng)和大量應(yīng)用模塊全都用Modula-2開發(fā)。世界上已經(jīng)開發(fā)了近百個Modula-2的編譯系統(tǒng),北美和歐洲的許多大學(xué)已用Modula-2代替PASCAL作為計算機系本科生的第一門程序設(shè)計課程。


Modula-2的標準化工作早在1984年由英國開始進行,ISO則于1987年對其進行標準化,并采用由IBM維也納實驗室提出的VDM-SL和經(jīng)過沃思本人擴充的BNF(即EBNF)表達語言的語法與語義,在形式化方面達到了新的水平。在Lilith項目中,沃思堅持將計算機體系結(jié)構(gòu)、語言和操作環(huán)境三者統(tǒng)一考慮,實行集成化、一體化設(shè)計的成功經(jīng)驗是具有革命性的創(chuàng)舉,使這個項目在計算機科學(xué)史上占有重要地位。


后來,沃思致力于一個新的計劃,即Oberon計劃。Oberon是一個將程序設(shè)計語言和操作系統(tǒng)結(jié)合在一起的、面向單用戶的個人工作站系統(tǒng)。沃思認為,在因特網(wǎng)日益普及的情況下,未來聯(lián)網(wǎng)的計算機主要將是個人工作站,因此如何使個人工作站功能更加強大、更加方便使用是一個重要課題。沃思將這個計劃命名為Oberon,因為Oberon是希臘神話中的仙境之王和女神Titania的丈夫。沃思的目標是使Oberon語言超越PASCAL和Modula,并設(shè)計出功能更強大的操作系統(tǒng)和編譯器。1992年,他寫了兩本書向讀者推薦Oberon,由此可見他對這個計劃的重視。


ACM不僅在1984年授予沃思圖靈獎,還在1987年授予他“計算機科學(xué)教育杰出貢獻獎”。另一個重要的國際學(xué)術(shù)組織IEEE也給予過沃思兩項榮譽:1983年的Emanual Piore獎和1988年的計算機先驅(qū)獎(Computer Pioneer Award)。1992年,加州大學(xué)伯克利分校還將沃思命名為“杰出校友”。


沃思是在1984年10月于舊金山舉行的ACM年會上接受圖靈獎的。他在頒獎典禮上發(fā)表了題為“從程序設(shè)計語言設(shè)計到計算機建造”(From Programming Language Design to Computer Construction)的圖靈獎演說,回顧了自己在計算機領(lǐng)域的工作。


在演講中,沃思強調(diào)了程序設(shè)計語言簡潔性的重要性,并討論了語言所需的硬件和軟件環(huán)境(因為他一直很重視語言的實現(xiàn)問題)。他還介紹了設(shè)計Modula-2和Lilith的經(jīng)驗,指出第一手經(jīng)驗和選擇良好開發(fā)工具的無比價值。


我見過的另一個Pascal語言的來歷,是布萊茲·帕斯卡爾(Blaise Pascal,1623-1662),法國十七世紀著名的思想家。他一生體弱多病,只活了三十九歲,但他留下了不朽的著作和思想遺產(chǎn)。他的主要著作是《外省通信》和《思想錄》。前者被認為是法國古典主義散文的奠基之作,后者則在哲學(xué)和宗教領(lǐng)域提供了豐富的探討,是思想偉大的明證。


帕斯卡爾在《思想錄》中有一句名言:“思想形成人的偉大?!?/p>

他說:“人不過是一根葦草,是自然界最脆弱的東西;但他是一根能思想的葦草。用不著整個宇宙都拿起武器來才能毀滅他;一口氣、一滴水就足以致他死命了。然而,縱使宇宙毀滅了他,人卻依然要比致他死命的東西更高貴得多;因為他知道自己要死亡,以及宇宙對他所具有的優(yōu)勢,而宇宙對此卻是一無所知?!?/p>

帕斯卡爾還說:“能思想的葦草——我應(yīng)該追求自己的尊嚴,絕不是求之于空間,而是求之于自己的思想。我占有多少土地都沒有用;因為在空間上,宇宙囊括并吞沒了我,有如一個質(zhì)點;但由于思想,我卻囊括了宇宙。”


我希望大家能有機會讀一下這本書,做一根有思想的葦草。





用戶評論

表情0/300

煙斗A10

怒奪首評

猜你喜歡
3.No, No, No!

《GrammarToolkit》系列套書共24本,由美國陪你讀書語言研究與發(fā)展中心出品,帶孩子在欣賞繪本故事的同時學(xué)會語法知識。這套書分別講述了情態(tài)動詞、介詞...

by:北京陽光博客

NO BOOK

解放書本,浸泡式學(xué)英語

by:風(fēng)云八百里

No Disco

過來人總是喜歡拿自己的人生經(jīng)歷去說教年輕人的選擇,卻不知一眼望到頭的生活絕不是我們想要的人生;長輩們總是喜歡教育年輕人去規(guī)避他們遭受過的誤區(qū),卻不知曲折的磨難反...

by:華語音樂

No Dream

NoDream作詞:絡(luò)一#Loi作曲:絡(luò)一#Loi演唱:絡(luò)一#Loi發(fā)行日期:2022-9-02發(fā)行公司:杭州回聲文化藝術(shù)策劃有限公司歌曲介紹:睡不著...

by:華語音樂

No Way

《NoWay》是一首態(tài)度非常鮮明的單曲,像一本獨立宣言,仿佛在告訴全世界——不要對我指手畫腳胡亂建議,我有我的風(fēng)格我不愿與你一樣平庸。

by:華語音樂

NO PROBLEM

Noproblem可能有一點問題Noproblem可能有一點maybe獨行者有一點孤注maybe不瘋魔不成活...

by:華語音樂

No lie

簡介:來自Zeromusic廠牌旗下團隊舌頭打劫RobST隊長Coldbooy最新單曲《Nolie》上線。

by:華語音樂