191.知识体系6
2017-03-18 本文已影响0人
科幻经典
抽象,是以命名的方式,划定了什么是它所包含的,什么不是。
使用合理的抽象让系统的复杂度大大降低,也是让代码变的清晰的最重要方法。
也就是说,抽象的性质包含了:
1 命名
2 划定包含范围
3 划定不包含范围
4 降低运算复杂度,使运算量降到可承受范围。
5 分层,上层架构恰好是底层架构的
有意义的混沌。而编程语言的包,也正是语言所形成的上层混沌。
6 防止重复,一再的实现同一功能。
或许有些人并不知道这些,但他们自发的在用了。也就是说,这些是大自然的规律,人会主动或被动的用到它。当然被动并没有主动的效果好。
而一个好的抽象,一定是灵活、方便交互的,类似flask。可以与若干软件包形成交互。
而如今软件抽象架构和大自然的区别在于,在架构本身子系统之间的联系,很多是没有意义的,甚至无法联系。
那些有意义的联系,通常是经过精心选择的,这会产生预定的效果,但抹杀了很多可能性。
要定义子系统之间的两两交互,也就是说,必须允许很多无意义的产出,这不是最有效的方式,但会有潜力生成强大的混沌。
允许代码进化,设定进化条件,朝着那个方向,人类的需求。
人的选择和大自然的进化,哪个会强一点呢?