忘了外语和乐器,我们来教孩子编程吧!

转载 0

儿童编程

保罗•吉布森因为在工作中遭遇挫败,转而开始教青少年编程。他是爱尔兰国立大学的一名计算机科学家。1998年的时候他被大学新生的无能所震惊。“我发现十八九岁的大学生居然难以理解我自己12岁时就掌握的基本编程概念。”吉布森回忆道。他自己是在一台ZX81(1981年英国公司Sinclair发布的家用计算机)上自学的编程。“我意识到,他们在进大学上我的课之前从来没有接触过任何编程。所以我想,可能我们面临的问题之一是(学编程)开始得太迟了。” 吉布森的中学生编程课出名以后,都柏林地区的一些小学也开始联系他授课。

 

到2000年的时候,吉布森已经在用游戏设计问题教八九岁的孩子初级Java了。在那个年龄段孩子身上取得的成功让他好奇:最小可以小到几岁开始编程?

 

吉布森在教育心理学中读到,在孩子能识字之前教别的没有用。但当他攻入五六岁孩子的课堂进行实验性教学时,这些孩子不可思议地轻松掌握了他教的内容。

 

通过一个定制的Java小应用程序,他得以教会幼儿园的孩子写出“三棋杀三子”(早期的井字棋游戏),孩子们以小组为单位一步一步定出规则。利用彩色小球和绳子,他教孩子们创造图论算法——计算机科学中关键的一个部分。“我们相信,我们的教学成果表明你可以在小孩学会读写之前就教他们计算机科学。”吉布森(现在在法国任教)在一篇2012年发表的论文中写道。

 

图 · 计算机科学家保罗•吉布森为了教孩子们算法的概念而设计的分类游戏。

 

“5至11岁之间的孩子在学习算法和计算上表现出的突出潜质让我觉得如果等到他们十几岁了再学这些基础知识就太可惜了。”这一说法对于很多教育学者来说依然太激进了。虽然教儿童和青少年编程越来越成为一股潮流,比尔盖茨和篮球明星克里斯波什(NBA迈阿密热火队的大前锋)之类的人都在倡导,但极少人认为幼儿园的孩子能学会操纵计算机。

 

人们普遍认为小孩子的智能水平还无法理解编程这样晦涩艰深的话题。但这种消极的想法和吉布森及其他先锋教师的亲身经历相违背,也不符合语言习得理论。大量研究表明大脑越年轻越容易吸收语言,所以在孩子越小的时候开始学外语越好。这也是为什么很多望子成龙的家长呼吁幼儿园开设深入的中文课——他们希望,在这个亚洲崛起的时代,让自己的孩子在学习一门核心亚洲语言时赢在起跑线上。

 

那些家长没有想到的是,让他们孩子轻松掌握中文的大脑神经机制也能让孩子快速学会计算机语言。幼儿园的孩子无法成为C++高手,但他们肯定可以开始培养将来让他们驰骋编程界的技能。我们的(美国)学校应该把鼓励发展那样的技能作为首要任务之一,因为,代码将会成为未来世界的通用语,而不是中文。

 

你或许还记得小海龟画图。在八零年代早期和中期,Logo编程语言带着它标志性的小海龟光标风靡美国小学。孩子们运用简单的Logo指令创作出复杂的线条图形,当时的期望是希望借此他们将能熟练操作逐渐进入普通家庭的苹果II电脑。可惜这一宏伟目标并未实现。主要的问题不是Logo语言本身,而是当时沉闷的教学方法。很多老师只是每周把学生摁到电脑前一个小时就完事大吉了。

 

对于Logo期待的落空正好赶上多媒体设备的流行。计算机于是从探索的对象沦为图书馆的搜书工具。“光盘驱动出现了,然后是万维网,所以你不需要知道指令就可以和电脑交互。”雅思民•卡法解释说。她是宾夕法尼亚大学的教育学教授,学习技术研究领域的先驱。

 

虽然计算机成了大学专业里的大热门,但编程课已经从小学消失了几十年。一个文化上的共识似乎形成:孩子应该学一些模糊的“计算机技能”,但编程嘛——嗯,那是给大人准备的。然而在过去五年里,不少突破性的活动开始证明这一认识的荒谬。除了吉布森的井字游戏和图论课程,还有Scalable游戏设计——科罗拉多大学设计的课程,用于教小孩编写自己的“青蛙过河”游戏(一款经典的街机游戏)。在P.S. 185,位于哈莱姆(纽约历史最悠久的黑人区)的早教中心,4岁的孩子就开始使用一种叫Cherp的语言制作能执行家务的机器人。海外也不乏动作:在爱沙尼亚有一项名为ProgeTiiger的计划,致力于教一年级小孩基础编程。

 

这些课程有一个共同点:他们不是专注在教孩子记住某一具体工具的用法,而是让他们熟悉所有编程过程中都会接触到的基本概念:序列,条件,调试。例如,Scalable游戏设计的老师在指导孩子们编写第一个青蛙过河时首先督促他们想清楚:游戏里有哪几个主体?(青蛙,和致命交通工具)他们之间会产生哪些互动?孩子们渐渐学会制定规则和条件,最终形成一个有逻辑、可运行的整体。

 

图 · Scalable游戏设计课程教一年级的孩子做出来的电子游戏。

年幼的孩子可以完成如此复杂的任务并不值得惊奇,我们不是已经知道他们在学习语言上的天赋了吗?五岁儿童能在学西班牙语或汉语时打败比他年长的人,因为(至少理论如是说)年轻的大脑更容易形成“程序性”记忆——一种深深烙印在我们神经中的记忆,调动时只是一个条件反射无需意识参与。

 

证据显示,大脑成长的过程中,程序性记忆会逐渐让位于“陈述性”记忆,这是我们用来积累事件的记忆。陈述性记忆的一个缺点就是,它要求精神集中大脑用力——当你坐在飞机上企图想起一个动词变位的时候,这可就不好使了。如果你在程序性记忆最灵敏的时候学习了动词变位,他们就自然地成为你的习惯,那一切就轻松多了。

 

似乎还没有人研究具体我们是怎么学习编程语言的,但我们有理由相信学生在程序性记忆依然鲜活的时候学习它会事半功倍。

 

“我猜测,孩子和大人学习计算机语言用到的通用记忆系统和他们学自然语言是一样的。” 迈克尔•乌尔曼说,他是乔治城大学医学中心大脑与语言实验室的主任(在心理语言学和认知神经学领域影响巨大)。在音乐方面有一个关键的数据点可以支持这一观点:伟大的小提琴家不是在二十几岁才开始学拉琴的,他们通常始于三四岁,那正是程序性记忆最敏感的时候。音乐难道不也是一种代码形式吗?——一系列必须按顺序处理才能取悦人耳的抽象符号?

 

然而,教编程不仅是为了给脸书和谷歌这样的公司培养程序员大军。正如小时候说多门语言对后来的智力发展有益一个道理,尽早学接触编程能提高教育学者说的“计算思维”——运用抽象思维解决问题的能力。即使对于那些永远对编程提不起热情的人,那些有志于取得文学而非软件工程学位的学生,理解代码依然意义重大。

 

正如媒体理论家道格拉斯•拉什科夫所言,忽略编程就像不学开车而依赖别人载。在近五十年内,我们打交道的大多数不会是不会外语的亚洲人,而是机器。所以,让我们来教孩子如何控制机器吧,别让他们被机器控制。

 

文 / BRENDAN I. KOERNER

译 / 阳光小番茄

本文转载自译言社区