能把三位大牛的名字都叫出來的人恐怕不多吧:
這三位都是圖靈獎(jiǎng)獲得者,他們的名字和發(fā)明散布在各種教科書中,從左到右,依次是:
瑞士人,一生發(fā)明了8種編程語言,其中最著名的是Pascal,提出了著名的“程序=數(shù)據(jù)結(jié)構(gòu)+算法”,1984年沃斯因開發(fā)了一系列創(chuàng)新的計(jì)算機(jī)語言而獲得圖靈獎(jiǎng)。
荷蘭人,發(fā)明了“最短路徑算法”,“信號量”,提出了“Goto是有害的”,1972年因?qū)Y(jié)構(gòu)化編程的貢獻(xiàn)獲得圖靈獎(jiǎng)。
英國人,發(fā)明了“快速排序算法”,發(fā)明了霍爾邏輯來驗(yàn)證程序正確性,提出CSP解決并發(fā)過程的交互,發(fā)明了null這個(gè)引發(fā)“數(shù)十億美元”損失的錯(cuò)誤,1980年因?yàn)閷幊陶Z言的定義和設(shè)計(jì)的基本貢獻(xiàn)獲得圖靈獎(jiǎng)。
他們?nèi)硕荚跉W洲,都是從學(xué)工程學(xué)開始,后來轉(zhuǎn)到了計(jì)算機(jī)領(lǐng)域。
他們年齡相仿(沃斯和霍爾同歲,比迪杰斯特拉小4歲),共同的興趣讓他們走到一起,不但在暑期活動(dòng),學(xué)術(shù)會(huì)議上經(jīng)常碰面,密切合作,在私下里,也建立了深厚的友誼,經(jīng)常來回走動(dòng),互相拜訪。
今天講幾個(gè)小故事來聊聊他們的偉大貢獻(xiàn)。
在上世紀(jì)六七十年代,是編程語言發(fā)展的黃金時(shí)代。
第一個(gè)高級編程語言Fortran已經(jīng)出現(xiàn),但是主要應(yīng)用在工程界,和硬件密切相關(guān)。
1960年1月,F(xiàn)ortran之父約翰·巴克斯,Lisp之父約翰·麥卡錫,第一位圖靈獎(jiǎng)獲得者Alan Jay Perlis等一大批頂尖科學(xué)家在巴黎聚會(huì),經(jīng)過一番唇槍舌戰(zhàn)的討論,他們推出了ALGOL 60,這是一種和計(jì)算機(jī)硬件無關(guān)的編程語言,方便算法的描述。
ALGOL 60有很多創(chuàng)新,遞歸、本地變量、begin end 代碼塊都是由它率先推出。
現(xiàn)代大多數(shù)編程語言的語法,都是類ALGOL的。
從下圖中,就可以看到ALGOL的江湖地位,是很多編程語言的老祖宗。
圖片
迪杰斯特拉對Algol-60非常欣賞,他不止一次說道,這是計(jì)算機(jī)科學(xué)成為一個(gè)學(xué)科的重要時(shí)刻。
僅僅7個(gè)月以后,迪杰斯特拉就在荷蘭實(shí)現(xiàn)了第一個(gè)ALGOL60的編譯器,比其他小組早了一年多。
為了實(shí)現(xiàn)ALGOL60中的遞歸,迪杰斯特拉第一次引入了Stack這個(gè)概念。
迪杰斯特拉等人還舉辦了一個(gè)ALGOL 60的培訓(xùn)班,來培訓(xùn)的就有霍爾,霍爾剛剛發(fā)表了快速排序算法,他上完培訓(xùn)班,也在自己公司機(jī)器上實(shí)現(xiàn)了ALGOL 60,霍爾的實(shí)現(xiàn)效率高,可靠性強(qiáng),受到國際學(xué)術(shù)界的關(guān)注,進(jìn)入了IFIP工作組,開始維護(hù)和發(fā)展ALGOL。
1966年,霍爾和沃斯一起做了一個(gè)提案,希望對ALGOL做出一次改進(jìn)。但是ALGOL小組認(rèn)為他們的提案太保守,改動(dòng)太小,拒絕了。
“一氣之下”,沃斯和霍爾退出了ALGOL小組,自己把提案的想了做了實(shí)現(xiàn),即編程語言ALGOL W。
正是在ALGOL W 中,霍爾發(fā)明了那個(gè)被“無數(shù)人詬病”的空引用null。
在2009年的一個(gè)軟件會(huì)議上,霍爾為發(fā)明null夸張地道歉:
“我當(dāng)時(shí)正在設(shè)計(jì)ALGOL W 的類型系統(tǒng),我忍不住想把null放進(jìn)去,因?yàn)樗苋菀讓?shí)現(xiàn)......沒想到它導(dǎo)致了無數(shù)的錯(cuò)誤,系統(tǒng)崩潰......在過去的40年,引發(fā)了數(shù)十億美元的損失。”
1970年,沃斯進(jìn)一步改進(jìn)了 ALGOL W,成為了大名鼎鼎的Pascal
為了幫助在各種計(jì)算機(jī)上實(shí)現(xiàn)Pascal, 他創(chuàng)建了一種新型的編譯器,該編譯器不會(huì)直接生成機(jī)器碼,而是生成一種中間的代碼形式,在虛擬機(jī)上運(yùn)行。
1976年,沃斯寫了一本書介紹基本的數(shù)據(jù)結(jié)構(gòu)和算法,也捎帶著介紹了Pascal語法。
這本書的名稱也很神奇,叫做《程序=算法+數(shù)據(jù)結(jié)構(gòu)》,從此這個(gè)公式開始名揚(yáng)世界。
圖片
雖然 Pascal 很快就得到了大學(xué)的認(rèn)可,但它又花了幾年時(shí)間才成為主流。
這得益于Philippe Kahn,是沃斯在瑞士蘇黎世聯(lián)邦理工學(xué)院教學(xué)期間的一個(gè)學(xué)生。
圖片
Philippe Kahn看到了沃斯教授在Pascal上的開創(chuàng)性工作,1982年成了一家叫做Borland的公司,從事軟件開發(fā)工具的開發(fā)。
1983年,Borland推出了革命性的集成開發(fā)環(huán)境,Turbo Pascal ,僅賣49.95美元。
圖片
Turbo Pascal 除了價(jià)格低廉以外,另外一個(gè)殺手锏就是編譯速度飛快。
操刀編譯器的是丹麥人Anders Hejlsberg,他很大程度上受到了《程序=算法+數(shù)據(jù)結(jié)構(gòu)》這本書中Tiny Pascal”編譯器的啟發(fā)。
關(guān)于Anders Hejlsberg的故事,可以看這篇漫畫《一個(gè)養(yǎng)活了四代程序員的男人》。
1968年,迪杰斯特拉向ACM提交了一篇論文,尖銳地批評了當(dāng)時(shí)編程中過度使用Goto語句的情況,以及對結(jié)構(gòu)化編程的擁護(hù),他提議,在高級語言中廢除Goto語句!
論文的標(biāo)題平淡無奇:A Case Against the Goto Statement。
沃斯正好是當(dāng)時(shí)的編輯,他順手把標(biāo)題改成了Goto語句是有害的(Goto Statement Considered Harmful)。
如果放在如今的自媒體時(shí)代,沃斯絕對是一個(gè)擅長抓熱點(diǎn)的標(biāo)題大師。
這個(gè)標(biāo)題就像一個(gè)重磅炸彈,很多大牛跳出來,或支持或反對。
高德納寫了一篇叫做《使用 Goto語句進(jìn)行結(jié)構(gòu)化編程》的文章,分析了一些常見的編程場景,指出一些場景中Goto是最適合的語言結(jié)構(gòu)。
K&R在《C語言編程》中,也指出Goto可以用于函數(shù)結(jié)束錯(cuò)誤處理程序和循環(huán)的多級中斷。
即使在多年以后,Linus之父Linus Torvalds和《代碼大全》的作者Steve McConnell還反對迪杰斯特拉的觀點(diǎn),指出 Goto可以是一種有用的語言功能,可以提高程序速度、大小和代碼清晰度。
據(jù)統(tǒng)計(jì),2013 年,Linux 內(nèi)核代碼中約有 100,000 個(gè) goto。
“XXX是有害的”成為了計(jì)算機(jī)的時(shí)尚用詞,在隨后的幾十年中不斷出現(xiàn):
“全局變量是有害的”
“Unix風(fēng)格,或者cat -v 是有害的”
“MD5被認(rèn)為是有害的”
“以人為本的設(shè)計(jì)是有害的”
“Java的新特性是有害的”
“‘被認(rèn)為有害’的文章是有害的”
......
沃斯,迪杰斯特拉和霍爾都在歐洲,獲得圖靈獎(jiǎng)都和編程語言有關(guān),可以稱為歐洲編程語言的三巨頭。
他們都是結(jié)構(gòu)化編程的先驅(qū),他們的工作深刻地影響了我們現(xiàn)在的編程。
2002年8月6日,迪杰斯特拉和癌癥斗爭多年以后,不幸離世,享年72歲。
2024年1月1日,沃斯去世。享年89歲。
三巨頭中,只剩下霍爾一位了。
其實(shí),除了這三位之外,歐洲還有一對編程語言雙子星,挪威的Ole-Johan Dahl和Kristen Nygaard ,他們發(fā)明了面向?qū)ο蟮恼Z言Simula,兩人也都于2002年去世。
我們現(xiàn)在使用的編程語言的概念和特性,差不多都在上世紀(jì)六七十年代就已發(fā)明,那一批編程語言的先驅(qū),都在逐漸老去。
編程語言的黃金時(shí)代,過去了。
如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)。
本文鏈接:http://www.www897cc.com/showinfo-26-58922-0.html歐洲的編程語言三巨頭,只剩下一位了!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
下一篇: Apollo,真香!