zoukankan      html  css  js  c++  java
  • 好书一起读(151):抽象和分层

    点评:抽象的分层与功能的重组想关联;

    对于单个事物的抽象和对于系统的抽象要区别对待;

    单个事物的抽象是信息过滤;是部分替代整体;

    系统的抽象是用整体隐藏局部;

    人类想解决问题,但问题复杂,脑力有限,所以使用抽象。也就是说,抽象是一种工具,这工具的用途是帮助人类以有限的脑力解决复杂的问题。

    人的思考能力有局限,大脑能同时处理的问题数量很少,但人面对的问题却可以无限复杂,为了解决复杂的问题,必须重视主干、舍弃细节,把一个复杂问题提炼为大脑能够容纳的有限个数的子问题,并给子问题取个名称以方便理解和沟通,这就是抽象。

    抽象是多层次的,越高层问题数量越少,粒度也越粗,越宏观,越抽象,而越低层则数量越大,粒度越细,越微观,越具体。在高层上思考问题,可以称为战略,在低层上思考问题,可以称为战术,在底层思考问题,可以称为技术。韩信这种带兵「多多益善」的指挥官,是跨层次人才,从技术到战术到战略样样擅长,是极难得的,所以叫「国士无双」。

    人类的活动,其本质是通过做出行为,让世界从一个状态变成另一个状态,这就是所谓的改造世界。为了改造世界,首先要认识世界,即了解世界当前的状态。这与计算机做的工作是完全一样的。抽象这种工具,或者用于对状态(数据)抽象,或者用于对行为(过程)抽象。对状态抽象,目的是认识世界,世界太复杂,我们只能根据具体需要,选择一个特定的抽象层次来获得认知。对行为抽象,目的是改造世界,面对的任务太复杂,我们也只能根据具体需要,选择一个特定的抽象层次来思考决策。

    抽象大大降低了问题的复杂度,其理论往往是普适的。但简化的代价就是丢失信息,普适的另一面就是不够具体、不能直接用来解决问题,需要一个「落地」的过程。例如兵法讲「正合奇胜」,这四个字是真理,而且极为普适,用到任何一个领域都能适用,但光会背这四个字显然一场仗都打不赢,还需要知道更下层的知识。林彪元帅打仗常指挥到师,从野战军司令的工作内容层次看,这算是很细致了,但从师长的层次看,他下的命令又是非常宏观的,怎样把命令变成具体的动作,需要师长及以下各级别指挥官的知识来填补。在程序设计里,这种由粗到细的任务细化,被称为自顶向下的设计(如果是从具体到抽象,就是自底向上了),从整体到部分,从概括到细节,从宏观到微观,在解决每个问题时,认知负担都较轻,只需要掌握本层和下一层的知识即可,这就是把过于复杂的问题拆分成一个个简单的问题,使人类的能力足够解决。在工程上,这也形成了分工和专注,所谓分工,就是不同问题交给不同人处理,所谓专注,就是每个人只负责一类问题,这就是高内聚低耦合的思想在社会运转中的应用,其效果是非常显著的,大大提高了生产率,这也是管理学上的经典案例。

    对事物的抽象,减轻了认知负担,简化了问题,其代价就是丢失了信息,抽象出的结果,必然是失真的——例如近期阿尔法狗用辉煌的战绩证明了人类的所谓棋感有其偏差之处,但只要这样做划算,就不能因噎废食。这正如经验和归纳得出的信息不能保真,但人总需要有个认识来帮助做事,有时候我们可以接受我们对世界的认识不那么的真,只要这认识带来的好处超过其失真的坏处,我们就愿意用它。

    这很功利主义,很重视实效,因为生产和生活本来就是实践的过程,考虑的是应然问题(HOWTO)而不只是实然问题(WHAT IS),重视的是利益、价值、方法、策略、效率、成本、收益这些词。常听有人说「你说得太抽象了,不实际」,其实抽象的目的本来就是解决实际问题,而且每个人每时每刻都在抽象——有谁生活中在原子层面考虑问题吗——只是不同人的抽象层次不同。如果高层次抽象不能落地,那固然是不能解决问题,还不如能解决问题的低层次抽象,但如果高层次抽象能落地,帮助解决问题,其解决问题的效果会远远好于只使用低层次抽象的方式。理论和实践要结合,不要只顾理论变成教条主义,也不要仇视理论变成经验主义,这两者都是毛同志早就批判过的。

    务虚和务实要结合起来。会抓脉络,才能提纲挈领,精通细节,才能掌上观文。高层次抽象和低层次抽象并不天然抵触,相反对任何一者的理解都有助于对另一者更好的理解。理解了高层次抽象,有助于在研究低层次抽象时有位置感,知道自己当前所处于问题的哪个局部。理解了低层次抽象,则有助于在进行高层次抽象思考时,理解底层原理,从而做出更好的思考和判断。

    高谈阔论、以空对空固然不好,但只在底层思考,也有蒙眼拉磨的风险。能上能下、多多益善是最好,但如果才具一般,能力只能胜任某层之内的工作,至少也该对其他各层略有了解,以知道自己所做的工作其意义为何,而不是解决了任务领到薪水就心满意足。毕竟,我们除了有某一岗位的职务,还有做为一个有血有肉的人的身份,我们有求知欲并渴望进步,因为只有进步能让人感到幸福,而进步,意味着对世界拥有更透彻的认知,这些认知,让我们充满喜悦。

    https://zhuanlan.zhihu.com/p/24887816

  • 相关阅读:
    myeclipse优化
    如何修改myeclipse的内存?eclipse.ini中各个参数的作用
    java日期处理
    拖放浮动效果——javascript
    4.什么时候加ing
    3.有些英语没有什么道理可讲的,不讲道理的习惯,必须要遵守
    数据库分页问题,跳页不正常问题解决办法
    谷歌地图计算两个坐标点的距离函数
    增加tomcat多实例 不忘初心
    ansible部署,规划 不忘初心
  • 原文地址:https://www.cnblogs.com/feng9exe/p/10670421.html
Copyright © 2011-2022 走看看