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

— Tips:点击上方【憨爸在美国】查看往期内容 —

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

b83d98afec4e56e2233570149d686d1c.jpeg

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

1

编程值得学吗?

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

2

怎么学编程呢?

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

 

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

 

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

 

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

apple_num = 1 + 2;

 

用Python的话,它的格式是:

apple_num = 1 + 2

 

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

 

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

895f77e8e90041cd40596b9db194248f.jpeg

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

3

儿童怎么学编程?

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

 

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

3fb8f0f001c67355b1bc4547f9955f14.jpeg

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

4ee441508deeb8c3a13340ef780722dd.jpeg

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

fbba84e405d3842fba90c506065e1124.jpeg

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

03b14819339bef4a016e1e57bce10a8f.gif

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

 

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

86c3455e74eab77ce3f004701287a045.gif

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

 

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

 

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

63a0114cddb3b42b8d64f8562a60ab1a.jpeg

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

 

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

d2350ddbfc9393a89f20c904f64092b2.gif

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

相关阅读

ps. 回复 自然拼读 ,憨爸分享给您欧美最有趣的几部自然拼读动画片

憨爸的新书《硅谷工程师爸爸超强思维训练课》在当当网正在火热销售中,点击左下角 阅读原文 可以购买!

697b4f18a142417589eab4b63217bb7a.jpeg

憨爸在美国

硅谷工程师爸爸,分享美式教育理念和资源,专注于英语、数学、科学启蒙,一定让你脑洞大开哟!

c896d8a5afa9f1ab9aa395d235e938df.jpeg

公号ID:hanhanusa

微博:@憨爸在美国

发表评论

您的电子邮箱地址不会被公开。