我职业生涯中花费了相当大的一部分时间去寻找并修复内存损坏问题,…
…我职业生涯中花费了相当大的一部分时间去寻找并修复内存损坏问题、竞态条件和其他未定义行为在非常大的代码库中。是的,我们在 Clang+LLVM 工具链方面取得了巨大的进步,但编写有错误的 C/C++ 代码仍然非常容易(这一点我在论文中没有看到)。从维护、配置和计算的角度来看,充分利用验证工具的成本很高,而且它们的正确性评估不如高级类型系统。通过高级类型系统来防止这类错误似乎是一种更好的方法来降低总体拥有成本,因为:1. 一些(修复成本高昂)的错误通过将系统行为编码到类型系统中被消除了。2. 需要各种 CI 运行(如 Address Sanitizer、Thread Sanitizer、Undefined Behavior sanitizer 等)以及它们相关的覆盖率测试用例的需求大大减少,因为这些问题是通过语言定义而被消除的。…
源讨论高级类型系统的可用性:以 Rust 为例原帖 162 条评论 · 导入时统计