計算機大師Dijkstra談Haskell和Java

這裏寫圖片描述

2001年,出生於荷蘭的計算機大師、 圖靈獎獲得者Edsger W. Dijkstra給德州大學預算委員會寫信,

力勸不要將計算機入門課程改爲Java。這封信的PDF版可以從這裏下載。不幸的是,學校最終還是用
Java課程替換了Haskell。相關聯的,麻省理工的計算機程序結構和分析課程(6.01)中的Scheme語言也被Python語言替換掉。

致預算委員會成員

我寫這封信給你們是因爲有謠言說,大學教學中的計算機入門課程將不再使用函數式編程語言Haskell,而是使用命令式語言Java,鑑於此,我認爲預算員會有責任去阻止這項錯誤的決定。
你們知道,這不是小事。其它州的同行經常好奇於我如何能在德州奧斯汀這樣的地方生存下來,他們都以爲德州頑固的保守主義必然造就了同樣頑固的平庸。我的回答通常是,“不要擔心,教育系統還是一個比較開明的地方,例如在計算機入門課程上,我們教新生Haskell語言”;他們的反應起初通常都是r懷疑,然後是嫉妒——大多是因爲他們的大學課程無法再從Pascal語言向C++或Java這樣的語言的轉變中恢復回來。
我偏愛函數式編程的一個非常現實的原因是,對於新生的課程,大多數學生都已經對命令式編程有一定的熟悉。讓他們面對新奇的函數式編程,能立即傳達一個信息:編程比他們想象的要豐富的多。並且,他們很快就會觀察到,對於他們用高中時學到的編程知識很難表達或無法表達的問題,函數式編程能提供優雅的解決方案。
而選擇函數式編程的一個最根本的原因是,相比起命令式編程語言,它更容易當成數學對象來使用,在教學中你可以用它精確的解釋程序是什麼。另外一個優勢是函數式編程的“延遲執行(lazy evaluation)”,它提供了一個環境來防止操作性的推理12。
最後,在Haskell語言跟Java的具體方面對比中,儘管Haskell不完美,但仍然比Java好幾個數量級,Java就是一個大雜燴(它是通過大範圍的廣告和銷售員誇張的宣傳才達到它的商業接受)。總得來說,這事非常的糟糕,業界把有目共睹的低劣的設計當作了“事實”標準。我個人的認爲,
不僅僅是小提琴能塑造小提琴家,我們全都被我們使用的工具塑造,而在編程語言方面,影響是潛移默化的:它們塑造我們思考的習慣。這使得第一種編程語言的選擇非常的重要。我們應該把入門課程當成一種工具來創造一種爲計算機科學教學服務的文化,而不是去強迫丟掉過去的那些知識(如果非要這樣,那我們的過去算是什麼,成了永遠的遺物)。這種選擇擔負着對我們的大學生的沉重責任,這也就是爲什麼這種事不能讓某個什麼主席來決定,而是應該由預算委員會來決定。這種事情不能讓什麼公務員或政客辦理,這裏需要有遠見的政治家。
Austin, 12 April 2001
Edsger W. Dijkstra

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章