Was It Really a Billion Dollar Mistake?
4 months ago
- #programming
- #memory-management
- #language-design
- 托尼·霍尔创造了‘十亿美元错误’这一术语,用来描述他在1965年发明的空引用,后来他因空引用导致的错误和系统崩溃对此深感懊悔。
- 空指针只是无效内存地址的一种类型,相比‘释放后使用’或错误的指针运算等其他内存问题,运行时更容易捕获空指针错误。
- 文章指出,移除空指针需要在语言设计上做出权衡,例如要求显式初始化或使内存管理变得更加复杂。
- 系统级编程语言Odin保留了nil指针,以保持类似C语言的风格,并避免显式初始化带来的架构开销。
- 作者批评了编程中的‘个体元素思维’,即单独管理每个元素的生命周期,认为这会导致低效且容易出错的代码。
- 文章提倡‘分组元素思维’,将元素集合作为一个整体管理,从而减少复杂的所有权语义需求并提升性能。
- 像Odin这样的语言设计决策,反映了开发者有意引导程序员采用更好的架构实践,而非强制在编译时处理所有可能的错误。