5000字干货:关于让孩子学编程的深度思考和学习规划

作者: 周花卷

来源: 果壳童学馆

发布日期: 2019-08-09

本文详细探讨了少儿编程教育的现状、国家政策支持、家长面临的困惑以及编程教育的实际益处。文章强调编程教育应注重培养孩子的解决问题的思维方式和调试能力,而不是仅仅追求短期成果或升学优势。同时,文章也讨论了人工智能与编程的关系,指出编程教育应基于孩子的兴趣和长远发展,而不是盲目追求技术潮流。

最近几年,STEAM教育一下子被推到风口。尤其是“少儿编程”受到各路人马追捧,不仅各种主打线上编程教育的初创公司遍地开花,一些传统的线下学科培训机构也纷纷开始开设少儿编程课程。少儿编程的“一夜火爆”,背后少不了国家政策的支持。

2017年,国务院印发了《新一代人工智能发展规划》,其中明确提到:“实施全民智能教育项目,在中小学阶段设置人工智能相关课程,逐步推广编程教育,鼓励社会力量参与寓教于乐的编程教学软件、游戏的开发和推广。”这一文件等于为少儿编程教育机构高调站台。另一方面,和语文、数学、英语等学科培训以及艺术培训相比,编程课还算“小众”。所以很多机构也瞄准了这块潜力巨大的市场,铺天盖地地搞起了宣传。

比如说号称说要教给孩子“人工智能”,或者号称孩子学几节课就可以做出很厉害的作品。对于父母而言,自己懂得编程的人并不多,真的自己就懂编程的家长可能都996去了,没时间管孩子的课外班;要么就自己在家教了。这就导致许多家长会被铺天盖地的广告所“迷惑”,无法做出正确的判断。我自己从小就接触编程,参加过信息学奥赛,在现实生活中,也在帮自己孩子规划编程学习路线。

我写这篇思考干货的初衷,其实是分享我的思考新得,从而给广大家长提供一份编程启蒙避坑指南。需要提前说明的是,这篇指南只从整体的角度探讨,不针对任何具体的培训机构。果壳童学馆这里有可信赖的育儿科学知识,随时随地的家庭STEAM教育。帮你成为具备未来视野的家长,帮助孩子探索世界、学会思考,培养属于未来的优秀人才。我们这一届家长,其实很少有人从小就接触编程。很多人可能到高中甚至大学之前都没有摸过电脑。

作为一个“异类”,我自己是从小学的时候就开始边玩边学编程了。那时候的编程还不像现在有各种图形化、看上去很好玩的环境和工具,都是直接编写程序代码的。我认为小学作为编程的起点是可以接受的。我自己也带过一些孩子学习简单的编程,尽管每个人接受程度不同,但总体而言,小学二年级(7~8岁)的孩子,其实都已经可以理解编程的基本概念和逻辑了,比如指令、循环、分支、变量等等。不过,这是否就意味着学编程越早越好呢?

曾经有一个著名的“双胞胎爬梯实验”:一对双胞胎,其中一个宝宝在48周时开始训练爬楼梯,另一个宝宝在52周时才开始训练,结果两个宝宝都在54周的时候学会了。学编程也是一样,晚点开始,也未必就会落后,可能还能帮你省点钱。为什么机构说学编程要趁早?幼儿园就要开始学?

这是因为一旦孩子的抽象思维和逻辑思维有了一定发展,编程中很多概念就可以被很快理解了;但反过来,你给一个幼儿园小朋友讲这些东西,就需要花很长很长时间,他们还没办法完全理解。小孩子无法理解这些抽象的概念怎么办呢?那就只能搞所谓的“寓教于乐”了:以玩为主,把战线拉长。这样做对于机构其实也有好处,因为孩子报培训班都是有一定粘性的,早点把你圈进来才能让你一直学下去。

机构宣传的那些好处可能都比较注重实用性,我们先不说这些。从家长角度来讲,学习编程的好处其实还是在以下两方面:第一是培养“如何解决问题”的思维方式。编程思维的核心,其实是把复杂的问题分解成一个一个较小的模块,而其中的一些模块应该是可以重复使用的。预先设计好这些模块之间的联系,逐个实现这些小模块之后,再把它们都整合到一起——这种能力对于解决任何问题都有帮助,也是让孩子学习编程最大的收获之一。

第二是“调试”这个过程所体现的价值。没有人能一次把程序写对,写完之后一运行,总会发现这样、那样的问题,这时候就需要进行“调试”。学编程有什么用?能提高可能成绩、帮助升学?调试对于孩子来讲其实是个很痛苦的过程,有时候调了半天还是不行,就很有挫败感。但这个过程恰恰能锻炼很多能力,比如怎样找到问题出在哪里,其实有很多技巧和方法;还要有足够的耐心和敏锐的观察力——这些都是放在任何领域都很有用的能力。

至于用编程来提高课内成绩,理论上也许可以做到,但现实中并没有太多数据支持,所以大家也别太当真。另外,编程是否能帮到升学,也是大家很关注的问题。我观察到的是:跟升学相关的“硬通货”比赛赛事其实是非常少的。比如拿NOI(全国青少年信息学奥林匹克竞赛)来说,每年全国比赛金牌也就几十个,其实是非常小众的。

如果我们拿这个奖牌作为学编程的目的,就会搞得像曾经的“全民奥数”一样,家长和孩子都身心俱疲,也没什么意思了。学习任何东西都是同样的原则:兴趣为先,适度引导。自从前两年Google的人工智能软件AlphaGo击败人类最顶尖的围棋选手以来,人工智能一夜之间成了一个家喻户晓的名词。所有的机构都在拿人工智能说事儿,比如说:“人工智能编程,让儿童赢在未来”等等。

我们说的人工智能,其实是指以“机器学习”为主的一种软件系统。机器学习又是什么呢?著名人工智能专家吴恩达(Andrew Ng)在他主讲的斯坦福大学机器学习课程简介中是这样说的:“机器学习是一门研究让计算机无需专门编写程序,就能完成工作的科学。”也就是说,机器学习的目标就是“不需要编程”,意外吗?

机器学习解决了一些复杂的特征识别问题,比如说一张图片上面是猫还是狗,我们用传统的指令编程很难让计算机完成这个任务,因为猫和狗的特征太复杂了,不是能用指令描述清楚的。而机器学习的思路就是甩给计算机几万张图片,每一张都事先标好答案,比如这张是猫、那张是狗、这张什么都不是。用这些学习材料去训练计算机,让它自己找到猫和狗的特征,再去判断它没见过的图片里是猫还是狗。

因此,相比编程本身来说,人工智能和数学的关系其实更强。学编程只能帮你更好地理解人工智能的工作方式。如果你问我什么人在人工智能时代一定有饭吃,我会说“数学家”;至于程序员,其实已经有人用遗传算法和神经网络教会计算机自己编程了,等于和程序员抢饭碗,你颤抖了吗?AI时代,学编程才有饭吃?孩子能自己编写AI程序?

还有些父母听说可以让孩子自己编写很厉害的人工智能程序,感到非常心动,比如“让孩子自己独立编写的动作捕捉程序”。懂编程的人一看就知道这是哄小孩玩的——怎么定义的“自己编写”呢?给孩子一个打包好的工具箱,里面有一个现成的工具就叫“动作捕捉”,然后让孩子自己写一行代码(其实是照抄一行代码),调用一下这个工具,搞定。这种东西从学习的效果而言有什么意义呢?更多是为了让家长不明觉厉,心甘情愿掏钱吧。

其实,现在的人工智能离真正我们期待的“智能”还差得远。如果机器学习本身的原理没有突破,那么可预见的将来,它依然会离“智能”差得远。未来,人工智能将替代一部分人类工作,但我们不能把它看成是一种威胁,而是一种新的机会。我们作为父母,面对人工智能时代的时候,应该让孩子“练好内功”,而不是赶现有技术的“时髦”。至于人工智能,等有了一定的数学和计算机科学底子再去了解它也不迟。

我们环顾四周的课外班,就会发现:搞机器人的机构比搞编程的机构要多得多。这里面有很多原因。首先,很多机构最初都是搞乐高培训起家的,从搭积木到机械结构、再到自动化是一个比较自然的路径。学编程、学机器人区别在哪里?再加上乐高自己也有WeDo、EV3这样的机器人教育模块,因此机构在这方面的准备更充足一点。其次,学机器人是需要购买硬件设备的,也可能成为机构的一个利润来源,而学编程卖得就只有课时了。

最后,机器人领域里可以有很多大大小小的比赛,这些比赛都是组队参加的。尽管水平可能良莠不齐,但搭配组合、培训后总能拿出成绩,孩子也可以拿到几张证书,皆大欢喜。而编程在大众赛事这方面就比较缺乏,也和它的特点也有一定的关系。我认为机器人学习其实是一个交叉领域,尽管也会涉及到一部分编程,但是在少儿阶段,学习的内容还是集中在逻辑控制层面,并不会特别深入。

所以到底让孩子学机器人还是学编程,应该从孩子的兴趣出发:许多孩子对于机器人这种比较“现实”的东西更感兴趣,而另一些孩子更喜欢“搞脑子”。从STEM教育的角度来看,其实两者都很好,无所谓孰优孰劣。我也看到过一些机构非要忽悠家长说学机器人比学编程好,理由是学编程只能在电脑上搞虚拟的东西,机器人这种能做出真东西的才有用——这就是别有用心了。

假如你孩子喜欢编程,但机构却极力推荐你去学机器人,那大概只能说明他们的机器人课更有优势,或者说能带来更多利润。父母该如何看待机器人教育?许多人听过不少编程语言,比如Scratch、Python、C++等等...到底学哪种呢?其实你在市面上能见到的绝大多数少儿编程机构,都是学Scratch或者类似的Scratch的积木式编程。

Scratch是MIT(大名鼎鼎的麻省理工学院)开发的一款图形化编程软件,在全世界少儿编程教育领域都非常流行,它的特点就是简单易学,上手快,几分钟就可以做出一些好玩的作品。简单易学不光是对小朋友容易学,对于机构的老师们也容易学。

少儿编程机构可以遍地开花,但是老师的缺口不是一时半会儿能够补上的——很多老师也都是半路出家的,那么显而易见,Scratch是最容易上手的,所以绝大部分少儿编程机构都只有能力调集Scratch师资。至于Python之类的正经编程语言,师资培训和教研体系建设的难度要高上数倍,大部分机构其实都开展不了或者水平有限,真正有能力开展的屈指可数。Scratch虽然好玩,但是它本质上还是个小孩玩具。

尽管号称Scratch可以开发很复杂的项目,但是以它的设计模式,如果真做个大项目能累死你!我自己就尝试过,看着那些花花绿绿的积木堆在一起,真得有点脑壳疼。Scratch其实更适合拿来培养兴趣,学习一些基本的编程逻辑,如果一个机构让孩子学Scratch超过两年,那么家长可以判断这个机构比较“水”了,很可能后面也拿不出什么东西。

如果孩子已经通过Scratch入门了,我的建议是:要尽快转向学习正规的编程语言,只有使用正规的编程语言,才能学会严谨地表达程序结构和逻辑。具体学哪种语言,要看孩子想做点什么。

比如说,想开发iPhone的App,那就学Swift;想开发微信小程序,那就学习Javascript;如果打定主意要走竞赛路线的,那就学C++吧,NOI选择C/C++作为规定语言,是因为它们更贴近计算机底层的工作方式,说白了就是更加“硬核”。

如果还比较迷茫、找不到什么特定的目标,我建议可以让孩子学学Python,因为Python在各个领域都有广泛应用(比如机器学习),也可以写小游戏(比如基于pygame等引擎)。有一点想说的是:无论你让孩子去学习什么语言,都要引导孩子去关注那些核心和基础的东西。比如:计算机的结构和工作原理;计算机的操作系统;编程语言相关的底层知识,以及基本的算法和数据结构知识。

这些东西,从计算机诞生的那一天起几乎就没变过,正所谓“练好内功”才能“以不变应万变”。到了这个学习阶段,一般孩子年龄也比较大了,应该具备一定的自学能力了。我认为可以不拘泥于在机构学习,还有很多途径可以学习这些知识,比如书本、在线课程(MOOC之类的,中文课程也非常多),甚至还有一些提供交互式课程的App(比如苹果的Swift Playgrounds)。

在这个阶段,如果自己家没有家人懂编程的话,让交一个懂编程的朋友,比找个机构更管用。孩子学习的过程中有靠谱的人随时给答疑,或作出实时指导,效果自然会好很多,家长可以多请人家吃吃饭表示感谢。这一部分是我的个人观点:我认为对于低年龄段的孩子,相比线下机构,线上学习反而更有优势。首先,编程教学本身就是在屏幕上进行的,也就天然适合线上的方式;线下教学也是看老师的电脑屏幕,本质上也没太大区别。

从实践而言,线上课堂我们当家长的可以看到孩子到底在学什么。即便不是专门旁听,你没事路过瞄两眼也能了解个七八分;而线下课一般家长是不陪同的,我不太容易掌握老师教得好不好,孩子学得好不好。其次,我之前提到了编程师资的培训难度。尽管我认为Scratch比较容易,但要在短时间内让老师具备深厚的教学功力,依然很困难。

此外,Scratch教学离不开很多有趣好看炫酷的工程实例,这些东西都是需要专门的团队花时间和精力去制作的。在这一点上,线上机构就可以有规模化的优势:用集中团队进行教研,也可以用少数精锐的老师去教更多的学生,我认为课程的质量应该更好一些。再者,线上课的价格一般也比线下机构更便宜。那线下班又有什么独特优势呢?

我认为,线上机构的课程要照顾的群体比较大众化,且老师很难观察到学生的接受度,因此线上课程进度设置上比较宽松缓慢,也很难针对某个孩子的疑惑进行具体的指导,(除非是一对一的课)。而这些劣势,则是线下班的长项。所以家长要多观察孩子的学习情况,选择合适的方式学习。报编程班应选线上还是线下?普通家长怎么判断编程老师的水平?

无论教什么学科,我认为老师最重要的素质只有三条:第一:专业知识积累够深,相关知识面够广;第二:能够用形象的表达方式(包括口头、图解甚至动画)讲述知识点,并且能够提炼出一些规律;第三:擅长使用引导的方式让孩子自己达成目标。第一点应该很容易理解,老师要教100%的内容,自己必须要200%的储备。那么在家长自己不太懂编程的情况下,怎样直观地判断老师的水平呢?

我觉得可以看老师对孩子提问的反应:如果老师有足够的知识储备,对于孩子的提问应该可以应对自如;如果经常回避孩子的提问,那多半是肚子里没有料。另外,还可以看老师能不能针对孩子的作品提出有趣的改进或者拓展建议。第二点也比较直白,老师讲得是不是形象易懂。家长即便不太懂编程,也能有个大致的判断。

比如说Scratch编程里面有讲到坐标系的概念,有些老师会说像电影院里坐座位,第几排第几座,这样一说孩子就很容易理解。坐标系也可以进一步提炼一些规律出来,比如说一个角色水平移动的时候哪个轴的坐标是不变的?好的老师应该能讲一些规律,而不是只停留在表面的一些概念。至于第三点,好的老师上课要千方百计地引导学生思考并自己找到答案,而不是只把知识点讲掉,带着孩子做完一个作品就完事了。

比如说,做一个小项目的时候,老师有没有引导孩子进行功能模块的分解?在讲解知识点的时候,有没有引导孩子举一反三,自己去发现一些规律?在孩子的程序没有实现预期结果的时候,有没有引导孩子自己找出问题?家长也可以观察,孩子学完一段时间后,能不能利用学过的知识做出自己的作品。很多在乐高机构上课的孩子,跟着老师可以搭出很厉害的东西,但是让他们自己独立搭就抓瞎了,学编程可能也会遇到同样的问题。

我认为这可能还是老师过于重视拿作品说话:因为作品是可以给家长看到产出的,所以手把手带着孩子做出来就好了,并没有花心思去让孩子理解里面的一些规律,这样的教法可能就值得商榷了。我们做父母的看待编程,不应该仅仅认为它只是一种具体的技能。编程是一种解决问题的思维方式,以及它背后所包含的那些基本原理。我的总结少儿编程机构的火热,我认为是一件好事,可以提供给孩子们更多的选择。

但另一方面,我们要记住资本永远是疯狂的,如今的儿童编程领域充斥着各种热钱,在这样的狂热中,希望这篇指南能帮你理性地做出判断和规划。

UUID: f0b3bb81-3bd3-4a64-abfc-ec9b76ca8da2

原始文件名: /home/andie/dev/tudou/annot/AI语料库-20240917-V2/AI语料库/果壳公众号-pdf2txt/2019/2019-08-09_5000字干货:关于让孩子学编程的深度思考和学习规划.txt

是否为广告: 否

处理费用: 0.0119 元