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