我经常看到有人声称编程语言的特性可以消除一整类错误。
例如,我看到声称:
强类型系统消除了由于使用类型不支持的特性而导致的错误类别。
自动内存管理消除了与为对象/结构分配正确内存量相关的错误类别。
强制变量初始化消除了空指针或空引用错误。
不可变数据结构消除了由于不了解更改可变状态的影响而导致的错误类别。
我并不是要找出上述主张是否正确,而是编制一份足够具体的此类主张清单,以供我研究和评估自己。
据称还有哪些其他特定功能可以消除一整类错误?
是否有一个通用的原则或理论来识别这样做的特征,或者识别这些特征的缺失?
(请注意,我不包括这些明显含糊或主观的主张,无论是否真实:
面向对象的编程提高了可重用性。
动态语言的编程速度更快。
有意义的空白使程序更干净。)