Scratch青少儿编程课堂少儿编程

什么是编程思维?为什么说未来属于拥有编程思维的孩子

2020-04-28  本文已影响0人  奇码学院

“学习编程可以锻炼你的思维,让你更好思考,创建一种在各个领域都很有用的思维方式。”——— 比尔盖茨

编程学习的重要性不言而喻,编程普及已呈现全球化趋势。作为国家战略的重要内容,人工智能与少儿编程受到很多人的关注与青睐。

我们一直在强调,让孩子学编程,不是为了培养未来的程序员,而是希望通过这种学习训练,掌握人工时代最重要的一种必备技能——编程思维。拥有了编程思维,孩子可以更好地理解人工智能时代的运转规则,更从容地应对未来的讯息万变。

那么,“编程思维”,到底是一种什么样的思维呢?

当我们试着从电脑的角度去思考问题时,将问题的解决思路、方法、和手段通过计算机能够理解的形式告诉计算机,使得计算机能够根据人的指令一步一步去工作,完成某种特定的任务,我们就已经在开始学习并锻炼“编程思维”了。

所以,所谓“编程思维(ComputationalThinking)”,其实就是指利用我们已有的知识和工具,将自身的思路转化成逻辑运算的步骤,从而完成复杂的任务,帮助孩子培养逻辑思维和抽象思维。最常见的形式就是根据指令完成一系列动作。

它不是编写程序的技巧而是一种高效的问题解决思维方式,包含“理解问题——找出路径”的思维过程,由问题分解、模式识别、抽象化(模式归纳)、算法设计四个步骤组成。通过这4个步骤,孩子学会把问题有效拆解,并且可以设计出解决问题的流程,将所有问题逐一解决,即使不当程序员也能用得上。

Step1 : 分解问题--化繁为简

问题解决包括两种常见的策略:算法和启发法。

所谓算法策略,就是在问题空间里中随机搜索所有可能的方法,逐一尝试,直到获取一种有效的方法解决问题。

而启发法策略,就是人类根据生活经验,在问题空间内进行较少的搜索,就能快速问题解决的策略,它是一种凭借直觉经验与知识积累、省时省力、走捷径的方法。

机器擅长算法,而人类常用启发法,所以有时候人类会遇到一些问题完全束手无策,尤其当这个问题的界定不够清晰,不清楚问题的起始状态是什么,要到达什么目标状态,以及用什么手段和遵循哪些步骤到达想要的目标状态,即使拥有强大的算法也不能解决。

所以,面临复杂棘手的问题,如果我们善于运用手段-目标分析(means-to-end)将问题界定清楚、化繁为简,就好办得多。

简单来说,就是将问题按照一定目的,进行清晰界定和目标拆解,转化为一个个我们熟悉的简单问题或一个个更好执行、更好理解的小步骤,再逐个击破。即使采用启发法,也不愁找不到解决之道。

最糟糕的结果,无非就是换几套思路尝试几遍。这种思维,我们称为“分解思想”,它是编程和数学里重要的思想之一。

编程的过程,就是把复杂和庞大的问题“自上而下,逐步拆解,直至理顺”。它是解决问题的基础,只有把问题拆解清楚,才有接下来实现的可能。正如Scratch之父Mitchel Resnick所说:“ 在学编程的过程中教孩子们学会拆分问题,这才是最重要的。”

Step2 : 模式识别--规律整合

人在观察事物/现象的时候,常常要寻找它与其他事物/现象的不同之处,并根据一定的目的,把各个相似但又不完全相同的事物或现象组成一类。

这种共同的特征与规律,我们称为模式。顺序模式是按顺序排列所有项目(物品);分组模式是将相似项目(物品)分成一个组。人脑通过扩充模式库,对关键性特征快速匹配并触发认知判断,可以大大简化我们对世界的认识,把复杂的世界简化,从而高效处理信息。

编程中的模式识别,就是找出不同问题中的模式和趋势(共同点)的过程,能够极大锻炼规律整合的能力,让我们能快速从以往的经验中,得到规律并举一反三以快速高效解决细分问题。

假如要画100只猫,我们如何实现这个目标?是自己找100只猫临摹,还是临摹一只猫,找出它的“模式”,然后让电脑批量复制呢?

如果让电脑画100只猫,它是这样做的:对猫进行模式识别,发现猫的共同点:有眼睛、耳朵、身体、尾巴、四条腿……根据这些特点,建立起猫的“模式”,然后按照这个模式批量画猫;每次变换一个局部特征(例如毛发颜色、尾巴长短),就能轻松完成100只猫。

所以善于识别模式,就相当于擅长掌握、识别和运用套路,在经验库里搜索类似情境与解决方法,套用模式快速解决以前未曾遇到过的问题,将新问题变为小菜一碟的老问题。

人脑在进行认知加工,就擅长用这种方式来节省资源,提高效率。遇到相似的情况就直接调用,当模式库的内容越多,分解问题、算法求解更容易,迭代、复用、翻创的素材也会更丰富。所以,善于发现和总结规律的人,效率也特别高。

Step3 : 抽象化--聚焦关键

计算思维的实质是抽象和自动化,这和人脑的信息化加工模式有点像。生活中随处可见模式,发现模式的能力是可以锻炼的,最常见的方法就是找相同与找不同。

在生活中,我们对一些事物的概念与印象也是在多次这样的认知中逐步形成的。抽象级别越高,越接近事物的本质,规律的适用面也就越广。

所以,抽象化,也称为模式归纳,在大量表面现象的模式中,寻找规律,归纳共性,找出最本质的模式,抽取最关键特征,忽略和过滤不必要细节的过程。通过认知问题的核心本质,帮助我们形成解决问题的构想。

以早起出门为例,对于大脑而言,早上起床出门上班,其实是一连串高度重复且自动化的流程事件组合,大脑只需要按照多年以来的习惯发出指令,并记住几个关键时间点要干什么,完全可以按流程自动化完成。

事实上,大脑非常喜欢用这种抽象、聚焦关键的方式,消耗最少的认知资源,高效地达成我们的行为目标,但有时候也会给造成一些无关紧要的小困扰:比如,到底有没有锁过门。当然这就涉及到其他认知成分的参与了。

以画猫为例,我们了解猫的特征,并基于这些抽象的特征,我们可以形成关于画猫的整体设想并制作模型。勾勒出猫的轮廓与五官,就能让人意会到这是一只睡猫,我们想让它更生动形象一些,可以再对它进行细节补充。

编程中最关键的就是“抽象思维”能力,每件事物都有自己的主要特征和其他细节,如果我们找不出重点,就无法解决问题。抽象思维可以帮我们快速认清事物的本质,剥离出问题的核心,能在大量信息中抓住关键信息,提高学习效率!

Step4 : 算法设计--最优解与次优解

解决任何问题,都需要制订具体的执行计划。

在给定有限的资源情况下,我们可能会设想多种可能性、规划多条解决路径与流程步骤,帮助我们更好地应对突发状况,增加目标实现的概率,甚至找到最经济最高效的最优解或次优解。对于计算机而言,这个过程,就相当于在执行指令之前设定好算法的过程。

而算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,代表着用系统的方法描述解决问题的策略机制。深度优先和广度优先是计算机编程中的经典算法。广度优先解决是最短路径的问题;深度优先解决最长路径问题。

所以,这里所说的算法设计,主要是指根据前面几个步骤对问题的分析与理解,设计每一个关键步骤的多条路径与方法,最后一步步尝试最终解决整个问题的过程。当我们找到最优算法和最优解,甚至提前备好次优算法与次优解,在执行之时就可以风雨无阻、如有神助。

而编程的学习和训练,让我们有机会模仿、掌握甚至内化计算机这种运用算法来解决问题的思维方式,优化工作与生活。总而言之,高速运转的人工智能社会,需要这套高效的问题解决思维方式。

写在最后

编程思维看似抽象,但蕴含着丰富的人生智慧,小到起床上班,大到公司决策。从小就开始接触思维能力训练的孩子,思维严谨,语言表达流畅自如,创造性强,不管在学业,还是职场上都比较容易取得成功!未来人工智能时代,将属于拥有编程思维的孩子!未来也需要更多懂编程、有教育情怀的优秀老师!

上一篇下一篇

猜你喜欢

热点阅读