电脑知识
孩子学不懂编程怎么办(孩子 学编程)
2023-04-12 10:48

如果没有继承,各种界面开发库怎么实现并使用,感觉你不懂编程。

一星菩提

面向对象编程(OOP)技术发展到现在,人们发现,OOP最大的败笔是“继承”。 “继承”是早期科学家拍脑袋想出来的方案,本质上也是受当时硬件能力和编译技术所限,如今内存白菜价,人类对编译技术有深入理解之后,新兴语言基本上都摒弃了“继承”。 “继承”导致强耦合(后来通过设计模式的策略模式解决),并且严重制约了多态能力(通过面向接口编程解决)。 早期软件复杂度不是那么高,所以科学家们出于直觉地进行了“在数据上添加操作(函数地址),并复用这个操作”的设计。 后来随着软件规模的增长,才意识到继承带来的强耦合,转而使用组合,编程思想也转变为“为某一个struct实现某一个interface”而不是“用class来表示一个有某些操作的数据”。 最强多态是「鸭子类型」,但鸭子类型无法在编译时检查以优化性能,所以新兴语言普遍采用了protocol/trait等技术来实现接近鸭子类型的灵活度,并保留了编译型语言的性能。 新兴语言的基本组成都是 immutable struct + protocol/trait 了,相当于 没有继承的不可变的class + 独立在数据之外的interface的implements。 编程语言是在虚拟世界里演化发展,受物理约束比较小,所以能快速发现一个机制的不足。 中华几千年的文化太强调传承,在小系统中,这不算什么太问题。 但是一旦系统的规模扩大,人们就会觉得继承带来的强耦合性足以压制人的创造性。 中华文明还是要以组合为主,赵武灵王的胡服骑射是一种组合,不是继承。 这反映了先秦时期开放包容的思想,但是到封建王朝晚期,很多人主张“祖宗之法不可变”,阻止了中国走向工业化。 中华文化的未来的发展方向是immutable struct + protocol/trait。 不可变的结构是”共同富裕“,protocol/trait是与时俱进的法制建设,博采众家之长。

发表评论
0评