(图片:Pixabay)
随着人工智能的快速崛起,很多科幻电影里面的场景正在离我们的生活越来越近,智能家居,无人驾驶车辆,人工智能医疗等等正在变成触手可及的现实。作为支撑这些技术的核心技能,编程正在被更多的人谈及和关注,越来越多的家长也开始关心是否需要让自己的孩子学习编程这样的问题。
“如果我的孩子并不一定要成为一个程序员,那么为什么需要学习编程呢?”这是家长经常来问我们的问题。通常我会问家长:“你送孩子去学钢琴,是希望孩子成为职业钢琴家吗?送孩子去学围棋,是希望孩子成为职业棋手吗?”通常家长的回答都是:“不是的,我们只是希望孩子能获得一些音乐的启蒙,培养一个爱好,训练一下孩子的思维,能让孩子坐得住”。儿童编程学习也是一样的,并不是为了孩子将来一定从事计算机行业做准备的。
诚然会有少数的孩子会在编程学习过程中展现出不同寻常的天赋,在这条道路上找到了自己的兴趣所在,并最终选择了计算机科学领域作为自己的职业方向。这样的例子包括比尔·盖茨,马克·扎克伯格等等,他们都是在少年时期即对编程产生浓厚兴趣,并展现出过人的天赋,这也成为他们之后创立各自的企业并取得巨大成功的一个非常重要的起点。
不过对于绝大多数孩子来说,情况也许并不是这样。他们学习编程并非一定要成为程序员,更不一定要为将来创业做准备,但是他们同样能从编程学习中获益,获得多方面的思维训练。而这些方面的训练,正是目前国内K12教育体系中比较缺乏的东西。从这样意义出发,我们喜欢将编程学习称之为一个思维训练的道场。为什么这样说呢?和一些棋类项目类似,编程所在的环境是一个人造的,边界清晰,自洽的环境,这个环境有自己的规则,这些规则并不是非常复杂,但是却可以从中变幻出无穷无尽的可能,你的思维能力的边界就是这个世界的边界。每个学生都可以在在这个思维的道场中不断练习,不断磨练,提高自己的思维段位,有一天可以像《Matrix》里面的Neo一样说:“I know Kung Fu!”
具体说来,通过学习编程,除了通常被提及的一些如促进学科知识学习,了解计算机如何工作等知识层面的益处之外,在更深层次的思维和学习心理方面,孩子至少可以在这几个方面受益:
1.逻辑思维的训练
逻辑思维在编程学习中非常重要。逻辑是程序的基石,逻辑是程序的灵魂。遗憾的是在目前国内的K12教学内容当中,逻辑思维方面的训练是非常缺乏的。
这方面的缺失带来很多问题,比如学生在写作中经常会犯基本的逻辑错误,在与别人的辩论中缺乏足够的逻辑能力来支撑自己的论点等等。这些缺陷的影响比我们想象的更加深远,可能会因为这个影响到留学申请 Essay 的质量,也可能会导致将来在职场竞争中受挫。编程学习是逻辑思维训练的一个非常有效的方式,因为在这个人造的,边界清晰,自洽的环境中,逻辑的错误导致的结果非常清晰:就是程序没有按照正确的方式运行。这会给学生一个即时的反馈,学生会自然而然的想办法修正自己的逻辑错误。通过这样的反复练习和修正,学生的逻辑思维能力可以得到明显的提升。
2.语言学习能力的训练
没错,编程语言也是一门语言,不过相对于自然语言来说,它的规则要简单很多,语法也严格很多。我们知道一门自然语言的学习周期是很长的,而编程语言这些相对简单并且严格的语法规则,对孩子们来说,更像是在学习一门简化的新语言,一门可以与机器交流的语言。而且能迅速获得反馈和交流的乐趣,因为可以让计算机听自己指挥,看到自己的程序实现了自己想要的效果。这其实是一个非常神奇的体验,有些像电影《降临》中 Louise 通过学习外星生物的语言,理解他们的意图并与之交流的那种体验。通过学习这门新的语言,孩子们多了一种自我表达的手段,不但可以让计算机,机器人听自己的指挥,让自己的创造力变成现实,甚至是解决实际的问题,还可以利用互联网的力量,通过分享,发布自己的程序和作品,让成千上万的人看到。
3.敢于试错的勇气
在编程世界里面,犯错是常态。可以说编程就是一个不断试错,不断 Debug ,最后终于让程序按照自己的设想运行的过程。相对于其他学科而言,编程的试错,修正,调试周期是非常短的,也就意味着试错成本是非常低的,低到学生们可能都意识不到自己是在不断试错。这样孩子们在潜移默化中内心变的更加强大,能更加平和的面对挫折和失败,并且能够不断尝试各种可能,最终解决问题。这样的学习过程和应试教育的学习模式颇有不同,应试教育从很多层面上来说是不鼓励试错的,因为试错的成本很高,这样容易导致学生的心理脆弱,不能正确的面对和处理挫折和失败。相反编程学习的这种学习过程更接近成年后在现实社会中学习和成长的方式,可以帮助学生在儿童时期就培养起良好的学习心理状态和习惯,而这些是实现终身学习的必备技能。
4.专注力
编程学习是一个要求非常专注的学习过程,这对较低年龄的孩子来说可能是一个挑战。不过编程学习有一个有别于其他学科的巨大优势就是相对容易实现游戏化学习。通过类似游戏的角色代入,关卡设置,勋章奖励等手段,可以让学生更加沉浸在编程学习情境之中,更加专注的学习,无形当中提升了学生的学习专注力。所以对儿童编程学习而言,不论是由教师来现场授课,还是通过软件工具来进行引导式学习,最好的教学方式就是游戏化教学方式。
目前市场上有很多儿童编程学习产品,有的是采用图形化编程,即学生在屏幕上拖拽模块完成程序;有的是代码式编程,学生需要输入代码。究竟选择哪一种方式跟孩子的年龄,与学生的认知能力有关。通常认为,图形话编程更适合较低年龄的学生,代码编程更适合年龄稍大的学生。其实不管是图形话编程还是代码编程学习,我们认为更重要的是课程设置的方式。目前市场上有些机构的儿童编程课程设置,采用的是和成人学习编程类似的设置,比如先学语法,再学数据结构等等,我们认为这种简单的将成人课程移植到儿童编程领域的方法,并不符合儿童的认知能力和学习方式,效果不会很好。
前面提到游戏化学习对于编程学习来说,是非常适合的方式。这种方式符合儿童青少年的认知能力,对学生有很大的吸引力。那么一款儿童编程学习软件,或APP的质量,很大程度上取决于他们游戏化设计的是否合理,是否有趣,对儿童有足够的吸引力,并且有足够丰富的关卡和编程知识作为内容支持。
我们体验试用了多款儿童编程产品,从游戏化设计是否合理有趣,内容是否充实丰富,社区是否活跃等几个维度,精心挑选了几款高质量的游戏化编程学习产品,给各位家长和学生作为参考。
Tynker(tynker)
(图片:Tynker)
这家总部位于美国加州的公司是最早开始做儿童游戏化编程的企业之一。全球用户超过四千万,有六万所学校是他们的客户。他们最大的优势是产品的种类非常丰富,有图形化拖拽式编程,也有代码编程。与 scratch 等只提供了学习工具软件的产品不同, Tynker 所有的课程设置都以游戏化方式设计,学生在游戏设置的环境中,通过闯关的方式,学习编程知识,课程还包括内置的伴随式帮助系统,给学生提供帮助和提示。同时 Tynker 还在不断的开发新的课程,如机器人编程,无人机编程,基于我的世界(Minecraft)的编程等。对于高年级的学生, tynker 也提供游戏化学习方式的 javascript 的代码编程课程。
对于个人用户,Tynker 收取96美元的年费。
CodeCombat(codecombat)
(图片:CodeCombat)
CodeCombat是硅谷著名天使投资机构 Y Combinator 孵化的一家游戏化编程技术公司。课程内容都是以游戏闯关的形式呈现,目前支持基于 Coffeescript 的代码编程。 Coffeescript 是一种类似于页面前端编程语言 Javascript 的编程语言,可以编译成 Javascript 运行。工作界面上还提供伴随式的帮助系统,引导学生完成闯关任务。
CodeCombat的基本功能的代码是开源的,这意味着第三方提供商可以使用他们的代码来提供同样的课程服务。高级课程部分是收费课程。目前共有超过100小时的课程。收费课程对个人用户的价格是每月9.99美元。
CodeMonkey(playcodemonkey)
(图片:CodeMonkey)
CodeMonkey是以色列创业公司开发的游戏化编程学习网站,在全球有超过250万用户。与Tynker和 CodeCombat 类似,也是采用游戏闯关的形式。采用的编程语言也是 CoffeeScript 。目前有超过300个关卡。 CodeMonkey 的特点是界面非常简洁,每一个编程目标都非常清晰,并提供详细的帮助和在线指导。这样基本上学生可以自主学习,不需要教师的指导。对个人用户,收取39美元的年费。
Hopscotch(gethopscotch)
(图片:Gethopscptch)
Hopscotch是一款支持 iPhone 和 iPad 的应用。功能主要包括支持拖拽式的图形化编程,生成的结果是一个可以玩的游戏。就是说学生可以通过编程,制作出自己的游戏,邀请自己的朋友或家长来玩自己的游戏。除了编程界面以外,还包括绘画,对战游戏等功能。对个人用户,收取6.67美元的月费。
Code(code)
(图片:Code)
code是一个非盈利机构联合数家科技公司联合推出的免费编程学习网站。课程也是以游戏化闯关的方式进行,支持图形化编程。题材都是基于孩子们熟悉的比如冰雪奇缘,植物僵尸,我的世界等卡通形象。Code 曾经发起全球超过2亿人参与的“编程一小时(Hour of Code)”活动。
So start coding today!
【作者简介】王川——杨梅客教育联合创始人。清华大学工学学士,美国伊利诺伊⼤学计算机科学硕⼠。硅⾕上市公司 Infoblox (NYSE:BLOX)早期团队成员。超过15年软件开发和团队管理经验。2015年回国创办杨梅客教育,专注儿童青少年STEAM教育。
,