KELEWEI|点击蓝字 关注我们
每个人都应该学习电脑编程
因为它会教你如何思考
史蒂夫·乔布斯

2014年,英国已经把“编程”列入每所学校的必修课程,这就意味着每位5岁以上的孩子都必须学习编程。近两年,爱尔兰、西班牙、丹麦、芬兰、葡萄牙、澳洲等国家也纷纷效仿,推行全国编程教育,儿童编程教育越来越受到重视。作为国家战略的重要内容,人工智能与少儿编程受到很多人的关注与青睐。
我们一直强调,让孩子学编程,不是为了培养未来的程序员,而是希望通过这种学习训练,掌握人工时代最重要的一种必备技能——编程思维。拥有了编程思维,孩子可以更好地理解人工智能时代的运转规则,更从容地应对未来的讯息万变。那么,“编程思维”到底是一种什么样的思维呢?

编程思维是一种高效的问题解决思维方式,包含“理解问题—找出路径”的思维过程,由问题分解、模式识别、抽象化(模式归纳)、算法设计四个步骤组成。通过这四个步骤,孩子学会把问题有效拆解,并且可以设计出解决问题的流程,将所有问题逐一解决。
解决问题有两种常见策略:算法和启发法。所谓算法策略,就是在问题空间里中随机搜索所有可能的方法,逐一尝试,直到获取一种有效的方法解决问题。而启发法策略,就是人类根据生活经验,在问题空间内进行较少的搜索,就能快速问题解决的策略,它是一种凭借直觉经验与知识积累、省时省力、走捷径的方法。

机器擅长算法,而人类常用启发法,所以有时候人类会遇到一些问题完全束手无策,尤其当这个问题的界定不够清晰,不清楚问题的起始状态是什么,要到达什么目标状态,以及用什么手段和遵循哪些步骤到达想要的目标状态,即使拥有强大的算法也不能解决。
所以,面临复杂棘手的问题,如果我们善于运用手段-目标分析(means-to-end)将问题界定清楚、化繁为简,就好办得多。简单来说,就是将问题按照一定目的,进行清晰界定和目标拆解,转化为一个个我们熟悉的简单问题或一个个更好执行、更好理解的小步骤,再逐个击破。这种思维,我们称为“分解思想”,它是编程和数学里重要的思想之一。

编程的过程,就是把复杂和庞大的问题“自上而下,逐步拆解,直至理顺”。它是解决问题的基础,只有把问题拆解清楚,才有接下来实现的可能。正如Scratch之父Mitchel Resnick所说:“ 在学编程的过程中教孩子们学会拆分问题,这才是最重要的。”
人在观察事物/现象的时候,常常要寻找它与其他事物/现象的不同之处,并根据一定的目的,把各个相似但又不完全相同的事物或现象组成一类。这种共同的特征与规律,我们称为模式。顺序模式是按顺序排列所有项目(物品);分组模式是将相似项目(物品)分成一个组。人脑通过扩充模式库,对关键性特征快速匹配并触发认知判断,可以大大简化我们对世界的认识,把复杂的世界简化,从而高效处理信息。

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


由此可见,善于识别模式,相当于擅长掌握、识别和运用套路,在经验库里搜索类似情境与解决方法,套用模式快速解决以前未曾遇到过的问题,将新问题变为小菜一碟的老问题。人脑在进行认知加工,就擅长用这种方式来节省资源,提高效率。因此,善于发现和总结规律的人,效率也特别高。
计算思维的实质是抽象和自动化,这和人脑的信息化加工模式有点像。生活中随处可见模式,发现模式的能力是可以锻炼的,最常见的方法就是找相同与找不同。在生活中,我们对一些事物的概念与印象也是在多次这样的认知中逐步形成的。抽象级别越高,越接近事物的本质,规律的适用面也就越广。

所以,抽象化,也称为模式归纳,在大量表面现象的模式中,寻找规律,归纳共性,找出最本质的模式,抽取最关键特征,忽略和过滤不必要细节的过程。通过认知问题的核心本质,帮助我们形成解决问题的构想。
对于大脑而言,早上起床出门上班,其实是一连串高度重复且自动化的流程事件组合,大脑只需要按照多年以来的习惯发出指令,并记住几个关键时间点要干什么,完全可以按流程自动化完成。

事实上,大脑非常喜欢用这种抽象、聚焦关键的方式,消耗最少的认知资源,高效地达成我们的行为目标,但有时候也会给造成一些无关紧要的小困扰:比如,到底有没有锁过门。当然这就涉及到其他认知成分的参与了。
编程中最关键的就是“抽象思维”能力,每件事物都有自己的主要特征和其他细节,如果我们找不出重点,就无法解决问题。抽象思维可以帮我们快速认清事物的本质,剥离出问题的核心,能在大量信息中抓住关键信息,提高学习效率。
解决任何问题,都需要制订具体的执行计划。在给定有限的资源情况下,我们可能会设想多种可能性、规划多条解决路径与流程步骤,帮助我们更好地应对突发状况,增加目标实现的概率,甚至找到最经济最高效的最优解或次优解。对于计算机而言,这个过程,就相当于在执行指令之前设定好算法的过程。

而算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,代表着用系统的方法描述解决问题的策略机制。深度优先和广度优先是计算机编程中的经典算法。广度优先解决是最短路径的问题;深度优先解决最长路径问题。
所以,这里所说的算法设计,主要是指根据前面几个步骤对问题的分析与理解,设计每一个关键步骤的多条路径与方法,最后一步步尝试最终解决整个问题的过程。当我们找到最优算法和最优解,甚至提前备好次优算法与次优解,在执行之时就可以风雨无阻、如有神助。

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

编程思维的附加值你不可不知!拥有编程思维的人目标明确,善于利用资源,不会被困难吓倒,他们相信问题会得到解决,面对挑战也会更自信、更有勇气。

扫描二维码咨询

声明:本文图片、部分内容来自网络,如有侵权请联系删除。
阅读更多:
赛事报名 | 2020全国青少年创意编程与智能设计大赛正在报名
课程报名 | 二年级C++编程招生!目标2022CSP-J提早规划加入信奥学习快速通道
关于我们
科乐维编程教育注重创新教育课程的开发与实施,长期与大中小学、职业院校及培训学校合作,设计开发个性化创新教育课程体系,具有专业的师资、设备、教材等。引进国外先进机器人设备,体验性强。同时在创客机器人方面起到创新引领的作用,校本课程应用于多所学校,相关工作得到教育部和北京市教委领导充分肯定及高度评价。
联系老师


