幻灯二

继奥数之后,家长们又押宝在少儿编程上了

这两天知乎上有个热门话题,在2020世界机器人大赛总决赛上,一群幼儿园的小朋友走上了领奖台。

机器人教育如火如荼,各种线上编程的广告随处可见。但是幼儿园就开始学编程打比赛真的能让孩子真正理解编程吗?你怎么看?你会让孩子幼儿园就开始学编程吗?

编程1.jpg

我和我老公都是计算机专业的,我们的孩子编程是肯定要学的(同样是特长,一台钢琴好几万,一台电脑才多少钱,老师还是免费的),但不会在幼儿园阶段学。不止我们家是这样打算的,据我观察了解,我们身边的大学同学,没有一个是在孩子三年级以前就让孩子学编程的。

01 我自己学编程的经历

我们大一刚进校,就开了一门C++程序设计的课,老师一上来只简单介绍了一下面向对象程序设计,然后就开始教怎么编程。

一学期下来,这门课我是听得云里雾里,但老师讲的那些语法指令、各种排序方法、什么迭代递归遍历等等我还是都记住了,期末考试还考了90分。然而只有我自己知道,我对编程依然是一窍不通,只能机械地做题,放到生活中完全不能解决实际问题。

为了自学,我在网上找了麻省理工学院的编程公开课来看。课程一开始人家的老师就表示:我们这门课的主旨是在培养编程思维,编程语言只是帮助我们形成这种思维的工具。

这句话让我瞬间知道了自己的问题之所在,也是现在很多少儿编程教育的症结:本末倒置。

编程本质上一种解决问题的手段,编程语言只是工具。要解决问题,最重要的是你要先有一个解决问题的思路,然后在通过手里的工具去实现。而我们在学习过程中,关注更多的反而是如何使用工具。

编程2.png

02 知识储备、思维训练,远比一上来就学编程重要

现在很多机构宣传的都是:编程有助于培养逻辑思维。然而事实却是,孩子的逻辑思维要达到一定的水平,才能真正懂得怎么去编程。

对于大多数5、6岁的孩子来说,逻辑思维还处于启蒙阶段,因为…所以、虽然…但是、不但…而且、与其…不如、要么…要么、不是…就是、如果…那么、只有…才、无论…都、即使…也,这些逻辑至少搞清楚了,才谈得上把这些逻辑关系转换成程序语言吧。

那么能不能通过学习编程去形成或是提高各种思维能力呢?

当然能。我们班当时就有几个贫困地区来的同学,上大学前连电脑都没摸过。同样的老师教,我只会照着书编程,人家就可以从大段大段的代码中悟出理论,从而形成自己的编程思维。但幼儿园的孩子有这个本事吗?

或许你见过这种传统玩具,九连环

这个玩具看似复杂,但只要是懂编程的人,一上手就能马上反应过来:它的核心就是编程中最经典、最基础的算法之一——递归算法。

编程3.jpg
你让那些学过所谓编程的幼儿园小朋友来玩九连环,他们能不能通过玩九连环这个实际操作,上升到理论层面,悟出“这原来是个递归算法”,我深表怀疑。

就算直接告诉他们用递归的方法来解九连环,我觉得他们都不一定能理解。还有这种类似的通过预设程序来操控机器人绕过障碍的玩具,经常看到小孩在玩,价格还不菲。

编程4.jpg

编程5.jpg

(类似于这样)

这种游戏你一眼就能看到障碍物在哪里,要怎么避开,提前设计好路线。如果你用个盒子把所有路线罩住,让孩子再来编个程,让机器人盲走试试。

面对这样一个全新的任务,能不能想到把这个任务拆解成一个个的小问题(中途遇到障碍怎么解决、走到三岔路口怎么选择、走错路了怎么办……),然后再逐一解决每一个小问题。这种提出问题并解决问题的能力,我觉得也超出了普通幼儿园孩子的能力。

说了这么多,其实我想表达的中心思想就是:对幼儿园阶段的孩子来说,基础知识的储备、思维层面上的训练,比一上来就学习各种编程规则更加重要。

03 如何为孩子的编程做准备

我们身边那些大学同学,在孩子的教育过程中虽然不太紧张编程,但普遍非常紧张孩子的数学和英语,这两门功课才是编程的基础。

程序设计语言可以等孩子高年级了,找个暑假集中培训一下,但数学和英语的基础必须从小打牢。数学不用说了,是整个计算机这门学科的基础,计算机学到头其实就是在学数学,我老公读博的时候基本上就是揪着傅里叶变换、黎曼数学、泰勒方程做文章。

还有英语,主流的编程环境都是英文的,我身边很多程序员同学都非常排斥中文版scratch,觉得这是在影响孩子编程的语感(是的,程序设计语言也是要讲语感的)。

编程6.jpg

除此之外,还有编程思维的训练

如果爸爸妈妈们有让孩子学习编程的打算,自己在这方面又比较小白,个人建议还是要适当学习了解一下,因为思维这个东西主要还是靠潜移默化的影响,只有你了解了这种思维的精髓,才能更好地去影响孩子。

推荐一本我自己看过觉得不错、准备今后介绍给孩子看的书。

这本书算是一本编程科普书,着重讲思维,又融合了一些计算机原理、数据结构方面的知识,整本书的编排还是很有逻辑的,而且浅显易懂、字大图多,很轻松就翻完了。

编程7.jpg

(《写给所有人的编程思维》,吉姆·克里斯蒂安 著)

我女儿现在5岁半,生活中我俩很喜欢玩桌游,玩桌游就是一种非常好的培养孩子编程思维的方式。桌游的游戏规则无非就是随机、判断、循环、计算等等,一步一步地组合起来,相当在孩子脑海中画了一张程序流程图。

以飞行棋为例:

飞行棋的规则就是:第一回合每人扔三次,点数必须要扔到6才能起飞。起飞以后,点数扔到几就走几步。

编程8.jpg

而这个规则用编程思维拆分出来就是。

  1. 玩家1扔骰子,生成一个随机数。(孩子扔骰子,扔到一个3)

  2. 判断扔到的数是否等于6。(不等于)

  3. 再循环一次。(孩子继续扔,扔到6)。

  4. 判断扔到的数是否等于6。(等于)

  5. 玩家1的棋子起飞。循环结束,进入下一条指令。

  6. 随机数生成。(孩子扔骰子,扔到5)

  7. 起飞的棋子前进5步。

  8. 玩家1的回合结束,返回大循环。

  9. 玩家2开始扔骰子。

    ……

整个过程,孩子边玩我边说,她的每一个动作我都帮她转换成一个可执行的指令,我觉得比直接学习编程对孩子更有意义。

除此之外,编程的本质是解决问题,所以父母在遇到一些问题的时候,可以把自己解决问题的整个过程:如何想的、如何做的,用孩子能懂的语言,条理清晰地展示给孩子。

比如前几天,我和老公带女儿坐BRT。上车的时候,我突然想到一个问题:BRT司机是怎么做到每次进站,都能正好把车门对准屏蔽门的?

编程10.jpg

(类似于这样)

女儿表示想不出来答案。于是我开始跟她爸讨论。

我说:会不会有个类似倒车雷达的东西,快接近站台的时候显示一种颜色,比如黄色,司机看到后开始踩刹车减速。然后越来越近,当显示的颜色变成比如绿色的时候,司机就把刹车踩死,让车刚好停在绿色区域内,车门就正好对准屏蔽门了。

女儿听了连连点头,表示我说得对。

老公说:要验证这个想法,进站的时候直接看司机的仪表盘就知道了。如果有提示,肯定会显示在仪表盘上。

于是女儿挤到前面去观察了半天,最后遗憾地告诉我们:司机的仪表盘上并没有看到类似倒车雷达那种能变颜色的提示。

编程原10.jpg

我的猜想宣告失败,老公说:我猜会不会像停车划线那样,站台上有什么标线,提示司机要把车停到标线上。

下车后,女儿在站台上跑来跑去,发现地上确实画了一些奇怪的线。

编程11.jpg

第二天,我专门带她去车站验证爸爸的猜想。我们连续观察了5辆BRT,发现确实司机每次都会把车头停在标线的位置,这样车门就正好对准屏蔽门。

编程12.jpg

我女儿对这个发现非常兴奋,然后马上进行了类推:地铁进站是不是也采用的这种方式?我们哪天再去地铁站看看?

这种提出问题、做出假设分析、再去验证假设的过程,既是一种很好的亲子互动,也是在教孩子遇到问题时,如何去解决这些问题。

最后有几个共性问题想再说明一下。

首先是关于“小学三年级以前不学编程”的疑问。

这其实并不是什么规则或是建议,只是我身边某个特定圈子里的现象而已,有的是觉得孩子1、2年级功课更重要、有的是想越过scratch直接上c++或者python……孩子的成长有快有慢、能力有高有低,并没有什么一刀切的规则。

其次,虽然幼儿园孩子学编程性价比不高,但养育孩子也不是事事都讲性价比的。在经济和时间都宽裕的情况下,如果孩子就是对编程对机器人很感兴趣,或是从编程里面能获得乐趣,学学也无妨。

如果学,家长可以帮孩子加强基础方面的训练,让孩子能够更快更好地领悟到编程的本质。
如果不学,也完全没有必要焦虑。磨刀不误砍柴工,现在小学数学的难度已经很大了,能把课堂上的知识点吃透,就是最好的逻辑训练,就是为编程打下的最坚实的基础。

最后是关于为什么要学编程的疑问。

如果把特长的培养作为一项教育投资,我个人认为编程属于低投入低风险型的。相比艺体类的特长,学习编程所需的费用和精力,普通家庭一般都能承受、学习的过程和孩子本身的课业兼容性也更大。

学习的结果,好的可以通过竞赛直通清北,一般的可以作为选择计算机专业、进入IT行业的铺垫,再不济也能多一项工作、生活中经常能用到的专业技能。


您可能还会对下面的文章感兴趣:

内容页广告位一