抽象和离散

今天看了林欣浩老师的两篇文章,结合生活和编程做个总结。

理性和感性 && 抽象和离散

一、古代猿人如何计数?

一开始比划着预估物体数量,这就代表了感性思维。但是这样计数不精确,不能量化。此时需要用理性思维解决精确度的问题,于是有了“离散”的概念,可以精确到“一个一个”,这种计数方式代表了理性思维。

众所周知,计算机采用的是二进制,二进制只有0,1两个取值。可以说,计算机硬件计数方式也是离散的,比如全加器。所以计算机相关专业的课程中包含了一门特别的数学课——离散数学。

接下来进一步思考,能够采用离散化的方法计数的基础是什么?即我们要达成什么共识才能如此计数?

看这样一到数学题:“小明原本有一块钱硬币,小明妈妈再给了他一块钱硬币,问此时小明总共有几块钱?”

呵呵一笑,秒算,答案是两块钱。我们大脑中的计算过程大致是“1 + 1 = 2”。“1 + 1 = 2”的前提条件是什么呢?这两枚硬币在你心中是“一样的”,也就是说,你不关心这两枚硬币的光泽、磨损程度等属性,如果将硬币看作是一个对象的话,你只关心“数量”这个属性。事实上,这个过程可以理解为“抽象”。只关心你想关心的,这就是“共识”。

在计算机科学中,抽象无处不在。为何要抽象?抽象是为了屏蔽复杂的细节,为使用者提供便利,使用者只需关心自身所需关心的。比如微软提出的硬件抽象层(Hardware Abstraction Layer, HAL),该层属于操作系统内核和硬件的接口层。接口层?是不是很熟悉?在面向对象设计思想中,我们都是面向接口编程的,这样也有利于前后端分离。

抽象和接口经常成对出现。那么抽象的好处是什么呢?解耦。

二、“等号=”里的数学思维

在将两个事物划等号之前,我们是做过“比较”的。比较这个概念是理性思维的基础。等号是比较的结果,这个判断的过程就是抽象。

一旦你将两个事物化了等号,就间接表明了你判断的依据,即你看重的东西。

不仅仅是数学,生活中我们也经常“划等号”。父母认为“好孩子”等价于“好好学习”;领导认为“好员工”等价于“能解决实际问题”。理解了等号背后更深层次的含义,有助于我们理解别人“划等号”时隐藏的信息。

比如有些年纪稍大一点的长辈就很难理解年轻人花好几千块钱买一个手机,因为在他们看来手机只是通话工具而已,而年轻人更看重的是手机的智能性等属性。双方对手机“划等号”的结果不一致,导致了矛盾的产生。

因此,当我们和别人交流的时候,可以关注那些“划等号”的信息,以便抓住对方的关注点,这样有利于提高沟通效率,以免出现“对牛弹琴”。

原文链接:数学思维之抽象与离散

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Danny的专栏

Java之旅——起航篇

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/huyuyang6688/article/...

11610
来自专栏诸葛青云的专栏

要想精通C语言,必须先学习汇编吗?

编程语言里面很少有人直接说出精通两个字,特别是一些入行好多年的程序员,从语法来讲C语言相对来讲入门还是比较容易,在高级语言还没有完全展开的年代,C语言算入门比较...

21500
来自专栏Java技术栈

实现高并发更轻松!这个编程语言竟然超过了Java...

曾任猎豹高级工程师、搜狐社交产品中心服务端负责人,现任区块链创业公司 CTO。文章中,他会详细介绍自己接触Golang的经历,以及Golang语言的优势。

11830
来自专栏Albert陈凯

函数式编程很难,这正是你要学习它的原因

英文原文:Functional Programming Is Hard,That's Why It's Good   很奇怪不是,很少有人每天都使用函数...

29140
来自专栏Java架构

资深架构师谈Java——最牛逼的编程语言Java超越了所有咒骂它的“动态语言”Java的“继承人”没能超越它Java没有特别讨厌的地方结论程序员进阶方法

23140
来自专栏企鹅号快讯

给JAVA,说句公道话

常常总有人问我,在现有的语言里面,有什么好的推荐?我说:“Java。” 他们很惊讶:“什么?Java!” 所以我现在来解释一下。 Java超越了所有咒骂它的“动...

21850
来自专栏本立2道生

重新思考面向过程与面向对象

面向过程的思考方式是,要采购原材料、生产产品、卖产品、管理入账出账,因此需要生产人员、销售人员、财务等,将他们串起来,公司就运转起来了。

11110
来自专栏IT派

Node.js 用户量会不会在一年内超越 Java?

在最近 The New Stack 的采访 中,Node.js 基金会的社区组织者 Mikeal Rogers 表示 Node.js 用户量将在一年内超越 Ja...

38360
来自专栏ThoughtWorks

TW洞见 | 张逸:快速了解Scala技术栈

我无可救药地成为了Scala的超级粉丝。在我使用Scala开发项目以及编写框架后,它就仿佛凝聚成为一个巨大的黑洞,吸引力使我不得不飞向它,以至于开始背离Jav...

33560
来自专栏程序员宝库

每个程序员都应该收藏的算法复杂度速查表

这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时...

9720

扫码关注云+社区

领取腾讯云代金券