為什么計算機科學界最高榮譽圖靈獎獲得者戴克斯特拉先生如此痛恨BASIC語言

jopen 11年前發布 | 6K 次閱讀 黑客

為什么計算機科學界最高榮譽圖靈獎獲得者戴克斯特拉先生如此痛恨BASIC語言

戴克斯特拉先生是一位經常會被人們拿來引述的著名計算機科學家,人們談論最多的是那些被他挑破的讓人難以接受的事實真相。經常被人反復提到的一個就是他對BASIC語言的痛斥,但往往人們談論這件事情時都忘了提到當時的背景——

對于一個之前接觸過BASIC語言的學生,你基本上不可能教會他如何正確的編程:因為作為一個程序員苗子,他們已經腦殘,無可救藥。

</blockquote>

戴克斯特拉先生的這番言論是來告訴大家“如何看出事實背后可能是對你有害的真相”——對有些事實人們廣為接受,所有沒有人思考它們,或不屑一顧,或 避而不談。戴克斯特拉先生對于這個問題給出的答案被證明極具轟動性。他用這種方式非常有效的挑起了爭論,時至今日我們仍在討論。

人們經常會忘記,在1975年,那時的編程跟我們如今有很大的不同。戴克斯特拉先生斥責的Dartmouth Basic——這是一種享有榮耀的匯編語言,它不是我們如今使用的BASIC語言——

  • 變量名稱只有一個字符,或外加一個數字
  • 盡管有For語法可用,但循環,break,以及其它邏輯都用無約束的goto語句實現。
  • 空格在表達式間可有可無。
  • 有子程序。子程序通過行號調用或通過return轉向。
  • 所有的參數都通過全局變量來傳遞。
  • 26個用戶自定義函數可以排列成FNA—FNZ,里面可以有一行代碼。
  • if語句被限制在一行上。
  • </ul>

    這樣的限制我可以繼續列下去,但事實非常明顯:你很難用它寫出可讀性好,易于理解的程序。我們如今想當然應該有的一些語言特征它都沒有。這種狀況一直等到BASIC之后的語言發展起來才結束,成為我們如今熟知的編程語言。

    當我們在學習第一種編程語言時,你可能會一直在用其它語言風格進行編程(“你可以用任何語言寫出FORTRAN風格代碼”)。程序員的成長過程中最難的不是如何獲取新知識,而是如何拋棄陳腐的舊習慣。

    學會如何小心的堆起一灘爛泥,這對你寫出結構化的程序不會帶來任何幫助。即使今日,你也能很容易的發現有些人被教育了basic的現代變體——盡管他們對這種basic老祖先知之甚少。后繼者對此有很大責任。

    編程很難。荒誕的語言特征讓它變得更難,這無助于初學者,同樣也無助于專家。戴克斯特拉痛恨basic,其實你也應該痛恨它。殘酷的是我們只記住了戴克斯特拉先生尖銳的批評,但卻忘了他對計算機編程卓著的貢獻——這完全是另外一個話題了。

    人物簡介

    為什么計算機科學界最高榮譽圖靈獎獲得者戴克斯特拉先生如此痛恨BASIC語言

    艾茲赫爾·戴克斯特拉(Edsger Wybe Dijkstra,1930年5月11日-2002年8月6日)曾在1972年獲得過素有計算機科學界的諾貝爾獎之稱的圖靈獎,之后,他還獲得過1974 年AFIPS Harry Goode Memorial Award、1989年ACM SIGCSE計算機科學教育教學杰出貢獻獎。2002年,在他去世前不久,戴克斯特拉獲得了ACM PODC(分布式計算原理)最具影響力論文獎,以表彰他在分布式領域中關于程序計算自穩定的貢獻。為了紀念他,這個每年一度獎項也在此后被更名為 “Dijkstra獎”。他曾經提出“GOTO有害論”信號量和PV原語,解決了有趣的“哲學家就餐問題”。

    </fieldset>
    [英文原文: Why did Dijkstra Hate Basic? ]

    來自: 外刊IT評論 http://www.aqee.net/

     本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
     轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
     本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!