今天看了林欣浩老师的两篇文章,结合生活和编程做个总结。
一开始比划着预估物体数量,这就代表了感性思维。但是这样计数不精确,不能量化。此时需要用理性思维解决精确度的问题,于是有了“离散”的概念,可以精确到“一个一个”,这种计数方式代表了理性思维。
众所周知,计算机采用的是二进制,二进制只有0,1两个取值。可以说,计算机硬件计数方式也是离散的,比如全加器。所以计算机相关专业的课程中包含了一门特别的数学课——离散数学。
接下来进一步思考,能够采用离散化的方法计数的基础是什么?即我们要达成什么共识才能如此计数?
看这样一到数学题:“小明原本有一块钱硬币,小明妈妈再给了他一块钱硬币,问此时小明总共有几块钱?”
呵呵一笑,秒算,答案是两块钱。我们大脑中的计算过程大致是“1 + 1 = 2”。“1 + 1 = 2”的前提条件是什么呢?这两枚硬币在你心中是“一样的”,也就是说,你不关心这两枚硬币的光泽、磨损程度等属性,如果将硬币看作是一个对象的话,你只关心“数量”这个属性。事实上,这个过程可以理解为“抽象”。只关心你想关心的,这就是“共识”。
在计算机科学中,抽象无处不在。为何要抽象?抽象是为了屏蔽复杂的细节,为使用者提供便利,使用者只需关心自身所需关心的。比如微软提出的硬件抽象层(Hardware Abstraction Layer, HAL),该层属于操作系统内核和硬件的接口层。接口层?是不是很熟悉?在面向对象设计思想中,我们都是面向接口编程的,这样也有利于前后端分离。
抽象和接口经常成对出现。那么抽象的好处是什么呢?解耦。
在将两个事物划等号之前,我们是做过“比较”的。比较这个概念是理性思维的基础。等号是比较的结果,这个判断的过程就是抽象。
一旦你将两个事物化了等号,就间接表明了你判断的依据,即你看重的东西。
不仅仅是数学,生活中我们也经常“划等号”。父母认为“好孩子”等价于“好好学习”;领导认为“好员工”等价于“能解决实际问题”。理解了等号背后更深层次的含义,有助于我们理解别人“划等号”时隐藏的信息。
比如有些年纪稍大一点的长辈就很难理解年轻人花好几千块钱买一个手机,因为在他们看来手机只是通话工具而已,而年轻人更看重的是手机的智能性等属性。双方对手机“划等号”的结果不一致,导致了矛盾的产生。
因此,当我们和别人交流的时候,可以关注那些“划等号”的信息,以便抓住对方的关注点,这样有利于提高沟通效率,以免出现“对牛弹琴”。