电脑知识
class少儿编程简介(classroom编程)
2023-04-12 10:10

题主对oop编程的理解走入了误区,耦合是不同class之间的事,继承出现耦合问题,说明你对class的分割不合理,多半是勉强拼凑。

模型能力差抽象能力差的,往往会出现这类问题

面向对象编程(OOP)技术发展到现在,人们发现,OOP最大的败笔是“继承”。

“继承”是早期科学家拍脑袋想出来的方案,本质上也是受当时硬件能力和编译技术所限,如今内存白菜价,人类对编译技术有深入理解之后,新兴语言基本上都摒弃了“继承”。

“继承”导致强耦合(后来通过设计模式的策略模式解决),并且严重制约了多态能力(通过面向接口编程解决)。

早期软件复杂度不是那么高,所以科学家们出于直觉地进行了“在数据上添加操作(函数地址),并复用这个操作”的设计。

后来随着软件规模的增长,才意识到继承带来的强耦合,转而使用组合,编程思想也转变为“为某一个struct实现某一个interface”而不是“用class来表示一个有某些操作的数据”。

最强多态是「鸭子类型」,但鸭子类型无法在编译时检查以优化性能,所以新兴语言普遍采用了protocol/trait等技术来实现接近鸭子类型的灵活度,并保留了编译型语言的性能。

新兴语言的基本组成都是 immutable struct + protocol/trait 了,相当于 没有继承的不可变的class + 独立在数据之外的interface的implements。

编程语言是在虚拟世界里演化发展,受物理约束比较小,所以能快速发现一个机制的不足。

中华几千年的文化太强调传承,在小系统中,这不算什么太问题。

但是一旦系统的规模扩大,人们就会觉得继承带来的强耦合性足以压制人的创造性。

中华文明还是要以组合为主,赵武灵王的胡服骑射是一种组合,不是继承。

这反映了先秦时期开放包容的思想,但是到封建王朝晚期,很多人主张“祖宗之法不可变”,阻止了中国走向工业化。

中华文化的未来的发展方向是immutable struct + protocol/trait。

不可变的结构是”共同富裕“,protocol/trait是与时俱进的法制建设,博采众家之长。

你干脆把class 翻译成班级算了

发表评论
0评