少儿编程,只知道Scratch你就Out啦!
“孩子编程必须从Scratch起步吗?”
“少儿编程学Scratch才是王道!”
等等……
看来,小斑有必要将
少儿编程发展的历程
以及更多优秀的少儿编程工具
呈现给大家。
01
Scratch诞生记
让孩子对电脑编程,而不是让电脑对孩子编程。
——西摩尔·帕普特(Seymour Papert)
要说Scratch的诞生,就不得不提及少儿编程之父,西摩尔·帕普特(Seymour Papert)。
▲西摩尔·帕普特(Seymour Papert,1928.2.29~2016.7.31)
他是来自南非的计算机科学家、数学家及教育家,人工智能发展先驱
早在 60 年代,帕普特就在思考,怎么才能让电脑成为孩子学习的好帮手,让孩子成为电脑的主宰。为了让孩子能用电脑做点有意义的事情,帕普特发明了 LOGO 编程语言,这一语言非常简单,任何一个小孩一天就能学会。
在 LOGO 的世界里有一只小海龟,你可以通过输入指令,让海龟在画面上走动,可以向上下左右,或者是按照你指定的角度移动。你还可以让小海龟以加速或减速移动,也可以让小海龟重复某一个动作。
▲孩子可以在键盘上写下指令,让小海龟在画面上走动,海龟会留下痕迹, 相当于在屏幕上画线。
1984年,乐高公司的CEO拜访了MIT实验室,在与帕普特洽谈中,帕普特提出来,能否创造一个能替代电脑的乐高零部件——一个具有计算的功能,又能跟乐高一样小巧,又足够便宜的零部件。在当时,这是一个巨大的挑战,而这个设想直到 14年后才得以实现。
1998年,乐高发布了全新的可编程机器人产品——Mindstorms 系列,掀起了一场全球的机器人风暴。
▲为向帕普特致敬,乐高用他 1980 年出版的书名(Mindstorms)作了注册商标。
▲1980年,帕普特出版了《Mindstorms》(头脑风暴:儿童、计算机与强大的想法)
乐高 Mindstorms 在 1998 年 9 月发售,当年 12 月 1 日即全部售罄。时至今日,乐高机器人依然是全球最火爆的教育机器人。
同样受到帕普特启发的还有一名青年记者。一次偶然的机会,他听了帕普特的演讲,由此改变了他对计算机的认知。第二年,这个年轻记者拿着MIT的奖学金,参加了帕普特的研讨班。
这个青年记者就是后来的“Scratch 之父“—— 米切尔·瑞斯尼克(Mitchel Resnick)。
▲Scratch之父:米切尔·瑞斯尼克(Mitchel Resnick)
他是MIT实验室学习研究教授,同时也是乐高教育全球董事,是主导乐高机器人背后的科技巨人
作为帕普特理念的继承者,瑞斯尼克在 LOGO 的影响下,推出了更先进的面向儿童的编程语言——Scratch。Scratch的首个版本是于 2007 年发布的,建立在 LOGO 的理念与乐高机器人编程工具基础之上。
▲Scratch的编程方式是命令式图块的逻辑去搭建,更易于儿童理解。
至今,Scratch 的在线平台已经有超过 3900 万注册用户,被翻译成 70 余种语言,在 150 个国家里被使用。Scratch 语言与各种硬件和软件相结合,被广泛使用在学校、家庭以及校外的计算机、编程教育等。教师也用Scratch语言服务于其数学、科学、地理、历史、艺术等教学。Scratch 为儿童创造了一个低门槛的编程学习环境,也方便孩子将来学习其他编程语言。
以上,就是Scratch诞生背后的故事。
02
儿童编程语言进化史
Scratch是可视化编程语言(Visual Programming Languages,下面统一用缩写:VPL)的一种。
可视化编程被业内认为,是教授给孩子们计算机科学和计算思想的最好方式。由于可以摆脱艰涩的编程语法,孩子们在很小的时候就可以灵活地掌握软件编程的精髓。
▲Scratch的诞生,是VPL语言发展史中重要的一块里程碑。
图片来源:constructingkids.com 作者:Martin Exner
在过去的五十年,程序设计师们不断地改进帕普特所创造的LOGO编程语言,进而出现了一大批界面稍有不同而核心思想相同的编程语言。
▲近几十年间所出现的各类VPL
图片来源:constructingkids.com 作者:Martin Exner
由于scratch编程语言的流行,当前的编程教学标准是基于模块(blocks)的编程方式。在CSTA的K-12计算机科学教学标准中,对于K-5年级,要求学生达到“使用基于模块的可视编程语言来构建和测试解决方案”的编程能力。
CSTA是什么
CSTA全称Computer Science Teachers Association,即成立于2004年的计算机科学教师协会。
CSTA发布的K-12阶段计算机科学标准(CSTA K-12 CS standards),以其成员广泛性、计算机科学教育方面专业性,而成为美国各州、各地区学校制定本地化课程大纲的指导标准。
我国对信息技术课程教育仍处于摸索阶段,CSTA对于我国信息技术课程设置、评估和实施途径具有重要的借鉴意义。
计算机科学教育的另外一个趋势是受众越来越年轻。研究表明,仅仅五岁的孩子就能够掌握计算机编程的概念。不过,要教还不认识字的孩子们学习编程,程序中就需要避免使用文字。在Scratch Jr 和 Code.org 的第一阶段课程中,都使用图标替代了文字。
▲Scratch Jr的程序界面
可视化编程教育的另一种实现形式,是让孩子们看见自己的代码在现实生活中出现,这将引起他们极大的兴趣。这就是机器人编程。
之前提到的乐高Mindstorms,就是将基于模块的编程带到了现实世界。学生们可以在计算机上写程序,然后将其下载到他们搭建的机器人里。
▲乐高Mindstorms EV3 程序图
此版本可以给模块增加输入参数,以指定距离、时间、输出等等。
由LOGO语言衍生出了非常多的编程语言,它们大多都是围绕着特定场景产生的,比如创建游戏、制作 3D 故事情节环境、绘制图片、机器人编程,甚至可以控制虚拟鱼缸。这些VPL吸引了许多的孩子,但是还有很多人在学习编写一段程序时,仍然感觉有些困难。
除了这些基于模块的编程语言,还有一种新的语言采用了不同的方式来教孩子们编程。
2015年,奇幻工房(Wonder Workshop)设计一个名为 Wonder 的新编程语言,采用的是“基于流”(Flow-Based Programming)的编程界面。Wonder可以让学生们将注意力放在一些预先定义好的功能单元的连接上,来构建一个状态机(state machine)。
在任何时刻,机器人都是一个单一的给定状态;它会做一些操作,给一些输入就会让它改为做不同的操作。
▲以上展示了如何使用“基于流”的方式来判断起床后的任务。
除了摆脱了线性编程的范式,Wonder的这种编程语言还提供了一种不同的计算思想:让学生们以一种容易掌握的方式来模拟响应现实中的变化。
学生们可以更容易地把问题分解成小部分,每次只需要关注一个问题,以此解决非常复杂问题。这个过程称之为分解,既是计算机领域的基础知识,也是 Wonder 的设计目的。
▲Wonder程序图
这个程序是用来控制机器人在感应到不同状态时,亮不同的灯光
在斑马课堂里,我们有“代码指挥官”与“机器人指挥官”,这对应了儿童编程教育两块非常重要的组成部分:软件编程与机器人硬件编程。
回到开头的问题,在斑马课堂,代码指挥官所指向的,不仅仅是一种编程语言,随着计算机语言的更新迭代,我们希望让孩子掌握核心的计算思维以及灵活运用的能力,这与西摩尔·帕普特的思想是一致的。我们希望孩子能主宰计算机和人工智能,而不是它们所奴役。
03
少儿编程的”好朋友”
下面,小斑将推荐一些与Scratch同样优秀(而且,从使用基数上讲,也完全不属于Scratch)的少儿编程工具哦!
Tynker
Tynker语言是在Scratch上发展而来的,完全基于浏览器平台运行,底层代码是使用开放的Web标准编写而成,比如Javascript、HTML5、CSS3,但是并没有使用Flash。
Tynker看上去和Scratch非常相像,但是Scratch是旨在编程,而Tynker的重心则是教授编程。Tynker有设计教案功能,同时还有课堂管理工具,以及在线演示学生们的“大作”。
整体来说Tynker里的游戏更多更丰富,可玩性很强。但是由于是英文界面,加上游戏过程中系统不会进行细致的内容讲解,还是需要家长陪同的,或适合年龄较大,认知能力比较强的孩子玩。
▲官网:www.tynker.com
除了以上优点意外,Tynker有按键可以随时在图像式与代码式编程界面(Swift)之间切换,可以让孩子轻松掌握程序语言和自然语言之间的对应关系,为孩子们未来学习代码式编程语言提供了发展空间。
要知道,Swift可是苹果公司创造的用于为IOS/Mac/Apple TV/Apple Watch开发APP的开源编程语言。如果孩子们先从Tynker 入门学习编程,再切换升级到Swift,以后就能编写出App Store 上架的APP,这是真正的“学以致用”!
Code.org
也许你没听说过code.org,但你一定对风靡全球的“编程一小时(An Hour of Code)”的活动有所耳闻。Code.org创建于2013年,它以动画、游戏等等多样的方式给学生免费提供计算机科学课程。(小斑划重点:免费)
目前有35万名老师注册了Code.org,为学生提供计算机科学入门课,约1100万个学生注册账号。在美国,有超过100个学区把Code.org的课程整合到自己的学校当中。
2013年末,Code.org在全美举行了“编程一小时”活动,吸引了超过2000万名学生参加,在两周内写了近7亿行代码。美国总统奥巴马也曾参与该活动。
在Code.org学习编程,不需要用到编程语言,而是直接通过积木拼接完成任务,重在逻辑思维训练。
▲官网:https://studio.code.org/courses
Code.org深入贯彻了“兴趣即第一驱动力”的理念,用有趣、好玩的方式循序渐进地引导孩子进行学习,从培养思维模式到自主创造创新。不同年龄段、不同学习阶段的孩子都能在这里找到适合自己的进度。
MakeCode
MakeCode由微软公司出品,为用户提供图形化编程环境。打开网页即可编程,旨在打造有吸引力的计算机科学学习体验,为实际编程奠定基础。MakeCode 为不同水平的学习者提供有趣的项目、即时结果、积木块编辑器和文本编辑器,让所有学生了解计算机科学的实际应用。
MakeCode功能强大,能够结合micro:bit、Circuit Playground Express、Minecraft我的世界、乐高EV3、Wonder的达奇机器人Cue、Arcade游戏掌机等进行编程。
▲MakeCode可连接的开源硬件
MakeCode对初次编写代码的学生十分友好,可以从彩色块开始,将彩色块拖放到工作区来构建程序。
当学生们具备一定基础时,便可以改用功能齐全的Java Script 编辑器。且编辑器中会提供代码片段、工具提示和错误检测工具。
▲MakeCode编程界面
虽然Makecode本质上仍然还是以图形化编程为主,但是从实际使用中,无论是上手难度还是计算思维的要求,比Scratch都是略有提升的。家长们可以根据孩子的学习情况和阶段进行适当调整。
介绍完这些优秀的少儿编程启蒙工具,小斑需要提醒家长,每款工具都有各家的长处和难度范围。
Code.org较为基础,可以作为启蒙工具!
Tynker难度稍高一些,可以实现代码式编程学习(Swift)的转换桥梁!
MakeCode难度颇高,同样可以实现代码编程学习(JavaScpript)的过渡,而在连接各种传感器和模块上,MakeCode有无限的扩展性。这对孩子的编程能力、逻辑思维和动手操作能力有明显的提高作用。