写了20年程序后,我推荐儿童编程应该这样学

admin 发表于 2018-08-08 11:18

周一发的文章里,有妈妈请我写个编程的专题,

昨天为这篇文章我酝酿了一天,终于幸不辱命,今天就给大家捋一捋,编程到底是否值得给孩子学?又该怎么学?

1

编程值得学吗?

很多父母对编程有误解,她们认为给孩子学编程,将来就是让孩子做一个程序员,可如果不想让孩子做程序员的话,那么学习编程也没啥必要了?

这个理论其实是不对的,学编程和当一名程序员没有任何关系,编程学的是一种思维方式,它对孩子的学习以及创造力帮助都很大。

举个简单的例子,比如我们编个程序计算“1+2+3+…+100”。这个程序有两种设计方法:

  • 一种是通过循环,让计算机先计算1+2,然后计算+3,接着+4、+5 … 就这样一直到 +100,这样做99次加法就能得到结果了,这是一种思路。

  • 但是还有另外一种思路,这是利用高斯算法,因为1+100 = 2+99 = 3+98,这些结果都等于101,总共有50对101,那么计算机只需要计算50x101就能得到最后的结果。

我们比较一下两者的过程,第一种方法要计算99次,而第二种方法只需要计算1次,你觉得哪个方法更快更好呢?显然是后者。

因此,学编程的目的,不是让你计算出结果,而是要你用最优的方法得到结果。这才是学习编程的精髓,要知道我们计算机的处理能力是有限的,而数据是海量的,我们需要把计算机的时间节省下来,做更多的事情。所以我说,学编程的核心是算法,是孩子的编程思维。你会发现,其实编程和数学是息息相关的,想要编程学得好,一定得有很好的数学功底才行,就像上面举例的那个高斯算法,这本身就是数学里面的一个经典应用。

这就是我一定要给憨憨学编程的原因,会编程的孩子,他们的思维都很严谨、有条理,而且能找到最优的解决方法,这对孩子未来学业、工作帮助都是很大的!

前几天同学聚会,大家讨论到当年所选专业的时候,我就说,我很庆幸当年报了计算机这个专业,这么多年工作下来,我就能感觉到我的思维能力比很多人要强。像我写公号,某种意义上就是用编程思维来写的,一步一步层层递进,虽然文笔一般,但胜在条理很清晰,这就是源于编程对我的帮助!

2

怎么学编程呢?

现在市面上的编程语言那么多,什么C/C++、Java、Python、Perl等等,孩子该从何入手呢?

其实编程语言是其次,编程思维是关键,所有的语言都只是一个外壳,也就是每种语言的语法有点不同,但骨子里的编程思维都是一样一样的!

举个简单例子,比如说用编程来解决“1个苹果加上2个苹果等于几个苹果”的问题。

用C/C++或者Java的话,它的格式是:

apple_num = 1 + 2;

用Python的话,它的格式是:

apple_num = 1 + 2

乍一看两段编程语句是一样的,但细看之下两个程序设计语言的语法还是有所不同,前者后面要有一个“;”,后者却没有,但是两者骨子里的逻辑是一样的。这就是我说的编程语言的语法会有所不同,但是程序背后的思维逻辑才是关键,孩子得知道把实际的应用用程序的方式给展现出来。

所以学编程,语言是其次,首先需要掌握的是编程思维。这就是为什么斯坦福天才儿童计划里的数学课程,从一年级开始就教孩子编程思维,他们的学习界面就是下面这张图,需要在右边方框里定义车子的行动路线,然后左边的车子就会根据孩子制定的行动路线来行动。

关于编程思维,这个很复杂,我以后要详细说说,它的基本思想就是孩子得学会编写程序的执行路线,上面斯坦福天才计划的那个程序很简答,就是一些顺序执行,但实际遇到的问题会复杂许多,还会夹杂很多条件语句、循环语句等等复杂的逻辑。但是当孩子学会编程思维后,那么他们将来无论用什么编程语言,比如C、Python之类的就特别简单,相当于骨架已经有了,只是外面套一件什么样的衣服问题。

3

儿童怎么学编程?

现在主流的儿童学编程的方法是用一种拖拽式的编程语言。什么是拖拽式呢?就是操作界面有很多指令的方框,只要将这些指令框拖到主界面就好,并且对指令框做一些参数设置,那么一个程序就编好了。这种拖拽式的编程语言有很多种,比如Scratch、Hopscotch以及国内的编程猫等等,包括LEGO的高端机器人EV3所用的LabView也是基于这种拖拽式的编程语言。

下面这张图就是Scratch的一个编程界面,你看屏幕的左边没有什么编程语句,都是拖拽的一个个方框,用这些方框堆砌成一个完整的程序逻辑,而屏幕的右边就是程序的运行结果。

下面这张图是我给憨憨玩的Hopscotch的编程界面,也是拖拽的一个个方框,

而下面这张图是我教憨憨的LEGO EV3编程界面,也是拖拽式的!

程序编好后可以传入乐高机器人的控制器,这样下图的机器人就能按照你程序的指示来行动了,

Scratch这类拖拽式编程语言的好处就是孩子不需要背诵程序的各种命令,不需要纠结于程序的语法,只需要在方框里设置逻辑和参数就好了,对孩子来说超级简单。

你看下面这个小游戏,这是憨憨第一次玩Hopscotch的时候,我教他做的一个Pokemon(宠物精灵)的小游戏,可以通过扔球来抓住小精灵,

所以你可以看到,这种拖拽式的游戏对孩子上手很快的,第一次接触就能编写一个小游戏出来了!

但是它们也有一个很大的缺陷,就是没法编写很复杂的程序,如果程序一复杂,满屏拖拽的方框看起来会很头晕。因此当孩子Scratch学到一定程度,就可以转为专业的编程语言了,这时候首推Python语言。

下面这张图就是Python的运行界面,

你看Python都是一条条需要手动输入的语句,整个程序就会复杂许多,但很多专业的程序,上至网站,下至机器人都可以用Python来编写。而且Python的语法格式相对于C/C++/Java来说会简单不少,孩子入门起来也比较方便的!

一般来说,Scratch适合5~12岁的孩子,而Python适合12岁以上的孩子。

上面这些就是我对编程的一些理解,以我20年的编程经验来看,编程对开拓孩子思维是非常非常有好处的,而且很锻炼他们的创造力,也是玩机器人的基础,如果条件允许的情况下,强烈建议带孩子玩一玩的!


后记,小编朋友研发了一个游戏化的少儿编程在线课程(5-12岁),游戏化教学结合scratch(一款在线少儿编程工具,类似乐高的积木拼搭),我家娃娃学了几次课,非常喜欢(超预期),16次课才200多块钱,对锻炼孩子的思维能力和动手动力很有帮助。

感兴趣的朋友可以扫描二维码,关注一下,或微信搜索“大耳猴少儿编程”