Edsger Wybe Dijkstra was a principal contributor in the late 1950's to the development of the ALGOL, a high level programming language which has become a model of clarity and mathematical rigor. He is one of the principal exponents of the science and art of programming languages in general, and has greatly contributed to our understanding of their structure, representation, and implementation. His fifteen years of publications extend from theoretical articles on graph theory to basic manuals, expository texts, and philosophical contemplations in the field of programming languages.
一提到EWD,很多人就會(huì)想起找最短路徑的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一樣。其實(shí)這些個(gè)算法不過(guò)是兩個(gè)牛人在他們職業(yè)生涯中最瑣碎的貢獻(xiàn)。比如Dijkstra算法,無(wú)非是戴爺爺在1956年為了展示新計(jì)算機(jī)ARMAC的計(jì)算能力,初試身手的成果,屬于他的算法處女作。據(jù)戴爺爺自述,他搞出最短路徑算法的時(shí)候連紙筆都沒(méi)用。當(dāng)時(shí)他和他老婆在阿姆斯特丹一家咖啡廳的陽(yáng)臺(tái)上曬太陽(yáng)喝咖啡,突然就把這個(gè)算法想出來(lái)樂(lè)。而且當(dāng)時(shí)的算法研究還比較原始,牛人們忙著用計(jì)算機(jī)搞數(shù)值計(jì)算,對(duì)離散算法不屑一顧。那時(shí)連一個(gè)象樣的專注于離散算法的專業(yè)期刊都沒(méi)有。戴爺爺于是推遲發(fā)表這個(gè)算法。直到1959年,他才把這個(gè)算法發(fā)表在Numerische Mathematik的創(chuàng)刊號(hào)上,權(quán)為捧場(chǎng)。EWD在多個(gè)領(lǐng)域牛氣沖天,端的是理論和編程兩手硬的高手。只不過(guò)他的很多工作比較深刻,學(xué)校的老先生們覺(jué)得本科生接受不了,不給本科生講而已。
戴爺爺大概因?yàn)樽疃搪窂剿惴ㄒ粦?zhàn)成名,于是有人請(qǐng)他參加另一臺(tái)計(jì)算機(jī)X1的設(shè)計(jì)工作,并且把設(shè)計(jì)實(shí)時(shí)中斷系統(tǒng)的任務(wù)派給了他?,F(xiàn)在看來(lái)實(shí)時(shí)中斷也許不算什么,但要知到,X1前根本就沒(méi)有實(shí)時(shí)中斷的概念。實(shí)現(xiàn)它簡(jiǎn)直就是一場(chǎng)豪賭。戴爺爺起初還不情愿,但經(jīng)不住項(xiàng)目負(fù)責(zé)人Bram和Carel的輪番"吹捧":我們知道實(shí)時(shí)中斷讓您工作變得非常困難,但象您這樣的牛人肯定能做出來(lái)的說(shuō)。結(jié)果戴爺爺被糖衣炮彈徹底擊穿,接下了這個(gè)燙手山芋。兩三年后,他不僅搞出了實(shí)時(shí)中斷,還圍繞這個(gè)寫出了自己的博士論文,順利戴上博士帽。
讓戴爺爺真正成名立萬(wàn)的還是在X1上開(kāi)發(fā)的Algol60,最早的高級(jí)語(yǔ)言之一。戴爺爺沒(méi)日沒(méi)夜地工作了8個(gè)月,就搞出了Algol60,也因此獲得了1972年的圖靈獎(jiǎng)。因?yàn)锳lgol60,戴爺爺發(fā)表了一篇石破天驚的文章:Recursive Programming,于是人們才知道,原來(lái)高級(jí)語(yǔ)言也可以高效地實(shí)現(xiàn)遞歸,原來(lái)從此以后,所有程序員都不可避免地和戴爺爺發(fā)明的一個(gè)詞(應(yīng)該說(shuō)是概念)打交道:堆棧。而且Algol60還讓戴爺爺深入地思考多道程序設(shè)計(jì)的問(wèn)題,最終發(fā)明了每個(gè)系統(tǒng)程序員都繞不開(kāi)的概念:semaphore。當(dāng)然,戴爺爺總是把他發(fā)明的概念嚴(yán)格形式化,極具科學(xué)家本色的說(shuō)。和這些成就想比,他提出的吃飯的哲學(xué)家問(wèn)題,也就沒(méi)什么好說(shuō)的了。
說(shuō)來(lái)好笑,當(dāng)時(shí)的大學(xué)(忘了哪所了)還是覺(jué)得戴爺爺沒(méi)有受過(guò)正統(tǒng)的數(shù)學(xué)訓(xùn)練,也不是專門搞數(shù)值分析的,所以最后不太情愿地給了他一個(gè)教職。這種小挫折并不能妨礙象戴爺爺這樣的牛人創(chuàng)造歷史。他一邊教數(shù)值分析 ,一邊開(kāi)始開(kāi)發(fā)一個(gè)新的操作系統(tǒng),并培養(yǎng)計(jì)算機(jī)科學(xué)家。幾年后,THE Multiprogramming System橫空出世。THE是第一個(gè)支持松散耦合,顯式同步的進(jìn)程并由此使得嚴(yán)格證明系統(tǒng)沒(méi)有死鎖變得容易的操作系統(tǒng)??上Т鳡敔斎温毜南挡蛔R(shí)貨,還強(qiáng)行解散了他的研究小組(1972年戴爺爺給他的系主任說(shuō)他得了圖靈獎(jiǎng),系主任的第一反應(yīng)是你們搞計(jì)算機(jī)就喜歡亂發(fā)獎(jiǎng))。這讓戴爺爺相當(dāng)郁悶,得了抑郁癥。在極度郁悶之中,戴爺爺決定用寫作來(lái)治療自己的抑郁癥。于是經(jīng)典就誕生樂(lè):Notes on Structured Programming。戴爺爺從此被尊為結(jié)構(gòu)化編程的奠基人,而且他的抑郁癥也被治好了。
EWD太牛,結(jié)果他的故事也太多。1973起,他的故事就在美國(guó)發(fā)生了。
1930年,Dijkstra出生在荷蘭的鹿特丹。他的父親是一位化學(xué)家,母親是數(shù)學(xué)家。
他在萊頓大學(xué)獲得了數(shù)學(xué)和理論物理的碩士學(xué)位,又在阿姆斯特丹大學(xué)獲得了計(jì)算機(jī)科學(xué)博士學(xué)位。
1952年至1962年間,他在阿姆斯特丹數(shù)學(xué)中心作程序員;1962年至1984年在艾恩霍芬科技大學(xué)任數(shù)學(xué)教授。
1984至1999年,他在美國(guó)奧斯汀的德克薩斯大學(xué)任計(jì)算機(jī)科學(xué)教授。
1999年退休,任德克薩斯大學(xué)名譽(yù)教授。
Dijkstra提出了一個(gè)著名的見(jiàn)解:算法邏輯是而且必定是一切有用的計(jì)算機(jī)程序結(jié)構(gòu)的基礎(chǔ)。此外,他的著名觀點(diǎn)還包括:將操作系統(tǒng)作為明確同步的順序進(jìn)程來(lái)構(gòu)造、計(jì)算機(jī)程序開(kāi)發(fā)的正規(guī)化、有效控制不確定性的智力投資等。他發(fā)明的最短路徑算法有著極高的效率。
他還設(shè)計(jì)并且實(shí)現(xiàn)了第一個(gè)Algol60語(yǔ)言編譯器。
他還是廢除“goto語(yǔ)句”的領(lǐng)導(dǎo)者。
Dijkstra是一位高產(chǎn)的作家。http://www.cs.utexas.edu/~EWD/這個(gè)網(wǎng)址,你可以找到他全部超過(guò)3000篇的作品。他經(jīng)常與數(shù)百位朋友、同事通信——不是使用電子郵件,而是傳統(tǒng)的信件。無(wú)論是寫學(xué)術(shù)論文還是寫信,他都堅(jiān)持使用鋼筆,而不是計(jì)算機(jī)。
Dijkstra最廣為人知的是他的睿智、雄辯而一針見(jiàn)血的話語(yǔ)。他說(shuō):“計(jì)算機(jī)能不能思考?這個(gè)問(wèn)題就好象‘潛水艇能不能游泳’一樣。”
當(dāng)年輕的科學(xué)家問(wèn)他如何選擇研究課題時(shí),他回答:“只做你能做的事?!痹跇s獲圖靈將之后的演講中,他說(shuō):“作為一種工具,計(jì)算機(jī)使我們的文化起了淺淺的波瀾,但也僅此而已;作為對(duì)人類智力的一種挑戰(zhàn),計(jì)算機(jī)掀起的軒然大波在人類歷史上是史無(wú)前例的?!?/p>
Dijkstra提出了許多新概念、新術(shù)語(yǔ),大大的豐富了計(jì)算機(jī)科學(xué)的語(yǔ)言。他提出的概念包括結(jié)構(gòu)化程序設(shè)計(jì)、問(wèn)題分解、同步、死鎖、“哲學(xué)家晚餐”、最弱前提……以及著名的用于控制計(jì)算機(jī)進(jìn)程同步的“信號(hào)量”。牛津英語(yǔ)詞典收錄了他在計(jì)算機(jī)科學(xué)環(huán)境中使用的“vector”和“stack”這兩個(gè)詞。
在他的科學(xué)生涯中,Dijkstra一直堅(jiān)持學(xué)院派的高風(fēng)亮節(jié),不讓自己的研究受到來(lái)自商業(yè)、管理、政治等等因素的影響。簡(jiǎn)單、優(yōu)美而又說(shuō)服力,這就是他的風(fēng)格。在程序設(shè)計(jì)和數(shù)學(xué)領(lǐng)域中,他對(duì)“優(yōu)雅”的一貫堅(jiān)持激勵(lì)了成千上萬(wàn)的人。他把自己的工作評(píng)價(jià)為“最高標(biāo)準(zhǔn)”,并以此鼓勵(lì)他的朋友做到同樣的高度。
另外,他還義無(wú)反顧地?fù)?dān)當(dāng)了蘇格拉底的角色——城邦的牛虻。他一次又一次地指出時(shí)髦觀點(diǎn)中存在的錯(cuò)誤,象牛虻一樣刺激國(guó)家這匹“駑馬”不斷前進(jìn),和蘇格拉底一樣,他最重要的遺產(chǎn)就是那些未完地研討、歸納了一半的理論和沒(méi)有完成的探索。所有與他討論、共事過(guò)的人,尤其是那些參加過(guò)他在艾恩德霍芬和奧斯汀組織的讀書(shū)小組(著名的“星期二下午俱樂(lè)部” )的人,都從他身上獲益匪淺。
Dijkstra是1972年圖靈獎(jiǎng)的得主——圖靈獎(jiǎng)常被稱為“計(jì)算機(jī)科學(xué)界的諾貝爾獎(jiǎng)”。
他是荷蘭皇家科學(xué)院的院士、美國(guó)國(guó)家科學(xué)院的院士,同時(shí)還是不列顛計(jì)算機(jī)協(xié)會(huì)的名譽(yù)會(huì)員。
他還在1974年獲得過(guò)美國(guó)信息處理學(xué)會(huì)聯(lián)合會(huì)(AFIPS)頒發(fā)哈里·古德獎(jiǎng)。
在1982年獲得電氣電子工程師協(xié)會(huì)(IEEE)頒發(fā)的計(jì)算機(jī)先驅(qū)獎(jiǎng)。
在1989年獲得美國(guó)計(jì)算機(jī)學(xué)會(huì)(ACM)為計(jì)算機(jī)科學(xué)教育做出突出貢獻(xiàn)者而頒發(fā)的SIGCSE獎(jiǎng)。
雅典經(jīng)濟(jì)大學(xué)曾在2001年授予他名譽(yù)博士頭銜。
2002年8月6日,在與癌魔多年的斗爭(zhēng)之后,計(jì)算機(jī)科學(xué)及工程界的泰斗Edsger Wybe Dijkstra教授在荷蘭Nuenen的家中與世長(zhǎng)辭,享年72歲。
2002年,日本的C&C基金會(huì)對(duì)Dijkstra地評(píng)價(jià)是:“他對(duì)軟件基礎(chǔ)理論、算法理論結(jié)構(gòu)化和信號(hào)機(jī)制進(jìn)行了開(kāi)創(chuàng)性的研究,為計(jì)算機(jī)科學(xué)奠定了堅(jiān)實(shí)的基礎(chǔ)。”
讓我們借用裴多給蘇格拉底的悼詞:“我們毫無(wú)疑問(wèn)地宣稱,在我們所知的與他同一時(shí)代的所有人中,他是最聰明、最公正、最優(yōu)秀的?!?/p>
Edsger Wybe Dijkstra引導(dǎo)了并且將繼續(xù)引導(dǎo)這個(gè)星球所有的程序員,他的貢獻(xiàn)和影響將與世長(zhǎng)存。