首页 > > > 如果null很糟糕,那为什么现代编程语言还要实现它?

“我很确定 Java 和 C# 语言的设计者是知道 null 引用存在的一些问题。”
“实现一个可选类型并不比 null 引用复杂多少。”
我将1965年发明的 null 称作我百万美元的错误。那个时候,我正在设计第一个面向对象语言(ALGOLW)中的引用的综合类型系统。我的目标是确保所有引用的使用都绝对安全,由编译器自动执行检查确保安全。但我无法抵挡放入空引用的诱惑,仅仅因为这个很容易实现。这个决定导致了不计其数的错误、漏洞和系统崩溃,在其后的四十年可能已经造成了百万美元的损失。
编程语言整体上比曾经复杂得多:面向对象、集成,还有其他一些特性都还没有从一个连贯、基于科学原理或正确性理论的角度认真考虑过。我最初的要求,也是我作为科学家毕生所追求的,就是使用正确性理论来收敛一个好的编程语言的设计,这样才不会为它的使用者留下坑,程序的不同组件才能清晰正确的对应到它规格说明中的部分,这样才能进行合理正确的思考。包括编译器等一些工具,也必须要基于写出正确代码的理论来设计。
很可惜 Cloneable 失效了,但确实就这样发生了。由于市场窗口即将关闭,原始 Java API 的开发时间非常短。最开始的 Java 团队做得非常出色,但是并不是所有的 API 都是完美的。 Cloneable 是一个弱点,我觉得大家必须意识到它的局限性。 – Josh Bloch (Java 大牛)

原文作者:;如有侵权,请联系管理员删除。