後悔發明Null:堪稱CS史上最嚴重錯誤,至少造成10億美金損失

Null引用一直是個壞主意,從來沒發揮過什麼正面作用。

2020年是ALGOL 60的60週年誕辰。ALGOL 60讓結構化編程真正落地,併爲Pascal、C語言、B語言和Simula的出現打下了堅實基礎,可以稱之爲是編程語言們的“祖父”。

Null的產生是由於1965年的一個偶然事件。

託尼·霍爾(Tony Hoare)是快速排序算法的創造者,也是圖靈獎(計算機領域的諾貝爾獎)的獲得者。他把 Null 添加到了ALGOL語言中,因爲它看起來很實用而且容易實現。但幾十年後,他後悔了。

Tony表示,1965年把Null引用加進ALGOL W時的想法非常簡單,“就是因爲這很容易實現。”

但如今再次談到當初的決定時,他表示這是個價值十億美元的大麻煩:

“ 我稱之爲我的十億美元錯誤……當時,我正在設計第一個全面的類型系統,用於面嚮對象語言的引用。我的目標是確保所有對引用的使用都是絕對安全的,由編譯器自動執行檢查。但是我無法拒絕定義一個Null引用的誘惑,因爲它實在太容易實現了。這導致了無法計數的錯誤、漏洞和系統崩潰。在過去的四十年裏,這些問題可能已經造成了十億美元的損失。”

編程語言的老祖宗誕辰60週年

在20世紀50年代,大部分代碼是機器或彙編代碼,而且每一臺電腦都有自己的獨特之處。第一代編程語言被稱爲“Autocode”,它們的存在是爲了將一些問題(比如方程)編碼並翻譯成機器碼,但不具備現今編程語言的大部分功能。更糟糕的是,它們的特性也不盡相同,導致系統的切換變得非常麻煩。當時國際信息處理聯合會(IFIP)有一大堆委員會成員專門研究與計算相關的標準和問題。

原文鏈接:【https://www.infoq.cn/article/MRBBHeP0HNax04hgkPHQ】。未經作者許可,禁止轉載。

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