人物簡介
1958年,Niklaus從蘇黎世工學(xué)院取得學(xué)士學(xué)位后來到加拿大的萊維大學(xué)深造,之后進(jìn)入美國加州大學(xué)伯克利分校獲得博士學(xué)位。
從1963年到1967年,他成為斯坦福大學(xué)的計算機科學(xué)部助理教授,之後又在蘇黎世大學(xué)擔(dān)當(dāng)相同的職位。1968年,他成為ETH的信息學(xué)教授,又往施樂帕洛阿爾托研究中心進(jìn)修了兩年。
他有一句在計算機領(lǐng)域人盡皆知的名言“算法+數(shù)據(jù)結(jié)構(gòu)=程序”(Algorithm+Data Structures=Programs)
公式
憑借一句話獲得圖靈獎的Pascal之父——Nicklaus Wirth,讓他獲得圖靈獎的這句話就是他提出的著名公式:“算法+數(shù)據(jù)結(jié)構(gòu)=程序”。
這個公式對計算機科學(xué)的影響程度足以類似物理學(xué)中愛因斯坦的“E=MC^2”——一個公式展示出了程序的本質(zhì)。
Nicklaus Wirth,1934年出生于瑞士,1963年在加州大學(xué)伯克利分校取得博士學(xué)位。取得博士學(xué)位后直接被以高門檻著稱的斯坦福大學(xué)聘到剛成立的計算機科學(xué)系工作。在斯坦福大學(xué)成功的開發(fā)出Algol W以及PL360后,愛國心極強的Nicklaus Wirth于1967年回到祖國瑞士,第二年在他的母校蘇黎世工學(xué)院他創(chuàng)建與實現(xiàn)了Pascal語言——當(dāng)時世界上最受歡迎的語言之一。
后來他的學(xué)生Philipe Kahn畢業(yè)后和Anders Hejlsberg(Delphi之父)創(chuàng)辦了Borland公司靠Turbo Pascal起家,很快成為了將Borland發(fā)展成為全球最大的開發(fā)工作廠商,這一切都不得不說要歸工于PASCAL語言的魅力。PASCAL已經(jīng)影響了整整幾代的程序員,Nicklaus Wirth的思想還將會繼續(xù)指引現(xiàn)在和以后的程序員前進(jìn)的方向。
Pascal之父
成長歷程
威茨1934年2月15日生于瑞士北部離蘇黎世不遠(yuǎn)的溫特圖爾 (Winterthur),其父瓦爾特是一位地理學(xué)教授。威茨小時就喜歡動手動腦,他的最大愛好就是組裝飛機模型。中學(xué)畢業(yè)以后,威茨進(jìn)入在歐洲甚至全世界都很有名的蘇黎世工學(xué)院(ETH),1958年取得學(xué)士學(xué)位。之后他到加拿大的萊維大學(xué)深造(Laval是和加拿大名城魁北克隔圣勞倫斯河相望的一座城市),于1960年取得碩士學(xué)位。之后他又一次遷移到美國加州,進(jìn)入加州大學(xué)伯克利分校,于1963年獲得博士學(xué)位。
學(xué)成以后,威茨受聘到斯坦福大學(xué)剛剛成立的計算機科學(xué)系工作。著名的斯坦福大學(xué)門檻極高,怎么會看中這個來自歐洲小國的毛頭小伙子呢?原來在50 年代末、60年代初,威茨的計算機經(jīng)驗和成就相當(dāng)顯赫:在蘇黎世工學(xué)院時,瑞士的計算機先驅(qū)斯帕塞(A.P.Speiser,他曾經(jīng)出任IFIP的主席) 曾經(jīng)給威茨上過有關(guān)計算機的課程,也曾經(jīng)用過由斯帕塞開發(fā)的計算機ERMETH;在萊維大學(xué)時,威茨學(xué)了數(shù)值分析,上過AlvacⅢE計算機;在伯克利時,威茨先是有一臺Bendix G-15計算機可用,后來又參加了為IBM 704開發(fā)NELIAC語言編譯器的科研小組(NELIAC是一個類似于Algol 58的語言)。威茨在撰寫博士論文時,Algol 60報告已經(jīng)發(fā)表。Algol 60是第一個清晰定義的語言,其語法是用嚴(yán)格公式化的方法說明的。但當(dāng)時已有一些學(xué)者認(rèn)識到,清晰的規(guī)格說明對于可靠而有效的實現(xiàn)是必需的,但還不夠。Algol 60報告中還有一些缺陷和不足。威茨在和Algol的設(shè)計者之一馮·維京格藤(Andrian van Wijngaarden)多次接觸和討論以后,決定對Algol 60做進(jìn)一步改進(jìn),并以此為自己的博士論文課題。這就誕生了由威茨所設(shè)計的第一個語言Euler。Euler雖然在實用性上考慮并不很周到,但在學(xué)術(shù)上卻非常優(yōu)美,為編譯器的系統(tǒng)設(shè)計創(chuàng)造了一個很好的基礎(chǔ)。
Algol W編譯器的開發(fā)和語言PL360
正是由于上述經(jīng)歷和成果,斯坦福大學(xué)看中了威茨。與此同時,IFIP負(fù)責(zé)Algol語言完善與擴充的工作小組也看中了威茨,吸收他參加工作。當(dāng)時,小組中有兩派,一派勁頭十足地要設(shè)計一個新語言,以便樹起一個新的里程碑;另一派則覺得時間太緊,主張對Algol 60進(jìn)行適當(dāng)擴充。威茨參加進(jìn)去以后,自稱同時屬于這兩派,并提交了一份建議書。這份建議書經(jīng)過霍爾(Tony Hoare)等人的修改、完善以后獲得通過,這就是Algol W(W是威茨名字的首字母)。第二年,也即1966年,Algol W在斯坦福大學(xué)的第一臺IBM 360上成功實現(xiàn)并正式應(yīng)用。這中間還有一個小插曲:IBM 360當(dāng)時只提供匯編語言和FORTRAN語言,但威茨和他的學(xué)生都覺得這兩者并不適宜于作為設(shè)計編譯器的工具。為此,威茨決定定義另一種語言來描寫 Algol W的編譯器。威茨用了兩周時間寫出這個語言的定義,然后用了4個月的時間在Burroughs公司的Bu5000計算機上完成了交叉編譯程序,而威茨的一個學(xué)生則把這個交叉編譯程序移植到IBM 360上去。這些額外的工作極大地加快了Algol W編譯器的開發(fā),同時催生了一個新的語言PL360。PL360 雖然是作為輔助工具而開發(fā)的,但卻在許多地方獲得應(yīng)用。
商業(yè)應(yīng)用
說來有趣,沃思開發(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拷貝,成為百萬富翁。
結(jié)構(gòu)化程序設(shè)計概念
1971年,沃思基于其開發(fā)程序設(shè)計語言和編程的實踐經(jīng)驗,在4月份的 Communications of ACM上發(fā)表了論文“通過逐步求精方式開發(fā)程序u2019(Program Development by Stepwise Refinement),提出了“結(jié)構(gòu)化程序設(shè)計”(structure programming)的概念。這個概念的要點是:不要求一步就編制成可執(zhí)行的程序,而是分若干步進(jìn)行,逐步求精。第一步編出的程序抽象度最高,第二步編出的程序抽象度有所降低…… 最后一步編出的程序即為可執(zhí)行的程序。用這種方法編程,似乎復(fù)雜,實際上優(yōu)點很多,可使程序易讀、易寫、易調(diào)試、易維護(hù)、易保證其正確性及驗證其正確性。結(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篇,沃思的這篇論文就是其中之一。
繼續(xù)創(chuàng)造性的研究與開發(fā)工作
PASCAL的成功也罷,結(jié)構(gòu)化程序設(shè)計思想的巨大影響也罷,都沒有停止沃思繼續(xù)創(chuàng)造性的研究與開發(fā)工作。20世紀(jì)70年代中期,為適應(yīng)并發(fā)程序設(shè)計的需要,沃思又成功開發(fā)了一個獲得廣泛應(yīng)用的語言Modula。Modula除了提供并發(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)。
1984 年獲得了圖靈獎
凡是學(xué)過一點計算機的人大概都知道“算法+數(shù)據(jù)結(jié)構(gòu)=程序”這一著名公式。提出這一公式并以此作為其一本專著書名的瑞士計算機科學(xué)家尼克勞斯·威茨(Niklaus Wirth)于1984 年獲得了圖靈獎。這是瑞士學(xué)者中唯一獲此殊榮的人。
榮譽
他是好幾種編程語言的主設(shè)計師:
Algol W Modula Pascal Modula-2 Oberon
他亦是Euler語言的發(fā)明者之一。1984年他因發(fā)展了這些語言而獲圖靈獎。他亦是Lilith電腦和Oberon系統(tǒng)的設(shè)計和執(zhí)行隊伍的重要成員。
他的文章Program Development by Stepwise Refinement視為軟體工程中的經(jīng)典之作。他寫的一本書的書名Algorithms + Data Structures = Programs(算法+數(shù)據(jù)結(jié)構(gòu)=程式)是計算機科學(xué)的名句。
歐洲人通常都將他的名字讀得正確,讀作“Nih-klaus Virt”;但美國人通常讀成“Nickles Worth”近似的音。於是有人便說,歐洲人傳址呼叫他,美國人傳值呼叫他。
學(xué)術(shù)著作
沃斯的學(xué)術(shù)著作很多,主要有如下幾種,其中一些是由法文譯成英文的:《系統(tǒng)程序設(shè)計導(dǎo)論》(《Systematic Programming:An Introduction》,Prentice-Hall,1973。其法文版已出至第5版) ;
《算法 數(shù)據(jù)結(jié)構(gòu)=程序》(《Algorithms Data Structures=Programs》,Prentice-Hall,1976)。
《算法和數(shù)據(jù)結(jié)構(gòu)》(《Algorithms and Data Structures》,Prentice-Hall,1986)。
《Modula-2程序設(shè)計》(《Programming in Modula-2》, Springer,1988,第4版)。
《PASCAL用戶手冊和報告:ISO PASCAL標(biāo)準(zhǔn)》 (《PASCAL User Manual and Report:ISO PASCAL Standard》,Springer,1991)。
《Oberon計劃:操作系統(tǒng)和編譯器的設(shè)計》(《Project Oberon:the Design of an Operating System and Compiler》,ACM Pr.,1992)。
《Oberon程序設(shè)計:超越Pascal和Modula》(《Programming in Oberon:Steps beyond Pascal and Modula》,ACM Pr.,1922)。
《數(shù)字電路設(shè)計教材》(《Digital Circuit Design for Computer Science Students:An Introductory Textbook》,Springer,1995)。
ACM除了在1984年授予沃斯圖靈獎外,1987年又授予他另一項獎:計算機科學(xué)教育杰出貢獻(xiàn)獎。另一個重要的國際學(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)域所做的工作。演說全文刊載于《Communications of ACM》1985年2月,159-164頁,也可見《ACM 圖靈獎演說集》(《ACM Turing Award Lectures-The First 20 rears:1966-1985》,ACM Pr.),179- 196頁。