比较和评测几种儿童编程教学游戏

网友投稿 2018-04-06 17:32

上一篇文章中(从娃娃抓起,五岁就可以学编程)我介绍了codeSpark学院,其中顺带提到了另外几款编程教学游戏Hopscotch、Scratch和Swift Playgrounds,这次我来做一个详细的对比,讲讲这几款游戏分别适合多大的孩子,各有什么优点和缺点。

适合四到六岁儿童的codeSpark学院和ScratchJr

ScratchJr和Scratch都是MIT Media Lab开发的,ScratchJr是iOS和安卓上的App,适合低龄儿童,而Scratch是在电脑上玩的,功能复杂得多,适合高年级小学生和初中生。

codeSpark学院主是解谜闯关模式,自制小游戏的功能目前比较弱(还在持续开发迭代中),而ScratchJr是专门用来自制小游戏的,所以正好互补,这两个游戏可以一起拿给孩子玩。

其实这个年龄段的孩子驾驭不了太复杂的逻辑,也做不出什么复杂的游戏来,所以ScratchJr的功能是比较简单甚至简陋的,因而也不需要任何语音或文字讲解,试一试就知道怎么玩了。比如下面这个自制小游戏:

https://cdn.china-scratch.com/timg/180408/1I20M237-0.jpg

小马被点击时就叫一声同时晃两下,小猪和小鸡被点击时也有各自的动作,就是这么个游戏。尽管简单,孩子也能从中体会到一些编程思维,比如:

  • 面向对象——每个动物有各自的代码

  • 事件响应——每个动物可以有好几段代码,每段代码都是由某个事件触发的,比如“被点击”就是一个事件

由于只能制作很简单的游戏,孩子可能很快就玩够了,相比之下解谜闯关可能更有意思一些。所以我觉得孩子从codeSpark学院能学到更多,ScratchJr只能作为一点补充。关于codeSpark学院的详细介绍请参考我的上一篇文章(从娃娃抓起,五岁就可以学编程)。

适合七到十岁儿童的Hopscotch和Scratch

Hopscotch和Scratch都是让孩子通过自制小游戏来学习编程。这个年龄段的孩子应该能够管理一定的复杂性,Hopscotch和Scratch提供的功能单元远比ScratchJr丰富得多,孩子可以更自由地发挥想象力做出各式各样的小游戏。

Hopscotch在苹果的App Store下载,iPhone或iPad都可以。下图是Hopscotch的编程界面:

https://cdn.china-scratch.com/timg/180408/1I20S5D-1.jpg

Scratch是网页版的,在网站上玩,地址是 https://scratch.mit.edu/ 。下图是Scratch的编程界面:

https://cdn.china-scratch.com/timg/180408/1I2096294-2.jpg

相比Scratch,我更喜欢Hopscotch,因为:

  1. Scratch是PC时代的产品,Hopscotch是移动互联网时代的产品,因而Scratch的界面看起来比较土而且严肃,更像个编程开发环境而不像个游戏,Hopscotch更有亲和力。

  2. Hopscotch可以利用移动设备特有的功能做出交互性更强的小游戏,比如可以识别iPad的倾斜角度和触摸屏手势操作。Scratch只支持鼠标键盘交互。

  3. Hopscotch内置了一系列小游戏的制作教程,可以边看视频讲解边跟着做,把教程全都动手做一遍,也就从入门到精通了。Scratch只有文字教程,需要一定的阅读能力,因而对孩子不够友好,不过优酷、腾讯等视频网站都有别人录制的Scratch视频教程,弥补了官网的不足。

Hopscotch的缺点我认为主要是以下几个:

  1. 只有iOS App,没有安卓App。

  2. 汉化得不彻底。界面有中文的,但视频教程中的语音仍然是英文。

  3. 不便于调试,不像Scratch可以很方便地随时查看各变量的值。

  4. 目前还不支持数组。用户的呼声很高,或许以后会开发出来。

Scratch由于功能更复杂,可以做出比Hopscotch复杂得多的游戏,但我不认为这是什么优点,我想说:Scratch是否沿着这个方向走得太远了?

首先,用拖曳的方式搭出下图这样复杂的代码,还能说它比真正的编程语言写出来的代码可读性更强吗?

https://cdn.china-scratch.com/timg/180408/1I2094144-3.jpg

其次,学编程是否应该像学琴、学画画一样,无论把技巧练得多纯熟也只是为了自娱自乐?不,学编程应该是为了解决实际问题的:

  1. 写个程序让计算机帮忙做一些简单重复的工作,自己就可以腾出时间去做更有创造性的事情。

  2. 写个对很多人都有用的程序,让尽可能多的人用起来,一个程序被越多人使用就越有价值。

低龄儿童可能本来就没什么解决实际问题的需求,唯一的需求就是好玩,只有“好玩”才能激发好奇心和学习兴趣,学会之后,写程序也只是为了“更好玩”。

但我认为高年级的孩子就不应该继续沿着这个方向越走越远了。在掌握了Hopscotch或Scratch之后,应该早点上手真正的编程语言,而不是继续呆在Hopscotch或Scratch的环境中,在这样的环境中无论堆砌出多么漂亮的程序,别人必须使用同样的环境才能运行,可是除了学生有几个人在用这些环境呢?所以这样的程序价值就不大,仅供自娱自乐。

与之相对的是,网页程序可以直接在手机或电脑的浏览器中打开,App可以直接在手机或Pad上安装运行,这样的程序无论是工具还是游戏,都比Hopscotch或Scratch程序有价值得多。

可以真刀真枪写代码的Swift Playgrounds

Swift Playgrounds是苹果自家的App(所以只有iOS版没有安卓版),是一个开放平台,任何开发者都可以在这个平台上发布自己做的编程教程。一个明显的局限性是:只支持Swift编程语言,这种编程语言的优点是比较适合初学者(语法清晰、强类型),缺点是除了开发macOS/iOS App之外没有其它用武之地。

苹果自己发布的Learn to Code教程如下图所示,适合从零基础开始一步一步学习Swift编程语言。

https://cdn.china-scratch.com/timg/180408/1I2105350-4.jpg

学生可以写简单的代码控制运行环境中的小人移动和收集宝石。由于讲解是纯文字的,需要一定的阅读能力,只适合高年级的学生。

Swift Playgrounds跟前面的Hopscotch、Scratch有一个重要的区别:跟着教程学会使用Hopscotch、Scratch之后,就可以自由编写自己的小游戏了;而Swift Playgrounds是专门用来学习教程的,不是用来自由编程的,自己编写一个教程的难度等同于开发一个App,需要专业的开发者来做。

比如上面的Learn to Code教程,学生只是写几句简单的“moveForward()、collectGem()”来控制小人,而整个游戏场景的渲染、以及学生调用的那几个函数的实现代码是这个教程的开发者写的,其实在“高级”菜单中就可以看见这些代码,一看就明白初学者是写不了的:

https://cdn.china-scratch.com/timg/180408/1I2113E6-5.jpg

不过,这也为教程的多样性提供了无限丰富的可能。很多第三方开发者做出了形形色色的教程,比如Sphero提供了控制R2-D2玩具的教程,乐高提供了控制乐高机器人的教程,使得学生编写的代码不仅能在iPad上运行,还能控制硬件。

https://cdn.china-scratch.com/timg/180408/1I2125920-6.jpg

https://cdn.china-scratch.com/timg/180408/1I21342R-7.jpg

https://cdn.china-scratch.com/timg/180408/1I2145K2-8.jpg

https://cdn.china-scratch.com/timg/180408/1I215G21-9.jpg

有人搜集整理了一个教程列表:https://github.com/uraimo/Awesome-Swift-Playgrounds ,内容涉及算法、数据结构等方方面面,任何计算机系的课程甚至数学课,都可以被精心设计成教程,学生下载到这些教程后,可以上传到自己的iCloud Drive,然后在Swift Playgrounds里打开,跟着学习。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com