我正在閱讀在的編碼。關於Dijkstra的論文
我在Donald Knuth的採訪中遇到了這段話。
Seibel:看起來很多我談過的人都可以直接訪問機器。然而Dijkstra有一篇論文我相信你很熟悉,他基本上說我們不應該讓計算機科學的學生在培訓的頭幾年裏碰到一臺機器;他們應該花費所有的時間來操縱符號。
我想鏈接到那篇論文。那是哪一紙? (他寫了太多:-)
我正在閱讀在的編碼。關於Dijkstra的論文
我在Donald Knuth的採訪中遇到了這段話。
Seibel:看起來很多我談過的人都可以直接訪問機器。然而Dijkstra有一篇論文我相信你很熟悉,他基本上說我們不應該讓計算機科學的學生在培訓的頭幾年裏碰到一臺機器;他們應該花費所有的時間來操縱符號。
我想鏈接到那篇論文。那是哪一紙? (他寫了太多:-)
也許this one?
摘錄,從接近尾聲:
我們分手之前,我想請你考慮在編程課程對得住計算的激進新奇的方式如下。
一方面,我們教授什麼看起來像謂詞演算,但我們做的與哲學家非常不同。爲了訓練新手程序員操縱未解釋的公式,我們更多地將它教授爲布爾代數,讓學生熟悉邏輯連接詞的所有代數屬性。爲了進一步斷開直覺鏈接,我們將布爾域的值{true,false}重命名爲{black,white}。另一方面,我們教一個簡單,乾淨,命令式的編程語言,以跳過和多重賦值作爲基本語句,帶有局部變量的塊結構,分號作爲語句組合的操作符,是一個不錯的選擇構建一個很好的重複,如果需要,還可以調用過程。爲此,我們添加最少的數據類型,比如說布爾值,整數,字符和字符串。關鍵是,無論我們介紹什麼,相應的語義都是由隨之而來的證明規則來定義的。
從一開始,在整個過程中,我們強調程序員的任務不僅僅是寫一個程序,而是他的主要任務是給出一個正式的證據,證明他提出的程序符合同樣正式的程序功能規格。在設計證明和程序的同時,學生有充足的機會通過謂詞演算來完善他的操縱敏捷性。最後,爲了推動這種入門式編程課程主要是正式數學課程的信息,我們看到,有關的編程語言在校園中尚未實施,因此學生不受測試其程序的誘惑力的影響。這就結束了我爲新生介紹編程課程的建議草圖。
我發現Dijkstra的「殘忍」講座的manuscript。
幹得好老兄!歡迎來到stackoverflow。 :) – 2011-02-11 18:30:09