继承:一个性能黑客的意外产物
2025-05-08
Simula语言发明继承并非为了代码复用或扩展性,而是为了解决其简单垃圾回收机制和入侵式列表的效率问题。Simula的垃圾回收机制过于简陋,无法处理指针指向栈变量的情况。为了避免程序崩溃,Simula禁止了多种参数传递方式,限制了语言表达能力。同时,为了高效使用入侵式列表,Simula发明了“前缀”(prefixing),也就是继承机制,使得对象可以直接包含列表节点,避免了额外内存分配。因此,继承最初只是一个性能优化手段,而非面向对象编程的基石。
开发
Simula