西風 發自 凹非寺
量子位 | 公衆号 QbitAI
編程祖師爺 Niklaus Wirth 于 1 月 1 日逝世,享年 89 歲。
他是圖靈獎得主,被稱爲有史以來最偉大的程序員之一,編程語言 Pascal、Euler、Algol W、Modula、Modula-2、Oberon、Oberon-2、Oberon-07 等均出自他手。
他還主導了 Lilith 和 Oberon 操作系統的設計與開發,爲計算機科學領域寫下了十幾本著作,其中就包括《算法 + 數據結構 = 程序》(1975 年)、《編譯器構造》(1996 年)。
與人們對計算機科學家的刻闆印象不同,Niklaus Wirth 生活中極具幽默感和個性。
他常開這樣一個玩笑:
在歐洲人們通常用正确的發音 "Nick-louse Veert" 來稱呼他,而在美國,人們總是将其混淆爲 "Nickel ’ s Worth"。(也就是說,歐洲人直呼其名,而美國人則稱他爲價值)
懂編程的人都知道," 按名調用 " 和 " 按值調用 " 是兩種不同的參數傳遞方式,這也被大家公認爲是的 " 有史以來最好的 CS 雙關語 "。
Eiffel 語言創造者 Bertrand Meyer 發文悼念:
編程語言、編程方法論、軟件工程及硬件設計領域的泰鬥,Niklaus Wirth,已于 1 月 1 日辭世。我們對這位領域先驅、親密同事、啓蒙導師和摯友的離去深感哀痛。
編程界一代傳奇
1934 年,Niklaus Wirth 出生于瑞士北部的一個小鎮。
少年時他與數學家 Pascal 一樣熱衷于動手實踐和思考,尤其喜歡組裝飛機模型。
之後,他先後獲得蘇黎世聯邦理工學院電氣工程學士學位、加拿大拉瓦爾大學理學碩士學位、加州大學伯克利分校計算機科學博士學位。博士導師是計算機設計先驅 Harry Huskey。
早期,Wirth 因創建兩種語言在計算機科學領域聲名鵲起:Euler、PL360。
Euler 是基于他的博士論文工作而開發的通用編程語言,引入了非數值數據類型和運算符優先級等新的概念,被認爲是在形式化編程語言設計方面的一次重要嘗試。
而 PL360 系統編程語言,專爲 IBM System/360 系列計算機而設計,采用了特定的解析方法,提供了對硬件的直接控制能力,使得編程更加高效,也更容易編寫和維護。
這兩種語言都深受早期程序設計語言 Algol 的影響。
Niklaus Wirth 是 Algol 項目團隊的精英成員,該團隊定義和創建了一系列語言标準,例如 FORTRAN 等首批高級語言。
上世紀五十年代末,在計算機科學家還沒有專門的學術部門和常規會議時,Algol 項目爲這個新興學科奠定了重要基礎。通過 Algol,Wirth 與其他未來的圖靈獎得主 C.A.R. ( Tony ) Hoare、Edsger Dijkstra 和 Peter Naur 等展開了深度合作。
Algol 60 是 Algol 項目中最重要的成果之一,其中引入了遞歸函數、結構化代碼塊和局部變量等概念。
1966 年,Wirth 提議要把 Algol 下一種語言設計成受 Euler 語言影響的 Algol 60 擴展和改進版,但遭到團隊投票反對,最終團隊選擇了複雜度很高的 Algol 68 提案。
1968 年,Niklaus Wirth 從團隊辭職,與 Tony Hoare 合作,将被拒絕的提案轉變爲一種非官方的 Algol 版本,即 Algol-W。
同年,Niklaus Wirth 回到了蘇黎世聯邦理工學院任教,一幹就幹到了 1999 年退休。
這當中,Niklaus Wirth 又以 Algol-W 爲基礎,創造了他最有影響力的作品—— Pascal 語言。
遵循他個人的審美,Pascal 保留了 Algol 的代碼結構、邏輯完整性和對遞歸的支持,但去除了複雜性的内容,因此簡單、靈活、能夠快速編譯高效代碼。
Wirth 後來寫道:
最關鍵的原則是納入那些被充分理解的功能,同時排除那些尚未嘗試或尚未實現的功能,尤其是對于開發者而言。
1971 年,Pascal 在蘇黎世聯邦理工學院教學中得到采用,并迅速在全球其他大學獲得推廣。
爲适用不同計算機,Wirth 還設計了一款新型編譯器,既能爲虛拟機編寫代碼,又能生成可在虛拟機上運行的代碼。
用這種方法在新計算機上模拟虛拟機,大大簡化了編譯器的移植過程。随着個人計算機的廣泛普及,Pascal 非常适應個人計算機有限的内存和存儲空間,成爲主流編程語言。
而當時的 Borland 公司推出了經濟實惠且運行迅速的 Turbo Pascal 編譯器,進一步鞏固了 Pascal 在上世紀八十年代作爲重要的個人計算機高級編程語言的地位。
也造就了當年的 Borland 傳奇。
直到現在,Pascal 被認爲是 C 語言問世以前最好的編程語言之一,國際信息學奧林匹克競賽(IOI)還把 Pascal 語言作爲三種程序設計語言之一。
從 Euler 到 Pascal,可以窺見 Wirth 的一個習慣,他的學術成果或編程語言經常以著名科學家命名,Euler 就是爲了紀念瑞士著名數學家 Euler 而命名的,Pascal 則是爲紀念法國數學家 Blaise Pascal 而命名。
之後,Wirth 與 Algol 項目的其他資深人士如 Edsger Dijksta,對編程方法和形式化方法感興趣。他參加了 IFIP 編程方法工作組,提出了逐步完善代碼的想法,作爲對他們提出的各種 " 結構化編程 " 願景的補充。
之後他又擴展了 Pascal,提出了 Modula、Modula-2、Oberon 等,還主導了 Lilith 和 Oberon 操作系統的設計與開發。
除此外,Wirth 在其他方面也有許多貢獻,如擴充了著名的巴科斯範式,發明了語法圖,還寫下了《系統程序設計導論》、《算法 + 數據結構 = 程序》等衆多計算機科學領域的經典著作。
1984 年,Niklaus Wirth 因 " 開發了一系列創新的計算機語言 ",獲得計算機科學最高榮譽圖靈獎。
在獲獎演講中,Niklaus Wirth 講道人們必須 " 及早區分什麽是本質的,什麽是短暫的 ",并确保 " 短暫的事物永遠不會侵犯到核心設施的系統化、結構化設計 "。
每一個項目首先都是一個學習實驗。通過發明才能學得最好。隻有親自進行開發項目,我才能對固有的困難有足夠的了解,對内在的細節有足夠的信心,能夠掌握它們。
除了圖靈獎之外,維爾特還獲得了 IEEE 計算機先驅獎(1988 年)、IBM 歐洲科學技術獎(1988 年)。他還被選爲瑞士工程院院士(1992 年)、美國國家工程院外籍院士(1994 年)。
極具幽默感和個性
天才計算機科學家或是軟件工程師常常被視爲是與世隔絕的 " 外來者 ",Niklaus Wirth 卻不符合大衆的這種刻闆印象,他有自己的個性和幽默感。
據網友分享,1968 年,Niklaus Wirth 好友、計算機科學家 Edsger W. Dijkstra 向《ACM 通訊》(Communications of the ACM)提交了一篇論文,原标題是 "A case against the goto statement"(反對 goto 語句的一個案例)。
爲加快發表速度,出版編輯将其改爲了 " 給編輯的信 " 的形式,随後 Niklaus Wirth 還爲其更改了标題爲 "The goto statement considered harmful"(認爲 goto 語句有害)。
随後這個标題被廣泛引用,并啓發了許多類似的文章标題,如 "X considered harmful",甚至出現了一篇名爲 "Dijkstra considered harmful" 的文章。
包括開頭提到的 Niklaus Wirth 常開的那句玩笑,都是他具有獨特個人特質的證明。
……
Niklaus Wirth 的一生都與編程如影随形。
即便是在 80 歲生日慶祝研讨會上,Niklaus Wirth 還展示了他的新 Oberon 端口操作系統,運行在一個自制的 CPU 上,CPU 安裝在一個随機帶有 USB 外設的 FPGA 開發闆上。
面對 Niklaus Wirth 的離世,網友們紛紛悼念:
我第一份有報酬的編程工作使用的是 Pascal,之後又使用了 Modula,這對我後續很多工作産生了深遠影響。
我從未有機會見到他,但他對我的職業生涯以及許多其他人都産生了重大影響。
R.I.P