圖靈獎得主Niklaus Wirth逝世,從Euler到Pascal,一代編程巨星隕落
編程祖師爺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講道人們必須“及早區分什么是本質的,什么是短暫的”,并確?!岸虝旱氖挛镉肋h不會侵犯到核心設施的系統化、結構化設計”。
每一個項目首先都是一個學習實驗。通過發明才能學得最好。只有親自進行開發項目,我才能對固有的困難有足夠的了解,對內在的細節有足夠的信心,能夠掌握它們。
除了圖靈獎之外,維爾特還獲得了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,這對我后續很多工作產生了深遠影響。
我從未有機會見到他,但他對我的職業生涯以及許多其他人都產生了重大影響。