本文转载自知乎:https://zhuanlan.zhihu.com/p/31799179
因为觉得写得特别好,自己收藏了,也想在这里分享给大家,同时便于日后的学习,如果看到的朋友觉得也很棒的话,请打开原文链接给原作者点个赞。

容易被误解的计算思维

2006年,卡内基·梅隆大学周以真教授首次系统性地定义了计算思维。这一年,她在美国计算机权威期刊《Communications of the ACM》上发表了题为《Computational Thinking》的论文,由此开启了计算思维大众化的全新历程。

在此之前,“计算思维”在非计算机领域的应用多集中在科研学术圈,如计算化学、计算生物学、计算决策学等。像我这样的普罗大众真正开始了解“计算思维”的价值是在《Computational Thinking》发表之后(的10年)。今天,计算思维成了世界公认的普适思维方式,和理论思维、实验思维一样,任何人在解决任何问题时都可以运用。

计算思维对每个人都意义重大,但却非常容易被误解。有人望文生义,以为计算思维就是关于数学的学问;有人片面理解,以为学了编程就懂了计算思维;有人非要攀高枝,连学个Word、Exel、PPT都要说培养了计算思维。

计算思维被误解成这样,小编决心为它正名,带大家好好认识下计算思维。

计算思维是什么,不是什么
计算思维是什么呢?

在《Computational Thinking》这篇论文中,周以真教授用“硬科学”的术语描述了计算思维:计算思维是运用计算机科学的基本理念,进行问题求解,系统设计以及理解人类行为。也就是说,计算思维是一种解决问题的思考方式,而不是具体的学科知识,这种思考方式要运用计算机科学的基本理念,而且用途挺广的。

想要更快更好的理解计算思维,先来看看周以真教授对计算思维的几个清晰论断。

1 计算机思维是研究计算的。
2 是概念化,不是编程。
3 是基础技能,不是死记硬背的技能。
4 是人的思考方式,不是计算机的思考方式。
5 是数学思维、工程思维的补充和结合。
6 是想法,不是人造产品。

理解了上面6句话,就能在很大程度上减少对计算思维的误解了。

把编程当作计算思维是对计算思维的常见误解之一,甚至一些学计算机专业出身的人也会有类似的观点,其实不然。计算思维是一种概念化的思考方式,而编程则是一种行为,虽然编程的过程中经常会用到计算思维,但计算思维绝不是编程。把信息素养当作计算思维也是对计算思维的常见误解之一,其实计算思维和信息素养完全不同。信息素养注重的是培养人们对信息进行有效利用的方式方法,重点在于利用信息工具和信息,比如Excel、录音机、传感器、QQ的使用,从互联网上找到自己想要的信息等。而计算思维则是研究计算的,研究一个问题中哪些可以计算,怎样进行计算。


计算思维不是一门孤立的学问,也不是一门学科知识,它源于计算机科学,又和数学思维、工程思维有非常紧密的关系。说它和数学思维相关,是因为用计算思维解决问题时,需要将问题抽象为可计算的数学问题,例如比较罗马帝国的崛起和蒙古人的扩张,需要选择适当的数学模型来对国力进行量化计算。在运用计算思维设计大型复杂系统时,需要考虑效率、可靠性、自动化等问题,这些都是工程思维中非常重要的东西。

计算思维是每个人在日常生活中都可以运用的一种思考方式。没错,每个人都可以运用,而且可以用在几乎任何地方。出行路线规划、理财投资选择、科学研究分析、天气预报预测,不论你试图解决什么问题,运用计算思维都能帮你化繁为简,四两拨千斤。

理解计算思维,首先要理解计算
理解计算思维的前提是理解计算,因为计算思维本质上还是研究计算的,研究在解决问题过程中,哪些是可计算的,以及如何计算。

通常我们理解的计算是算术运算,如“1+1=2”,,但运算其实有很多种类,如集合运算、逻辑运算、条件运算等等。集合运算如 “ ∁U(A∩B)=(∁UA)∪(∁UB)”,这里面就没有具体的数值运算了,而是用代表集合的字母进行运算;又比如逻辑运算“1∧0=0”,这个运算里有数值“0”和1,但意义完全不同,这里的“1”代表的是“真”—即命题为真,“0”代表的是“假”—即命题为假,通过用数字“0”和“1”来代换命题的真假,用“∧”来代换逻辑语言里的“并且”,逻辑判断过程也能通过计算来实现。

在上面这三类运算中,“1和2”、“ A、B” “1和0”是计算对象,是用特定符号代表一定的含义(可能是数、集合、命题真假等等);“+”、“∁U、∩、U”和“∧”是运算符,也就是运算规则(可能是加减乘除、可能是求并/补集、可能是判断并且/或者的复合命题)。如果把计算对象用特定的符号串表示,计算的实质就是将已知的特定的符号串,按照预定的规则,一步一步地改变符号串,经过有限步骤,最终得到一个满足预定条件的符号串的过程。

当我们跳出算术运算的局限,理解了计算的本质后,**就会发现原来好多看似不可计算的东西都能变得可计算,**也就很容易理解计算思维的普适性了。因为经过一定的抽象,我们对很多问题的理解都能用特定的数学语言来描述,接下来,当我们用特定的数学语言去描述解决过程的时候,就是在用计算化的方式来求解了。

计算思维里的人机分工

当我们把一个问题的求解操作变的可计算化后,我们是要靠人力去进行运算吗?NO!运用计算思维就是为了把人从大量的机械的运算中解脱出来,让计算机去做这些事。


在用计算思维解决问题时,**人负责把实际问题转化为可计算问题,并设计算法让计算机去执行,计算机负责具体的运算任务,**这就是计算思维里的人机分工。

人机分工能大幅提高问题处理的效率,减少出错率,特别是在处理情况复杂,运算量大的问题时。比如出行路线规划,在没有导航软件的时候,我们想要规划从A点到B点的最近的路线,可能要花费不少功夫,往往是我们根据经验进行判断,并不精确,很难有足够的时间和精力去寻找最优解。


当我们用电子地图来表示实际地理情况,用坐标点来表示实际位置时,最短路线的问题就转化为比较地图上A点到B点的各种线段组合的长度问题。从输入起点和目的地到导航软件给出导航路线不到半秒的时间里,后台服务器已经进行了高达千万甚至上亿次的运算,这种效率高出人类N个数量级。

计算思维里的2A

Abstraction (抽象)和Automation(自动化)是计算思维的两大核心特征。

想要理解抽象和自动化之于计算思维的重要性,我们先来看下运用计算思维进行问题求解的关键路径:

<1>把实际问题抽象为数学问题,并建模
将人对问题的理解用数学语言描述出来
<2>进行映射,把数学模型中的变量等用特定的符号代替
用符号一一对应数学模型中的变量和规则等
<3>通过编程把解决问题的逻辑分析过程写成算法
把解题思路变成计算机指令,也就是算法
<4>执行算法,进行求解
计算机根据算法,一步步完成相应指令,求出结果

建立数学模型的过程就是理解问题的过程,并且要把你对问题的理解用数学语言描述出来。这很关键,数学模型的好坏意味着你对问题的理解程度够不够深,而且数学模型还说明了在这个问题中,哪些东西可以计算以及如何进行计算,这可以说是计算思维里最最核心的东西了。这个关键过程需要的核心能力就是抽象能力以及一定的数学基础。

数学建模只是可计算化的第一步,为了让计算机帮我们去求解,我们还需要虚拟的符号来代替的数学模型里的每个变量和运算规则,这个过程就是映射啦!

完成映射,我们就能把解题思路(注意,是解题思路,不是数学模型)用程序语言完整地告诉计算机啦,这个过程就是具体的编程写算法的过程啦!这一步需要较强的编程能力,但编程能力的核心之一也是抽象思维能力。对于编程能力不够强的人来说,映射还有编程的过程可以交给擅长编程的人来做。


关键路径的前3步都是人来完成的,最后一步执行算法进行运算是机器自动完成的,体现了计算思维的自动化的特点。

在整个过程中,抽象是方法,是手段,贯穿整个过程的每个环节。自动化是最终目标,让机器去做计算的工作,把人脑解放出来,中间目标是实现问题的可计算化,体现在成果上就是数学模型、映射、还有算法。

**本文转载自知乎:https://zhuanlan.zhihu.com/p/31799179

何谓计算机思维(转载)相关推荐

  1. 即使不学编程,你也要了解计算机思维

    看点 计算机已渗入到我们生活的各个方面,生长于互联网时代的一代甚至被称作"数字原住民".对他们而言,会使用计算机已是基本生存技能,了解计算机运作背后的逻辑,也就是计算机思维也变得非 ...

  2. 对计算机的分析,对计算机思维的逻辑分析(范文).doc

    对计算机思维的逻辑分析(范文) 第 PAGE \* Arabic 1 页第 PAGE \* Arabic 1 页 对计算机思维的逻辑分析 " 计算机思维",指的是"计算机 ...

  3. 计算机思维与数学思维的本质区别

    计算机思维和数学思维,都包括了抽象和逻辑. 数学的抽象,在于剥离具体.数学研究从公理出发,可以变成纯思维的活动,和具体的的现实脱离关系.数学上的人为"定义",就是为了尽可能给出范围 ...

  4. 用计算机软件绘制思维导图和手绘思维导图,手绘思维导图与计算机思维导图的对比...

    计算机思维导图有许多功能上的优势,而且能够快速复制有机思维的流动性,但是手绘思维导图所具有的优势是一些计算机思维导图所没有具备的. 如果没有计算机可供使用,如果时间有限,如果会议的思想的顺序不明显,那 ...

  5. 计算机思维与应用论文,计算机的思维与计算机应用关系分析

    摘要:计算机思维并不属于理论,也不是某种方法论,而是一种思维习惯和模式.尽管我们可以总结出计算机思维的一些特征,明确何为计算机思维,但这种思维的培养并不是一朝一夕所能完成的,需要在持续的计算机应用中得 ...

  6. 计算机思维导图初中,计算机思维导图

    计算机思维导图探讨及合理应用,以及用它完成思维导图所带来的优缺点,当今天这个高速运转的信息时代,用电脑制作思维导图为管理信息提供了无数令人激动而重要的可能性,我们所要处理的信息越来越多,处理的信息的速 ...

  7. 1. 计算机思维 (大一新生,到)

                                                                                                <目录&g ...

  8. 运用计算机思维可以解决什么问题,计算机思维是能否解决生活中遇到的难题?...

    原标题:计算机思维是能否解决生活中遇到的难题? 首先,我们要明白什么是计算性思维? 计算性思维(Computational Thinking)用计算机逻辑来解决问题的思维:将一个困难问题分解,通过逻辑 ...

  9. 运用计算机思维可以解决什么问题,现在就开始读懂:什么是计算机思维?

    原标题:现在就开始读懂:什么是计算机思维? 计算机思维 计算机思维是一套概念模型 我们运用一个思维模型时,要经历这样三个阶段:建模,解模,解释.与之相对应的则是抽象思维.演绎思维.发散思维.通过抽象, ...

  10. 计算机思维使用的方法是,计算机思维

    代表的是哪里都适用的一种态度和技能,是每个人,而不仅是计算机科学家,都热衷于学习和运用的. 计算机思维建立的基础是计算机处理的能力及其局限性,不管是由人还是机器来执行.计算机方法和模型使我们有勇气去解 ...

最新文章

  1. Apache的Rewrite规则详细介绍
  2. zabbix 3.4 ubuntu 16 用腾讯企业邮箱作为告警邮箱
  3. 七种与輻射和平相處的妙法 - 生活至上,美容至尚!
  4. rand生成随机数的范围_JS中生成指定范围随机数
  5. java mysql nullpointerexception_无法从Java连接到MySQL:MySQL驱动程序连接逻辑中的NullPointerException...
  6. pip 10.0.0 BUG 解决方案Traceback (most recent call last): File /usr/bin/pip3, line 9, in module...
  7. bootstrapValidator验证的remote中data属性里获取select一直是默认值
  8. html选择拖动条,纯CSS做的滑动范围选择条
  9. UICollectionView实现带头视图和组的头视图同时存在实现
  10. .NET应用服务器(中间件)来到
  11. 《信号与系统》解读 第1章 信号与系统概述-6:系统对时域信号的基本运算与基本变换---幅度、加法、乘法、积分、微分、时延、反转、混合
  12. react-hooks/exhaustive-deps警告
  13. 服务器如何推送消息到app,App中如何实现消息推送?
  14. 一些常用CSS样式整理
  15. 电脑拆机(华硕FL5900)+光驱改固态
  16. c语言定积分区间微元面积,定积分的微元法.doc
  17. Win7不显示移动硬盘盘符的解决方法
  18. linux中ln -s 命令详解
  19. go:循环冗余校验(CRC)(附完整源码)
  20. 如何设计神经网络结构图,神经网络设计与实现

热门文章

  1. 22. SCHEMA_PRIVILEGES
  2. Android 自定义View实现拖动滑块完成验证
  3. 抖音、快手、b站都在做信息流广告,这本书教你做一个高薪的信息流优化师
  4. win10任务栏太宽而且调不了_win10任务栏变宽了怎么恢复原来的_win10任务栏变宽拉不下去怎么办-爱纯净...
  5. android 应用APK使用系统APK
  6. 身份证号码校验(前端,java)
  7. 港交所、中芯国际、京东、诺基亚等公司高管变动
  8. tp6中kafka使用
  9. tp6 中的save()使用说明
  10. 现代软件工程学期总结