“编码俱乐部”里的孩子们
“阿尔,从没见过这么有趣的游戏!你要不要来玩玩?”加布里埃正在制作一个水果机视频游戏。“哦,我的是一个飞机游戏,因为我想要做一名飞行员。”阿尔转动了一下转椅答了一下,然后转身继续在屏幕前操作起来。
这里是伦敦市中心的一个课外活动俱乐部,6名9~10岁的孩子都全神贯注地在笔记本电脑前忙碌着,他们熟练地操纵着屏幕上的代码块,将它们安排在合适的位置上,让那些色彩明亮的卡通人物在屏幕上穿梭。
边上的伊米蒂亚正在设计的“火箭发射”程序似乎遇到了一些小麻烦,发射出去之后没有出现预料中耀眼的烟花效果,而是变成了另一个火箭,他皱起眉头,左右看看,似乎想要寻求帮助。
但是在这个“编码俱乐部”里,一向都鼓励孩子们自己动手解决问题,经过多次失败的尝试之后,他发现只要从程序的其他部分复制一个爆炸循环子程序过来就可以了,“我成功了!”他高兴地大喊起来。
和大多数学龄儿童不同的是,这些不同寻常的孩子们正在开创新一代小小编程员之先河。不久前,英国开始了一项前所未有的大规模实验,这些即将开学的孩子们的课程表上将会增加一门新的课程——计算机编程。5~11岁的学童将学习掌握的“现代语言”,不是意大利语、法语或德语,而是计算机编程语言。计算机编程能力将和读、写、算三种能力一起,成为21世纪儿童教育的第四种重要能力。新一代小小程序员正在成长起来。
“学习如何编程是一种新的文化现象,”马萨诸塞州塔夫茨大学的玛丽娜·伯尔斯指出。这种新文化将会如何有别于旧有的文化传统?它对于人与计算机的关系又将意味着什么?令人惊讶的是,这方面几乎没有什么研究。有证据表明,计算机编程学习可以提高孩子们的抽象思维能力和解决问题的能力。还有一些人认为,我们将因此永远改变人类与技术的交互关系。不过总的说来,我们正在步入一个未知的领域。
这个“编码俱乐部”是2012年由程序员克莱尔·苏特克列弗和琳达·山特维克创办的,当时只是一个临时性的短期班,为孩子们提供一些学校里没能学到的东西。但没想到,之后许多自愿者纷纷仿效,在英国各地建立了近2200个这样的“编码俱乐部”,有大约30000名儿童在“编码俱乐部”里学习计算机编程的基本原理和技能。如今计算机编程不再只是为孩子们提供一种课外兴趣活动而已,编码俱乐部还建立了专门培训计算机编程教师的分支部门。
小小程序员学些什么
10年前,麻省理工学院多媒体实验室的米切尔·雷斯尼克和他的同事就产生了鼓励孩子们去动手创造的想法,他们开发了一种名为Scratch的简易编程工具,这是一种供孩子们学习和玩耍的简单有趣的编程语言。孩子们在编码俱乐部里使用Scratch编程工具,可以创建一些简单的程序,通过移动现成的指令块,形成想要的程序序列,而不是通过字符输入来编制程序,然后只要点击某个按钮来运行代码程序就可以了。
随着孩子们年龄的增长,他们可以学习更多的编程技能,例如如何修改代码块,如何将他们设计的软件程序发到Scratch网站上。自2007年这个网站推出以来,分享了600万个以上的Scratch程序项目,所有程序都向小网民们开放,可以重复使用、重新组合或进行进一步的改进。“我们希望孩子们拥有自主设计的创造能力,能够用计算机编程来表达心中的构想。”雷斯尼克说道。
在这个编码俱乐部里,劳拉的成绩出类拔萃。“我们学会了如何杀死一个女巫,并让它变成一个幽灵。”她自豪地说。她还制作了自己的脸部图像,让它在屏幕上随着烟花的爆炸旋转。
劳拉具体学些什么呢?Scratch编程语言中的一些关键概念与一些更高级的编程语言有着共通之处。例如,编程的关键之一是要弄清程序运行的先后顺序,对于达到某个目的先后步骤事先就要心中有数,此外,她还学习了其他一些基本的编程概念,如重复某些步骤的循环子程序,以及可以同时运行的并行子程序等。
最重要的是,像劳拉这样的孩子们还可以学习如何调试程序,通过程序运行发现错误代码,找出错误原因,调整后重新运行程序,观察结果如何,直到达到满意的效果,这一过程对于计算机编程至关重要,但雷斯尼克指出,这同时也是孩子们日后生活中的一种重要技能。
我们学习数学和其他自然科学,不仅仅因为它们本身的重要性,也是因为通过这种学习过程,培养有用的思维方式。“计算机科学很好地体现了这一点”,谷歌英国工程总监迈克·沃里纳这样认为。对于软件如何操作数据了解得越多,会导致产生更多的质疑心态。“你会像一个科学家一样地提出问题,”芝加哥德保罗大学的安伯·塞特尔说,“然后你会琢磨数据的处理方法。”换句话说,学会像计算机科学家一样思考,好处并不只是弄懂计算机的工作原理。
学习编程对儿童的影响
然而,学习编程对年幼孩子会产生怎样的实际影响?这方面的研究目前尚寥寥无几,大多数研究仍然只限于引用上世纪80年代道格拉斯·克莱门茨的研究成果,即:学习使用编程语言可以提高孩子们的抽象思维能力。
不过这是很有道理的,因为计算机科学是建立在抽象概念之上的。正如城市地图抽象展现实际的街道和建筑布局一样,但其他一些隐含信息,如城市人口分布,交通情况等,并不一定会在地图上体现出来。计算机程序系统亦呈这种分层叠架结构,每一层下面都隐含着更多隐藏细节,例如我们手中的智能手机,屏幕上所能看到的只是计算机技术在我们面前所显示出来的冰山一角而已。
抽象能力对于设计算法也很重要,解决同一个实际问题可以有多种算法。了解如何创建一个高效算法,需要拥有对问题的分析能力,找出问题的关键所在,并集中于所要解决的主要问题。例如某道烹饪配方的算法,配料选择和操作步骤是关键,而厨具和厨房则不是。
这正是华盛顿微软研究所的珍妮特·温格所称的“计算机式思维”的一部分,另一部分则是提出问题以及计算机分步执行方案的能力。自2006年创造了“计算机式思维”这个术语以来,温格所描述的计算机式思维产生了极大影响,其影响甚至体现在了英格兰的新课程设计中。训练孩子们的这种思维方式——关注某个相关谜题,通过有条不紊的步骤来解决它——为他们提供了一个解决问题的强大工具。孩子们学习如何将大问题分解成更小更容易解决的问题。“除了阅读、写作和算术之外,我们应该再加上计算机式思维能力这一项。”温格说道。
这一切对于一个5岁的孩子来说,将意味着什么呢?今年玩具市场上甚至将会出现一些旨在让学龄前儿童学习一些基本编码知识的新颖玩具。伯尔斯和她的团队设计了幼童版的Scratch Jr,它更简单一些,是一种纯图形化版本的Scratch程序语言,适合5~6岁的孩子,让他们在学会读和写之前,就能了解和学习一些基础的计算机编程技能。
学习计算机编程的顺序概念,有助于孩子们理解从开始到结束,学习数字的正确顺序,以及更好地理解日常活动的有序性等。“了解先后顺序的重要性,是孩子们认识世界的基础,包括从数学到日常生活中的一切。”伯尔斯说道。例如,在最近的研究中,伯尔斯和她的同事发现,教孩子们学习简单的编程语言,能够提高他们按正确顺序讲述故事的能力。
学习编码并不是了解顺序重要性的唯一教学方式,但它拥有其他途径所没有的优势,通过计算机编码,孩子们可以立即看到自己采取的步骤和行动的结果。例如,如果孩子设计了一个让机器人往前走四步的程序,运行结果发现它反而向后倒退,那么这个孩子马上就能发现,程序中用了错误的指令。
“虽然我们不知道究竟是什么在影响着计算机式的思维,”但塞特尔认为,“它至少会让我们对如何通过计算机编程工具得到我们想要的结果,以及如何对这些工具进行调整以得到不同的结果,有一个更深层次的了解。”
多年来,我们对一些大科技产品已经习以为常,比如“脸谱网”和谷歌等,它们大多是由一个有机会进入美国顶尖大学深造的群体设计创建的。教育更多的人学习计算机编程,是否意味着下一代人看待事物和行为的视野会更加宽广呢?
伯尔斯希望如此。“我希望创造未来技术的是一个更为广泛的社会群体,而不仅仅只局限于工程师和计算机科学专业这样一个群体,”她说,“当任何人都可以创建产生新技术时,我们会看到一个由不同想法的人创造的多彩世界。”
或许最重要的是,下一代人不再只是新技术的消费者,同时也将是新技术的创造者。雷斯尼克认为,这将成为普及计算机编程技术产生的一个重要的连锁效应,“我们将开始看到人们为解决问题而使用电脑,因技术进步最终受益的,将是整个人类社会。”
专家评点 为什么要让孩子学习编程
在英国皇家工程学院、微软和谷歌的帮助下,学校计算机科学的课程设计将教导孩子们如何编制构建软件,而不仅仅只是简单的学习如何使用软件。孩子们学习的是如何创建简单的算法,理解计算机编程的一些简单原理等。
这个戏剧性的变化是以英国视频游戏行业为核心的计算机行业多年游说的结果。例如,面对高科技工作需求持续上升的形势,“新生代技能计划”一直在教育领域内大力推动英国数字经济发展所需要的计算机技术技能教育。
“制约发展的一个主要因素是缺少大量精通计算机技术的毕业生。”树莓派(Raspberry Pi)的发明者之一埃博恩·厄普顿如此认为。树莓派是专门设计用于课堂教学的小型单板计算机,可以连接到显示器或者电视上,加上键盘之后,就可以编程并像传统PC一样做很多事情。
但所有的孩子都应该学会计算机编程吗?毕竟最终从事专业计算机编程的终究只是少数人,就像不是每个人都要学会修车或学会开车一样,为什么计算机编程就应该与别的技能不一样呢?大多数日用科技产品都有精确的设计目标,我们只需要知其然,而不需要知其所以然。例如,智能手机、一些应用程序和网站等,它们都有自己的特定功能,我们只要教会孩子如何上网,如何使用微软办公软件等就可以了,多年来都是这么做的,难道这样还不够吗?
麻省理工学院多媒体实验室的米切尔·雷斯尼克并不这样认为,他说:“学习编程会让人与计算机技术之间建立一种新的关系,他说,它将产生一种新的思维方式,以一种新的方式来看待周围的世界。”
诚然,大多数孩子长大后都不会成为专业程序员。事实上,一些面对消费者的计算机技术产品,从智能手机到智能汽车,都倾向于技术密封型,即使我们想要改动它也没有那个可能。但是雷斯尼克认为,这也正是密封盖下面所包含知识如此重要的部分原因。
孩子们通过计算机编程,可有助于他们在一个数字平台日益发展的环境中茁壮成长,计算机技术如今在我们的生活中占据了统治地位,孩子们需要看到他们能控制某些东西,他们不应该成为只是别人创造物的被动接受者。
方陵生 编译