天天看點

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

作者:新智元

編輯:Aeneas 好困

【新智元導讀】Euler和Pascal語言發明者、1984年圖靈獎獲得者Niklaus Wirth在24年的第一天離開了我們,許多開發者都為他程式設計語言的簡潔所驚歎。

2024年的第一天,又一位圖靈獎得主離開了我們。

Niklaus Wirth于1月1日去世,世界失去了程式設計語言、程式設計方法、軟體工程和硬體設計的泰鬥。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Niklaus E. Wirth是一位瑞士計算機科學家,他因在程式設計語言設計方面的傑出貢獻,包括建立了Pascal語言,以及在軟體工程領域的一系列開創性工作,榮獲了1984年的圖靈獎。

除了圖靈獎外,Wirth還在1988年獲得了IEEE計算機先鋒獎,以及IBM歐洲科學技術獎。

并于1992年成為瑞士工程科學院院士,在1994年被選為美國國家工程學院院士。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Wirth在計算機科學領域撰寫了十幾部著作,包括1975年的《Algorithms + Data Structures = Programs》(算法 + 資料結構 = 程式)、1986年的《Algorithms & Data Structures》(算法與資料結構)、1995年的《Digital Circuit Design》(數字電路設計)和1996年的《Compiler Construction》(編譯器建構)。

網友們痛心表示:讓我們哀悼這位先驅、同僚、導師和朋友。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

「我喜歡《編譯器構造》這本書。Wirth對簡潔的強調,對我是巨大的啟發。」

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

「Pascal是我在迷上Fortran和BASIC後,喜歡的第一種語言。」

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

生平

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Niklaus E. Wirth在瑞士長大,并在蘇黎世的瑞士聯邦理工學院(ETH)度過了職業生涯的大部分時間。

1959年,他在ETH獲得了首個學位,随後前往北美深造,并于1963年獲得了UC伯克利的博士學位。

在斯坦福大學任教一段時間之後,他于1968年傳回ETH。

1981年,他是建立世界頂尖計算機科學系的關鍵人物,并在1980年代的大部分時間裡,擔任該系的系主任。

1999年,Wirth退休了,但他還繼續在校園裡,頻繁露面了很多年。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

兩種程式設計語言

之是以在計算機科學界嶄露頭角,是因為他創造了兩種程式設計語言:一種是基于他博士論文工作的Euler,另一種是為IBM System/360系列計算機設計的系統程式設計語言PL360。這兩種語言都深受Algol語言的影響。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Wirth是lgol項目的國際精英團隊的成員之一,就是在這個團隊的共同努力下,才定義并實作了一系列語言标準。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

他取得了許多開創性成就,将程式設計語言的文法與語義明确區分,開發了新穎的實作技術,為了特定的解析方法進行了精細的語言設計。

早期的進階語言(比如FORTRAN),因為能顯著簡化應用程式的編寫和維護而廣受歡迎。

然而,對計算機公司來說,這些語言難以實作,原因是當時的硬體條件非常有限,編譯技術還不夠成熟,而這些語言或是設計粗糙,或是過分複雜。

Algol小組最傑出的成果Algol 60,引入了遞歸函數、結構化代碼塊和局部變量的概念,率先正式描述了程式設計語言的文法結構。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

在1957年,計算機科學界尚未建立起學術部門和定期的學術會議,而Algol項目為這一新興學科的發展打下了重要基礎。

通過參與Algol項目,Wirth與包括C.A.R. (Tony) Hoare、Edsger Dijkstra和Peter Naur在内的未來圖靈獎得主們進行了合作。加入這個團隊,他們需要展示自己在編譯器和其他系統軟體設計方面的傑出才能。

當時計算機科學家們面臨的最大挑戰,就是這些軟體的開發。

不過,1966年時,Wirth和Algol小組發生了分歧。

Wirth提出将Algol 60結合他自己設計的語言EULER進行擴充和改進,Algol小組給這個提案投了反對票。他們選擇了一個競争方案Algol 68,這個設計異常複雜,包含了許多創新但難以實作的功能。

在1968年,Wirth選擇離開了這個小組。随後,他與Tony Hoare合作,把這個未獲采納的提案發展成了一個新的非官方Algol版本,即Algol-W。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Pascal的誕生

以Algol-W為基礎,Wirth開發出了他最具影響力的程式設計語言——Pascal。

Pascal的設計遵循了Wirth的個人審美:簡潔、靈活,可以快速地編譯出高效的代碼。它繼承了Algol的代碼結構、邏輯完整性以及對遞歸的支援,同時将複雜的東西簡化,添加了對複雜和使用者自定義資料類型的支援。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Wirth後來指出,他遵循的一個重要原則是:「隻包括那些被深入了解的特性(尤其是對于開發者而言),忽略那些尚未嘗試和實作的特性。」

1971年,蘇黎世聯邦理工學院開始采用Pascal進行教學,同時Pascal迅速傳播到了其他大學。

為了在不同類型的計算機上運作Pascal,Wirth設計了一種新型的編譯器,這種編譯器能為虛拟機編寫代碼,并且在虛拟機上運作。

隻需在新計算機上模拟這個虛拟機,就可以輕松地移植他的編譯器。

随着個人計算機的廣泛普及,Pascal很快成為了主流程式設計語言。它的簡潔和高效非常适應個人計算機有限的記憶體和磁盤空間。

Borland推出了價格實惠、編譯速度快的Turbo Pascal編譯器,進一步鞏固了Pascal在1980年代作為個人計算機軟體開發中,領先的進階程式設計語言的地位。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

在20世紀70年代,Wirth和其他Algol項目的資深成員,如Edsger Dijkstra和Tony Hoare,一起緻力于研究程式設計方法論和形式方法。

他參與了國際資訊處理聯合會 (IFIP) 程式設計方法學工作組的工作,提倡通過逐漸精化代碼的方式,來補充他們提出的結構化程式設計的各種理念。他的著作《系統化程式設計 (Systematic Programming) 》和《算法 + 資料結構 = 程式 (Algorithms + Data Structures = Programs) 》,對于程式設計方法和概念貢獻極大。

親手打造系統的頂級科學家

不同于許多同行,Wirth一直是一個全面的實踐型系統建構者。他在學術工作的細分領域中不懈努力,取得了顯著的成就,并成功地阻止了将語言設計、作業系統、硬體、圖形和網絡劃分為不同專業領域的趨勢。

在20世紀50年代和60年代初,許多具有深遠影響的軟體系統,都是由小型的學術或工業團隊為了解決實際問題而開發的。

然而,到了70年代和80年代,工業軟體的規模大幅增長,大學與企業實驗室的計算機科學研究則更多轉向理論和基礎研究。

在這樣的背景下,像Wirth這樣嘗試親手打造完整生産級系統的頂級計算機科學家就變得格外罕見,尤其是在大學環境中。

休假回來,建構了Lilith

1976年,Wirth在施樂的研究中心(PARC)休假期間,受到了新興工作站技術的啟發,回到ETH後上司了一個項目,目标是建構一款全新的圖形工作站。

這款工作站名為Lilith,它提供了一個完備的計算環境,配備了Medos作業系統、高速區域網路、包括文本和圖形編輯器在内的應用軟體,以及雷射列印機。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

Lilith的新程式設計語言Modula-2在Pascal的基礎上增加了對并發處理和代碼子產品化的支援。

到了1980 年,第一批Lilith系統已經投入使用,在ETH以及其他一些大學推廣開來。

幾年後,他再次展示了自己的非凡才華,上司開發了Ceres工作站及其作業系統,同時還創造了新的面向對象程式設計語言和作業系統Oberon。從1980年代中期到1990 年代,ETH多次使用這些技術。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

盡管Modula-2和Oberon沒有Pascal那樣廣泛的影響,但它們被遷移到商業計算機上,并應用于計算機科學的教學。Oberon在不同類型的計算機上實作了程式的可移植性,這種特性後來被Java發揚光大。

1980年代,Wirth對硬體設計的參與更加深入。計算機硬體和軟體的設計都充滿挑戰,大部分人隻能專注一個領域,但Wirth卻能兩者兼顧。

他緊跟最新技術,利用現場可程式設計門陣列(FPGA)——一種可以根據特定應用重新程式設計的特殊晶片——開發了語言和工具,使得從高層規範出發能夠高效地配置FPGA。

因為他,ETH成為特殊的地方

在MIT、劍橋大學和曼徹斯特大學的計算機科學團隊停止自主制造計算機和作業系統數十年後,Wirth使得ETH成為一個特殊的地方。

在這裡,計算機科學學生和教師用的是内部生産的硬體、作業系統和程式設計工具。

Wirth堅信,在學生嘗試寫代碼之前,他們應該先閱讀并了解真實系統的代碼。

Pascal之父去世!圖靈獎得主、程式設計語言泰鬥Niklaus Wirth享年89歲

他一生都在追求簡潔、優雅和高效的系統,這正符合他「将理論與實踐相結合」的承諾。

在Wirth1984年的圖靈獎講座中,他提出了一個觀點——

我們必須從一開始就辨清哪些是核心要素,哪些是暫時的,并且要確定這些暫時的元素永遠不會影響到核心設施的系統性和結構化設計。

他說,每個項目本質上都是一個學習的試驗場。創新是學習的最好方式。隻有親手進行開發項目,我才能深刻了解困難所在,并有信心克服這些困難中的每一個細節。

能夠建立複雜高效的系統,是源于他對簡潔之美的不懈追求——究竟哪些是非必需的。

随着時間的推移,他在語言設計和編譯技術上的成就,變得更為簡明和高效,這與大多數情況下軟體變得更慢、更複雜形成鮮明對比。

他在1995年提出警告:「軟體膨脹并非不可避免的自然現象,遏制這一現象正是軟體工程師的責任。」

名言

- 實際上,一個程式對其目标的變化(通常稱為可維護性)和對環境變化的适應性(現稱為可移植性)主要可以通過其結構的整潔性來衡量。

- 但是,真正積極的程式設計活動涉及的是新程式的設計,而不是對舊程式的反複思考。

- 很明顯,程式設計課程應當教授設計與建造的方法,而且選用的例子應該能夠清晰地展示出程式逐漸發展的過程。

- 在逐漸細化的過程中,應盡可能長時間使用與目前問題直接相關且自然的表示法。

- 經驗告訴我們,程式設計課程是否成功,很大程度上取決于這些示例的選擇。

- 在實際的計算機程式設計領域,一個程式一旦運作正确且表現滿意,就永遠不再更改,這種情況其實是非常罕見的。

- 程式設計通常是通過執行個體來進行教學的。

參考資料:

https://amturing.acm.org/award_winners/wirth_1025774.cfm

繼續閱讀