何谓计算机思维(转载)

本文转载自知乎: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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章