浅谈儿童编程教育

上周和一位语文教学大师一边赏景、一边闲聊,聊着聊着聊到了编程教育话题,突然勾起了三十年前的记忆,回家翻箱倒柜,翻出了当时几个人一起合写的儿童编程教材。没想到教育也和衣着时尚一样,隔一段时间便要将过去的流行重新拿回来,再创造一次复古的流行。

30年前写的儿童编程教材

现今的编程教育流行风是2010年奥巴马总统将科学、科技、工程与数学等STEM教育,定调为美国基础教育的发展方向之后开始盛行起来。但其实早在半个世纪前,美国麻省理工学院(MIT)人工智能实验室共同创办人西摩尔‧派普特(Seymour Papert)教授(2016年以88岁高龄去世)就已鼓吹,应该让每一个孩子都学习编程,他并带领团队在1968年以人工智能程序语言LISP为基础,开发出世界上第一个儿童专用编程语言Logo。

早期的Logo编程界面

派普特在1985年接受纽约时报专访时曾说:「Logo是一个编程语言,它让计算机照着你希望它怎么做的方式去完成工作。」他认为「使计算机做事,需要在一定程度上描述基本的流程,并具有足够的精度来由机器执行。」因此在个人计算机上学习Logo编程,「给了孩童探索计算机潜能的机会,并让他们能够精熟地操控它。」

半世纪以来,Logo所带动的儿童编程创新研发从来没有停过,除了下指令式的各种版本Logo之外,近几年大受欢迎的Scratch也是MIT基于Logo所开发的高亲和性且功能更多的儿童编程语言;LEGO TC Logo则是玩具商乐高结合Logo编程所推出的可操控性积木玩具组,后来进化为可编程机器人玩具Mindstorms(这个游戏商品是乐高玩具以派普特1980年的大作Mindstorms: Children, Computers and Powerful Ideas命名)。

既然儿童编程是STEM教育的核心,Logo做为最早的儿童专用编程语言,其开发者派普特曾与皮亚杰共事,自然深受皮亚杰认知发展论(请参阅「融合反馈系统的发现式学习法」一文)的影响而成为一名建构主义者。针对儿童学习编程,他曾说:「孩童在计算机上编写程序时,不仅可以获得精熟最新与最强大科技的感受,还能与某些来自科学、数学及智力模式建构的最深层意识建立亲密的接触。」由此不难看出,透过编程儿童能够在讯息的产出、核对与处理过程中,组织与适应自己的认知结构。实施儿童编程教学是基于项目式学习法(Project-based Learning),让学生设定与建立项目,并在完成项目的过程中,锻炼逻辑思维能力及培养问题解决能力。

我们就以Logo为例来看看儿童编程在学些什么,建议有兴趣的人可以去下载FMSLogo一起跟着做做看。

1. 角色扮演,融入情境

Logo又被称为海龟语言(turtle language),因为它的主角是一只小海龟,儿童在学习编程时就是扮演小海龟的角色,当他想前进100步时,只需要下指令Forward 100(也可以简写为FD 100),就会看到海龟前进100;而当他想向右转90度时,则下指令Right 90(也可以简写为RT 90)。在初期学习阶段,教师甚至可以不需使用计算机,仍然能够进行编程教学(有人称为”不插电的编程教学”),透过让儿童融入故事情境,并以日常使用的单字和词组来指挥主角,大幅降低学习的难度。

2. 实时获知学习结果

儿童几乎在学习任何学科知识时,大多要在一段时间之后,透过测验、作业、练习或发表等方式,以分数或作品来得知学习的成果。而计算机最大特性就是人和机器间的高互动性,只要对计算机下指令(command),立刻就能在画面上看到执行结果。例如执行4次Forward 100和Right 90指令,就会看到屏幕上画出一个边长100的正方形。经由画面的立即回馈,马上就能知道自己的学习正确与否。

计算机可立即显示指令执行结果

3. 规划与执行一个项目

项目(project)的产生可以是老师指定,也可以由学生自己发想。有了项目之后,学生必须构思完成它的方法,并且需要将它拆解为一个个基本的可执行单位,这些可执行单位就像积木块一样,经过适当组合就能产出想要的结果。例如想要画出下面这个由正方形组成的花朵(当然正式项目可能要远比这个例子复杂多了,在此为了便于说明,采用比较简单的范例),看起来相当复杂,要完成它有不同的解决方法,但仔细分析后会发现,它可以是由12个正方形组成,每画完一个正方形就转30度,再画下一个。至于为什么要转30度再画,这便牵涉到数学,因为图中有12个角,表示有12个正方形,而转一圈是360度,两者相除就得到30。所以基于前面画出正方形的经验,只要每次画完一个正方形之后让小海龟转30度,再接着画下一个,连续做12次就能得到正确的结果。

连续做12次的画1个正方形后转30度就可以得到这个图形

但是想想每画一个正方形需要4次的[Forward 100 Right 90],一共有12个正方形,表示需要有48个[Forward 100 Right 90]才能完成图形,太麻烦了!我们可以试着把正方形变成一个积木块,让它像指令一般能够直接使用,这就要让Logo认识”新指令”,也就是要建立自己的程序(procedure)。在Logo建立新指令时要使用TO...END来命名和定义指令内容,以后就可以直接使用这个Logo学会的新指令。

To SQUARE
Repeat 4 [Forward 100 Right 90]
END

SQUARE这个新指令是让Logo重复(Repeat)4次向前100再右转90度,这样可以画出一个边长100的正方形。因此要画出这个由正方形组合而成的花朵就变得非常简单,只要每画完1个正方形后转30度,重复12次即可,指令变成:

Repeat 12 [SQUARE Right 30]

执行后果然得到预期的图案。

定义新指令后可以直接使用

当Logo学会新指令后,未来的编程都可以直接使用这些指令,例如稍微修改上面的程序,只重复4次,但每次转90度角,可以画出一个「田」字,程序就像下面这样:

Repeat 4 [SQUARE Right 90]

规划与执行项目时可以训练学生找出项目中的特定模式(pattern),以及分割大项目成为一个个较小的工作,执行时再分别解决每一个模式或是小的工作,最后完成整个项目。例如上面例子中,画出这个花朵的最基础模式是一个正方形。

在碰到较大型项目的时候,可以画流程图(flow chart)来表示项目执行的完整过程,流程图中除了线性的顺序之外,也可能需要进行条件判断,例如「当距离抵达目的地时间少于6小时,搭高铁前往,否则搭巴士」,这就是一种条件判断。加入条件判断的程序就不再是死板板的一条线直直走下去,而是会有一些变化的可能性,让程序看起来有一点点”聪明”,能视情况调整。

4. 问题解决

编程时难免会碰到执行结果和预期不同的情形,编程发生错误被称为程序中有臭虫(bug),必须进行除虫(debug)工作,这可以培养学生问题解决的能力。例如想要画出一根旗杆上有一面旗子,但下面这段程序却画出一个梯子!

Forward 50
Right 90
Forward 50
Left 90
Forward 50
Right 90
Forward 50
Left 90
Forward 50


本来想画右边的旗子却画成了左边的梯子

找得到臭虫在哪里吗?原来虫子躲在程序的第6行,转错方向了!只要把右转Right改成左转Left,画出来就是一面旗子了。

解决问题总是无法一步到位,常需经过不断测试与修改的过程,也正因为这样的特性,使学生可以透过编程来提升自己,拥有更好的问题解决能力。

综合来说,编程教育是希望培养学生拥有运算思维(computational thinking)。运算思维并不是让人像计算机一样的”思考”,而是透过分解复杂问题、辨识与发现模式、将模式一般化,以及发展问题解决流程等一系列工作,达到养成学生高阶思维以解决问题能力的目标。至于教育政策上是不是应该像芬兰、爱沙尼亚、英国等许多欧洲国家一样,将编程纳入正式课程,主要牵涉到师资是否充足的问题,担任这方面课程的教师本身必须也有相当好的运算思维,以及编程的专业背景,但答案显然再清楚不过了!



注:若有兴趣使用Logo但不想记忆指令,也可以发邮件到contact@turtleart.org,索取新版的TurtleArt软件,它是正宗派普特所开发的Logo编程环境,由派普特的子女(Artemis and Brian Papert)管理。TurtleArt采用鼠标拖拉指令的方式撰写Logo程序,而且画面上真的有一只小海龟喔。

TurtleArt以拖拉指令方式来撰写Logo程序
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容

  • 台湾有一所大学定义了学生在校四年学习,毕业前必须具备三种”语言”能力,包括中文、英文和程序设计语言,这自然是呼应现...
    王者之声阅读 537评论 0 4
  • 1 当我在大周末的早上,不在家睡懒觉,而是苦...
    Super__Frank阅读 428评论 0 3
  • 1.ForkJoin框架:用来支持对每个内核使用一个线程,完成计算密集型任务,如图像视屏处理。 实现:扩展Recu...
    TYcom阅读 117评论 0 0
  • 女盆友上周来家里吃饭,看我的桌子堆满了东西,就淘了个伸缩书架给我,组装完的时候被那小玩意惊喜到了——整洁美观层次分...
    我是Molly木有花阅读 948评论 0 3
  • 夏天还没来得及好好过,突然秋凉了 内心充满惶恐不安 是时间太快?还是我脚步太慢? 还没有好好爱你,你就走了 是我没...
    欣欣棒棒糖阅读 393评论 0 1