「少儿编程」是不是“智商税”,这在知乎上是一个很热的话题,很多家长认为:
1. 少儿编程是智商税,想当程序员上大学再学编程也来得及,现在学是白花钱
2. Scratch,Python之类的都没必要学,要学就直接学C++,因为只有C++才是信奥赛唯一指定编程语言
这两个观点恰好是对少儿编程最极端的两种解读,作为一个新兴的学科课程,是否是智商税,得看从什么角度,或者想从中获取什么来看。
说白了,就是学习少儿编程到底有没有用,有什么用。今天我们就用一篇文章帮你理清思路。
Part 1. 从认知看:各大机构的宣传 VS 家长的理解
a.各家机构的宣传
随着STEAM教育被写进国家政策、大综合考试试点编程、人工智能进一步发展,青少儿编程细分赛道受到越来越多的关注,咱稍微说大点儿,国家出台了各种红头文件,就连马上要出台的高中和小初的新课标都会加入编程的学习,这么说来政策上肯定是支持的。
再来说说各家机构的宣传:学编程能锻炼孩子的思维能力,孩子升学的时候有优势,而且将来是信息化社会,会编程对孩子的就业有好处。
少儿编程机构就像戴着面纱,家长没有什么渠道可以了解到机构的真实情况,又很怕自己的孩子没有抓住什么机会点而落后于人,所以带有盲从的心态来看待这门学科。
请允许我先反驳一下,从我们学员的调研和反馈中,少儿编程一定不是智商税。但是,很多家长之所以抱有怀疑,那一定是有原因的,我试着总结了三点,不一定对,给大家做个参考!
b.家长的理解
○ 第1种,以升学为目的。学习编程本应该重点去学竞赛、编程信奥赛,却在乐高或者机器人编程的学习上耗了好几年,最终错过了黄金时间。
○ 第2种,以兴趣爱好和技能培养为目标,但是没有根据孩子的年龄选择到合适的学习内容上。初中的孩子还在学Scratch游戏编程,三年级的孩子学的却是Python爬虫。
○ 第3种,以锻炼孩子的逻辑思维能力为目标。认为学习编程能提高孩子智商,却不知道怎么规划,忽略了系统化的学习。
在我看来,学习少儿编程到底有什么用,这不是一概而论的,要看家长对编程学习的目的和了解程度,规划的学习路线是否合理。
大家可以想一想,为什么没有人讨论孩子学习舞蹈、书法这些是不是交税?因为所有的家长或多或少对这些领域都有所了解,所以接下来给大家详细的说下,我们所说的编程能力到底是什么,无论家长是出于升学、兴趣培养、培养能力的目的,都可以做个参考。
Part 2. 大家都在说的编程能力是什么?
a.少儿编程和成人编程不一样
编程在很多人的眼中,都是一种很难的技术。这么难的技术让几岁、十几岁的孩子学,到底能不能学会,这是家长们很关注的问题!
但是,这是家长们的一个误区,其实成人学习的编程和孩子学习的编程是有所不同的!
少儿编程≠成人编程!
少儿编程入门一般学习「Scratch图形化编程语言」,简单的理解,就是通过电脑软件来下达一些命令,然后再让电脑来运行这些指令。
在Windows系统操作发明前,市面上流行的是dos操作系统,用这个系统需要记忆许多命令语句,会操作电脑的只有少数人,windows系统的发明,把界面都图形化了,是代码编程图形化最准确的表达标准。
Scratch「图形化编程」使用者可以不认识英文单词,也可以不会使用键盘。因为Scratch构成程序的命令和参数通过积木形状的模块来实现编程,用鼠标拖动模块到程序编辑栏就可以了。避开了复杂的语法、数据和计算机理论,保留了编程的逻辑结构,把创作动画、游戏、可视化小程序的难度降到了最低。最难能可贵的是Scratch虽然简化了编程的难度,但并没有削弱编程思维的训练。
Scratch编程除了有逻辑思维,它还有一个很重要的计算机的编程思维在里面,像里面的一些 if 条件的判断情况,还有一些计算机的等待机制,这些都是计算机特有的一些思维,文章最后有详细介绍。
成人的编程是需要记忆大量的编程命令语言(全英文),格式,甚至一些细小的要求,很繁琐。
成人码农使用的Python、java、C++代码编程语言,不适合大多数10岁以下的孩子,目前针对孩子的Python和C++课程,价值在于指向将来的中学信息学奥赛(名校捷径)。即使要让孩子走这个方向,也得先从培养兴趣和打基础开始,也就是先学Scratch,而且Scratch也有全国性奖项可以去争取。
当然,即使是成年人的编程,其主要目的也并不是敲代码。代码,只是人和计算机之间沟通的工具,最终目的是让计算机替人解决问题。这可不是个简单的事,编程者首先得用自己的思维去思考,怎样一步步地去实现一个目标或者解决一个特定问题,然后再把思维过程所产生的语言描述,转换成计算机可以读懂的语言,最终让计算机按代码指令去操作,达到为人服务的目的。
曾经我也以为编程=敲代码,但这是很片面的。编程看似只是敲代码,但实际上是思维过程的一种提炼和表达。如果这个思维过程不够完整和严谨,计算机就无法正确地、有效地完成特定的目标。因此,编程是人在和机器不断沟通的过程中,不断地编辑和调试编程者自己思维的过程。学习少儿编程的目的也是从小养成这个思维习惯。
b.少儿编程不只是语言的学习
少儿编程的重点不在于学习编程软件的使用和编程语言,而在于思维的锻炼,让孩子在愉悦的学习环境中,尽情的将自己内心的想法表达出来,通过项目制的学习方法,掌握分析问题,解决问题的能力。
少儿编程的主要目的,同样不是教孩子如何去敲代码,而是以符合孩子认知的方式,让他们在借助代码和计算机沟通的过程中,锻炼自己的思维能力(逻辑思维能力、批判性思维能力,和计算思维能力)、创造力、以及解决问题的能力。而这些能力,不但在孩子的学习场景下发挥作用,还可以让孩子在其他方面,更好的思考和解决实际问题。知识的灌输在这个时代将会慢慢被弱化,创新的思维是需要在学习的过程中去培养的。
于我而言,从小就接触编程的最大意义就是体会“理性创造的乐趣”。编程算是少数的有严格定式的活动,比如我们要编写一个计算器,那么输入的就必须是数字和合法的运算符,而得到的相对应的结果也必须是严格的、且符合数学逻辑的。
在这个过程中,不仅仅是享受创造的乐趣,且还能体会遵守规则创造的乐趣,我觉得是值得在小的时候就去尝试的,这里毛遂自荐下西瓜创客的试听课,是一个平衡了易上手性和能力培养全面性的课程,很适合培养孩子的编程兴趣。
c.从入门到精通,取决于学习程度的不同
其实学编程分几种情况,我按照顺序来讲:
首先是普通的家庭。大部分孩子在五六岁的时候,就用编程APP去做启蒙,然后让孩子学一学Scratch编程语言,让孩子像大积木一样的去编程非常简单有趣,可以把它当做是一个思维训练,无论是看书或者是上课学习,对于百分之八十的家庭,做到这一步就足够了,也就是我们说的编程启蒙就够了。
那么在这个基础之上,如果孩子有兴趣进入到第二步,Python的学习,Python是在四五年级以上,有一定的英语基础再开始学,Python跟其他的编程语言相比,更接近于我们自然的语言。孩子学起来难度不大,看书或者是线上课来学Python都可以,百分之九十五的家庭停在这一步,Python语言,哪怕孩子将来读硕士、博士也是够用的。因为像我读博期间,用的也是Python语言来编写程序的。
到了这一步,如果孩子还有兴趣展现了非常强的天赋,而且家里有足够的财力支撑,你就可以考虑去冲击信息学新奥赛了,之前都是铺垫,真正要比赛,要学的是C++,升重点高中和重点大学,走的都是比赛之路。
当然,科技特长生这条路线对于孩子和家长都是有要求的。因为这样竞赛难度虽然会比传统的数学竞赛、物理竞赛要简单一些,但是难度依然是不低的。因为本身C++语言就比较枯燥,如果你的孩子真的有兴趣,非常有天赋,而且非常感兴趣的话,是推荐尝试这条路线的。
到这里,基本上把少儿编程的能力部分介绍完了,针对不同家庭和不同孩子,家长要根据自己的教育理念、学区归属、以及孩子的思维表现、学习习惯对孩子做路径规划。咱们家长充分了解了,加上冷静的思考,慎重的帮孩子做出选择。一旦选择,就要认真对待,长期坚持。
Part 3. 最常说的编程思维是什么?
a.编程思维的特点—及时提供正面的反馈
「37%的孩子学习编程后逻辑思维能力变强,29%的孩子自主能力提高,24%的孩子变的更加自信」
孩子的思维方式和成年人不同,孩子学习的目的很直接,就是希望得到更好的反馈。获得好的结果、得到爸爸妈妈和老师表扬,这些都是学习的反馈。少儿编程的学习,在于能更大限度的为孩子的学习提供正面的反馈。
通其他科目相比,少儿编程的学习过程更讲究流程。现在的AI双师课都做了改良的设计,一般会使用有趣的动画剧情吸引住孩子,把知识讲解融入动画中,讲完知识点及时插入互动的题目或编程练习,有的课程把练习包装成游戏通关的形式,只要认真参与,并且在老师的指导下反复纠错,做出一个成功的作品是必然的结果。
所以学习少儿编程的孩子更容易尝到成功的喜悦,这种喜悦有助于棒孩子潜移默化的树立自信。
另外,阶梯式教学是少儿编程最大的特点,少儿编程的课程体系就像是一个楼梯,从入门到进阶都需要脚踏实地一步一步走来。课程设置的有层析,是为了让不同基础的孩子都能适应课程的进度。与此同时,这种上升式的课程安排也能让孩子对自己的进步有一个直观的认知。
少儿编程的游戏机制和沉浸式教学,通过吸引孩子的学习兴趣,让孩子的目光不知不觉地定在学习上,在这个长期培养的过程中,专注力和自信心也就都回来啦,6节编程课也就1-2周就能上完,可以待孩子体验一下,有没有用,别人家孩子说的不算,咱自己家孩子的体验才是最重要的。
b.编程思维是「拆解问题-解决问题」的思维过程
有人说,少儿编程最不合理的地方,就是不教技术和算法。如前文所言,编程技术容易过时,算法孩子又很难理解。况且,少儿编程从不以培养程序员为目的,而是帮助孩子搭建编程思维,也就是训练“理解问题——找出路径”这一思维过程!如果一定要为二者做排序,编程思维一定排在编程技术前面。
少儿编程课程是以解决问题为目标导向的,比如当老师提出「制作翻译器」的目标任务后,孩子需要根据目标来一步步的倒推、设置、优化自己的工作,引导孩子形成逆向思维,从而解决问题。
在孩子解决问题的过程中,需要去观察问题出在哪里、去思考如何尽量简单的解决问题、去发现预想和实际操作有什么差别、去设想整个图形立体起来是怎样的·······
这样才能够将孩子 的观察、比较、分析、综合、抽象、概括、判断、推理能力进行综合提升,从而提升孩子的思维能力。
Part 4. 什么是编程的算法思维?
少儿编程不仅仅是培养逻辑思维,还有另外一个能力,它就是计算思维,或者把它叫做算法思维。
逻辑思维能力是抽象思维,根据因果关系推理出相应的结论。举个例子来说,在我们在课上的时候,让孩子写程序。那根据飞机的动作观察,按下空格键,飞机就上升,不摁的时候飞机就下落,孩子就会想到用条件判断的语句来写这行代码。
算法思维是一种让计算机帮我们解决问题的思维方法。目标是让计算机高效并且快速的解决这个问题。那在一些考算法的比赛中,通常是需要这种能力的。
举个例子,现在想求任意一个三位正整数如何能得到它的个位、十位和百位。假如这个数字是345,那么那么我们就是如何得到它的个位5、十位4,百位3,有的孩子就说我一看就知道了,那这个动作就是没有用到算法思维的。
这时候我们需要找到一种方法,就是无论我是看还是不看,那无论这个数字是怎么变,那这个方法都是有效的。
有的孩子就会想到了,我把它除以10的余数求出来,就是最后一个数字了。有的孩子孩子会说,那我不除以10,我除以34的余数也是最后一个数。好,那现在这两种方法哪个正确呢?那显然如果除以34取余的话,只有前面两位是34的时候才是正确的,换一个数立马就不对了。而对10取是对任何数都是没有问题的,那现在我就得到了求出最后一个数的方法了。
那这个项目还没完哈,我还要想怎么得到百位和十位,这时候又要用到我们的算法思维了。我们要把未知的问题转化为刚才我们已知的问题,或者说我们把大问题拆分成小问题。那既然我们已经找到最后一个数字了,那我现在需要的就是把三位数怎么变成两位数。我把这个数缩小10倍,也就是除以10,然后取它的整数部分就可以了。那得到的前面的两位数,然后再用刚才的方法对时取余就可以得到它的十位了。紧接着我再缩小十倍,然后就能得到个百位了。所以用这个方法,无论有几位数,我都是可以先对时取余,得到个位,然后我再缩小十倍啊,就能得到十倍,以此类推啊,最后我再循环,这个过程就能得到所有的数字了。
那这个方法就是我们所说的算法了。孩子学编程很重要的是获得这个能力,有了这个能力之后才是运用逻辑思维写出这个算法,信奥赛考察的也是这个能力。
最后总结下:
如果真想让孩子学习编程,那么他的学习路径应该是循序渐进的,孩子刚开始接触编程时,重要的有两点:
一是容易上手,让孩子能用编程做出东西,体会到编程的乐趣,培养孩子对编程的兴趣
二是把精力尽量放在学习编程逻辑上,而不是编程语言的语法上。因为编程逻辑,才是编程的核心,真正锻炼思维的东西,而编程语言只是我们为了完成目的使用的工具。
到这里,就把少儿编程的编程能力和编程思维都介绍完了,大家可以从以上信息分析是否有必要送孩子去学习少儿编程。
我这边的建议是可以先让孩子去试试,看看孩子是否感兴趣,兴趣才是第一位的老师,孩子学下去,下一步的规划才有意义。西瓜的课出了名的能调动孩子的主动性,点击下方链接领取6节课程,一周就能学完。
也请持续关注「西瓜创客」,西瓜会持续为大家提供最新赛事资讯,分享更多编程学习方法,请相信,西瓜和各位家长的目标是一致的。