日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

你不知道的关于计算机大师 Dijkstra 的事情

發(fā)布時間:2025/7/14 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 你不知道的关于计算机大师 Dijkstra 的事情 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Dijkstra 的全名叫 Edsger Wybe Dijkstra(艾茲赫爾·韋伯·戴克斯特拉)。大部分中國程序員如果能記住這個名字是因為學(xué)過計算最短路徑的「Dijkstra 算法」,然而大部分人都難以記住正確的拼寫,因為他是荷蘭人,名字不符合英語的發(fā)音規(guī)則。

他是幾位影響力最大的計算科學(xué)的奠基人之一,也是少數(shù)同時從工程和理論的角度塑造這個新學(xué)科的人。他 的根本性貢獻(xiàn)覆蓋了很多領(lǐng)域,包括:編譯器、操作系統(tǒng)、分布式系統(tǒng)、程序設(shè)計、編程語言、程序驗證、軟件工程、圖論等等。他的很多論文為后人開拓了整個新 的研究領(lǐng)域。我們現(xiàn)在熟悉的一些標(biāo)準(zhǔn)概念,比如互斥、死鎖、信號量等,都是 Dijkstra 發(fā)明和定義的。1994 年時有人對約 1000 名計算機(jī)科學(xué)家進(jìn)行了問卷調(diào)查,選出了 38 篇這個領(lǐng)域最有影響力的論文,其中有五篇是 Dijkstra 寫的。

Dijkstra 在鹿特丹長大。在高中畢業(yè)前他想在法學(xué)界發(fā)展,并且希望將來能在聯(lián)合國做荷蘭的代表。然而因為他畢業(yè)時數(shù)學(xué)、物理、化學(xué)、生物都是滿分,老師和父母都勸他 選擇科學(xué)的道路,后來他選擇學(xué)習(xí)理論物理。在大學(xué)期間,世界上最早的電子計算機(jī)出現(xiàn)了,他父親讓他到劍橋大學(xué)參加一個程序設(shè)計的課程。從這里開始,他的程 序設(shè)計生涯開始了。一段時間以后他決定轉(zhuǎn)向計算機(jī)程序設(shè)計,因為他認(rèn)為相對于理論物理,程序設(shè)計對智力是更大的挑戰(zhàn)。程序設(shè)計是最無情的,每一個一和零都容不得差錯。

后來他在阿姆斯特丹的數(shù)學(xué)中心成為了一個兼職的程序員。他的工作是為一些正在被設(shè)計制造的計算機(jī)編寫程序,也就是說他要用紙和筆把程序?qū)懗鰜?#xff0c;驗證 它們的正確性,和負(fù)責(zé)硬件的同事確認(rèn)需要的指令是可以被實現(xiàn)的,并寫出計算機(jī)的規(guī)范說明。他為并不存在的機(jī)器寫了五年程序,因此他很習(xí)慣于不測試自己寫的 程序,因為無法測試。這意味著他必須通過推理說服自己程序是正確的,這種習(xí)慣可能是他后來經(jīng)常強(qiáng)調(diào)通過程序結(jié)構(gòu)保證正確性易于推理的原因。他曾經(jīng)被后來出 現(xiàn)的實時中斷困擾了一陣子,因為中斷隨時可能發(fā)生,讓證明程序的正確性變得復(fù)雜了很多。他的博士論文就是關(guān)于一個他寫的實時中斷處理程序。

在他決定成為一個程序員后,他盡快完成了學(xué)業(yè),因為以他的話說,他在大學(xué)里不再受歡迎了:物理學(xué)家們覺得他是逃兵,而數(shù)學(xué)家們也看不起他和他做的事,因為在當(dāng)時的數(shù)學(xué)文化里,你的課題必須和 ∞ 有關(guān)才會受尊重。那個時候程序設(shè)計沒有成為一個職業(yè),沒有人能說出這個行業(yè)的基礎(chǔ)知識體系是什么,而這些都會被 Dijkstra 改變。1957 年,他結(jié)婚的時候在申請的職業(yè)一欄寫上了「程序員」,結(jié)果被政府拒絕,因為當(dāng)時荷蘭沒有這個職業(yè)。

在一臺新的叫 ARMAC 的計算機(jī)發(fā)布之前,Dijkstra 需要想出一個可以讓不懂?dāng)?shù)學(xué)的媒體和公眾理解的問題,以便向他們展示。有一天他和未婚妻在阿姆斯特丹購物,他們停下來在一家咖啡店的陽臺上喝咖啡休息,他 開始思考這個問題。他覺得可以讓計算機(jī)演示如何計算荷蘭兩個城市間的最短路徑,這樣問題和答案都容易被人理解。于是他在 20 分鐘內(nèi)想出了高效計算最短路徑的方法。Dijkstra 自己也沒有想到這個 20 分鐘的發(fā)明會成為他最著名的成就之一,并且會被以他的名字命名為 Djikstra 算法。三年以后這個算法才首次發(fā)布,但當(dāng)時的數(shù)學(xué)家們都不認(rèn)為這能成為一個數(shù)學(xué)問題:兩點之間的路徑數(shù)量是有限的,其中必然有一條最短的,這算什么問題 呢?在之后的幾十年里,直到今天,這個算法被廣泛應(yīng)用在各個行業(yè)。Djikstra 的眼科醫(yī)生一直不知道他是做什么的,有一天突然問他:「是你發(fā)明了 GPS 導(dǎo)航的算法嗎?」。一問之下,原來他讀了 2000 年 11 月的科學(xué)美國人雜志,講 GPS 的文章里說到了 Djikstra。

求解最短路徑的 Dijkstra 算法

Dijkstra 后來在采訪中說,他的最短路徑算法之所以能如此簡潔,是因為當(dāng)時在咖啡店里沒有紙和筆,這強(qiáng)迫他在思考時避免復(fù)雜度,盡可能追求簡單。在他的訪談和文章中,經(jīng)常能發(fā)現(xiàn)一個主題,就是資源的匱乏往往最能激發(fā)創(chuàng)造性。
Dijkstra 第一次美國之行給他留下了深刻印象。在 1963 年時他已經(jīng)小有名氣,ACM 邀請他參加了一次在普林斯頓的會議,這也是他第一次和 Donald Knuth 會面。第一個演講者是一個來自 IBM 的人,Dijkstra 發(fā)現(xiàn)他完全聽不懂這個人講的內(nèi)容,也不理解寫滿了整個黑板的公式,而很多其他聽眾都積極提出問題并參與討論。在茶歇的時候他對其他人表達(dá)了擔(dān)憂,認(rèn)為自己 可能不適合參加這個會議,美國的參會者告訴他「哦,不必?fù)?dān)心。其實大家都聽不懂他說什么。但是這次會議是 IBM 贊助的,所以得讓他們先上臺,而且不能冷場。」Dijkstra 后來似乎一直對 IBM 不太感冒。IBM 的 System/360 大型機(jī)發(fā)布后,他花了一些時間閱讀 360 的手冊,他把這段時間描述為「我職業(yè)生涯中最黑暗的一周」。后來蘇聯(lián)決定建造和 360 完全兼容的計算機(jī),Dijkstra 在一次會議上說「這是美國在冷戰(zhàn)中最大的勝利」。

之后 Dijkstra 進(jìn)入了學(xué)術(shù)上最活躍的時期,他解決了多個圖論算法問題,他發(fā)表的關(guān)于并發(fā)程序控制的論文開創(chuàng)了分布式計算和并發(fā)計算的領(lǐng)域,他也首先定義了互斥和死鎖并提出了解法。他和 Jaap Zonneveld 一起寫了第一個 ALGOL 60 的編譯器,這是最早支持遞歸的編譯器。他們約定項目結(jié)束前都不許刮胡子,Zonneveld 在結(jié)束后很快剃掉了胡子,而 Dijkstra 從此終身留著胡子。

1960 年代后期,由于計算機(jī)變得越來越強(qiáng)大,程序設(shè)計和維護(hù)的方式跟不上軟件復(fù)雜度的快速上升,世界進(jìn)入了「軟件危機(jī)」。Dijkstra 在 ACM 的月刊上發(fā)表了一篇名為 GOTO Statement Considered Harmful 的文章為全世界的程序員們指明了方向,這就是結(jié)構(gòu)化程序設(shè)計運動的開始。他和 Hoare、Dahl 合著的《結(jié)構(gòu)化程序設(shè)計》成為了這次軟件史上第一次變革的綱領(lǐng),影響了此后大部分程序設(shè)計語言,包括 70、80 后程序員熟悉的 C 和 Pascal。很多大學(xué)的第一門程序設(shè)計課就是以這本書的名字作為課程名。

在分布式計算方面,除了定義前面提到的互斥、死鎖等并發(fā)控制的基礎(chǔ)概念和問題,他還開創(chuàng)了自穩(wěn)定系統(tǒng)這個子領(lǐng)域,并且是最早對容錯系統(tǒng)進(jìn)行研究的 人。我自己的 Ph.D. 論文就屬于對自穩(wěn)定系統(tǒng)的研究。分布式計算最權(quán)威的會議是 PODC,而 Leslie Lamport 曾經(jīng)評價到,PODC 之所以存在就是因為 Dijkstra。「PODC 影響力論文獎」是分布式計算領(lǐng)域最高的榮譽(yù),它認(rèn)可的是經(jīng)過時間考驗的重要成就。我自己的導(dǎo)師 Michael Fischer 和 Nancy Lynch、Michael Paterson 一起在 2001 年獲獎。2002 年,Dijkstra 去世,這一年的 PODC 獎頒給了他,獲獎?wù)撐氖撬?1974 年關(guān)于自穩(wěn)定系統(tǒng)的論文。為了紀(jì)念他,PODC 決定從 2003 年把這個獎項改名為 Dijkstra 獎。所以 Dijkstra 是少數(shù)獲得過以自己的名字命名的獎項的人之一。

Dijkstra 在學(xué)術(shù)界有一些很知名的個性。讀過碩士或者博士的人大多對論文的應(yīng)用次數(shù)、影響因子之類的東西很敏感,中國學(xué)術(shù)界尤其如此。而 Dijkstra 在他的書和文章里幾乎從來不提供參考文獻(xiàn)列表,很多人對此很不滿,而他認(rèn)為這樣增強(qiáng)了他工作的獨立性。他在德州大學(xué)奧斯丁分校的教學(xué)風(fēng)格也很獨特。在每個 學(xué)期開始的時候,他會給每個學(xué)生拍一張照片以便記住他們的名字(這是在智能手機(jī)還沒發(fā)明,使用老式相機(jī)的時代)。他的課程幾乎都沒有指定教科書,少數(shù)有教 科書的時候也是他自己寫的書。我上大學(xué)的時候,有很多教授也有只用自己寫的教科書的習(xí)慣,但可能原因不一樣吧。他通常用口試的方式進(jìn)行期末考試,花一周的 時間讓學(xué)生逐個到他辦公室或家里考試,每個人要用兩三個小時。

盡管計算機(jī)軟件技術(shù)有很大一部分是 Dijkstra 發(fā)明的,但他卻很少使用計算機(jī),或許這和他作為程序員時很大一部分時間是在為還沒造出來的計算機(jī)開發(fā)程序有關(guān)系。后來在德州大學(xué)的同事壓力下他購買了一臺 Macintosh 電腦,但只用來回復(fù)電子郵件和瀏覽網(wǎng)頁。和 Donald Knuth、Leslie Lamport 這樣關(guān)注于論文的數(shù)字排版并發(fā)明了 TeX 和 LaTeX 來做這件事的計算機(jī)科學(xué)家不一樣,Dijkstra 從不用計算機(jī)寫論文。他 認(rèn)為應(yīng)該不需要草稿和編輯就能寫出一篇文章,所以他通常在腦中把整篇文章構(gòu)思好才把文字落到紙上。在早期他用打字機(jī),后來他一直只使 用 Montblanc 的 Meisterstück 鋼筆。這在計算機(jī)學(xué)界是很有名的習(xí)慣,很多人都收到過 Dijkstra 用 Montblanc 寫的信。Montblanc 應(yīng)該請他做代言。

Dijkstra 通常會用鋼筆寫好一篇文章,然后復(fù)印一些在同事中小范圍散發(fā),而這些同事又會復(fù)印更多,發(fā)布到更廣的范圍。他一生中寫了 1300 多篇文章,他用自己姓名的首字母 EWD 給他們編號:EWD 1, EWD 2, … EWD 1318。在計算機(jī)科學(xué)中,這些文章被統(tǒng)稱為「EWD 報告」。他的算法和文章大都讓人感受到簡潔、經(jīng)濟(jì)、優(yōu)雅。他對簡潔的熱愛來自于早年母親的指導(dǎo)。他曾經(jīng)問他的母親數(shù)學(xué)是不是一個很難的學(xué)科,她回答說「如果你需要超過五行文字來證明什么,那你的方向多半錯了」。

最后,作為結(jié)語,送給大家一句 EWD 1213 里的名言:

如果十年以后,你以快而臟的方式做什么事的時候,能想象我在你的肩后看著,然后對自己說:「Dijkstra 不會希望這樣的。」那么對我來說,這就和永生一樣了。
— Edsger Wybe Dijkstra

====================================分割線================================
文章轉(zhuǎn)載自 開源中國社區(qū)[http://www.oschina.net]

總結(jié)

以上是生活随笔為你收集整理的你不知道的关于计算机大师 Dijkstra 的事情的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。