奥巴马“计算机从娃娃抓起”的倡议和人们对科学(Science)、技术(Technology)、工程(Engineering)、数学(Mathematics)教育日渐增长的关注都说明了一个问题,那就是,为了教导孩子们学习计算机知识,我们需要建立一套标准,还要找到好的教学方案。在工业界,人们普遍认为,要让孩子学会些什么,最好的方法就是使用可视化的编程语言,这样的话,即使是年纪很小的孩子也不必纠结于语法问题,而可以自由创造,同时掌控着自己编写的软件。 Logo 语言的更新换代在过去 50 年里,设计师们以 Seymour Papert 创造的 Logo 语言为基础,造出了一大堆编程工具,它们虽然在界面上稍有不同,但其目的都是为了引导孩子们对编程进行思考。同时,由于 MIT 设计的 Scratch 的流行,基于模块的编程方法便成为了教学的标准。 在 CSTA 为中小学生制定的计算机课程教学标准中,也明确地将“在基于模块的可视化编程语言上进行构建和测试的能力”用于评估小学 5 年级学生的编程水平。 趋向幼龄化
引入机器人技术看着自己写的代码变成现实是件很神奇的事。在本世纪初,乐高 和 MIT 合作了一个项目,致力于将基于模块的编程带入到现实世界中。学生可以在电脑上写程序,然后把代码下载到他们搭建的机器人上。早期的 RIS (机器人发明系统)和 Scratch 十分相似。 超越 Logo在现实世界里,计算机程序总是需要考虑一大堆的输入,以及一个逻辑条件是否成立。举一个例子,我们要决定今天需不需要早起。如果今天是星期六或者星期天,那么我们就会出去外面玩。如果今天是星期一,我们就得去收拾运动服。如果是星期四,就得倒垃圾。另外除了周末之后的日子,都要上学。下面这幅图展示了如何使用 Scratch 对这个问题进行解答。 除了基于模块的编程方法之外,还有一种新的语言采用了不同的方法来教孩子编程。在 2015 年,Wonder Workshop 设计了一种流式的编程语言,叫做 Wonder。Wonder 让学生将注意力放在多个功能单元之间的连接,通过这种方法来创造一个状态机。这个状态机在任意时刻都只能处于一个状态,如果它正在处理某个任务,给定一个输入就可以让它改变状态去做一些其它的事情。 除了使学生们摆脱了线性的编程范式,Wonder 还让他们能以一种简单的方法来对现实世界的问题建立模型。 学生们可以更容易地把一个问题分解成小的模块,然后用这些模块来解决一个复杂的问题。这样他们在解决一个复杂的问题的时候,就能把注意力放在在一个个子问题上。这个分解问题的过程,既是计算机科学的基础知识,也是 Wonder 语言的设计初衷。 在我们日常生活里也有很多机器人和状态机的例子,并且它们正在变得越来越普遍。自动售货机会在你投入正确的金额时吐出商品。自动驾驶汽车能够根据周围的障碍物决定如何前进。状态机还能对很多其他的问题进行建模,就像句法分析、人工智能、通信协议、游戏中的角色发展,甚至包括神经系统。 随着机器人技术的应用和其影响力的扩大,教师们自己现在也需要学习模块化编程。但在这些方法被越来越多人采用的同时,我们应该思考的是:这是否就是正确的前进方向?又或者是不是还有其它更好的方法可以帮助孩子们学习计算机呢? 本文由 伯乐在线 - chowchowT^T 翻译,sunshinebuel 校稿。英文出处:June。 |