奥数之后,这届家长又把宝押在少儿编程了

发布日期:2020-12-09 11:57 本文摘要:原标题:奥数之后,这届家长又把宝押在少儿编程了 文 小尾巴狼 知乎作者,我们已获其授权 这两天知乎上有个热门线世界机器人大赛总决赛上,一群幼儿园的小朋友走上了领奖台。 机器人教育如火如荼,各种线上编程的广告随处可见。但是 幼儿园就开始学编程打比

  原标题:奥数之后,这届家长又把宝押在少儿编程了

  文 小尾巴狼

  知乎作者,我们已获其授权

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

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

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

  我自己学编程的经历

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

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

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

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

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

  知识储备、思维训练,

  远比一上来就学编程重要

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

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

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

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

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

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

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

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

  (类似于这样)

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

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

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

  如何为孩子的编程做准备

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

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

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

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

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

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

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

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

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

  以飞行棋为例:

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

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

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

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

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

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

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

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

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

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

  9. 玩家2开始扔骰子。

  ……

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

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

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

  (类似于这样)

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

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