首页 映魅观点 映魅研究观点 映魅研究 | 青少儿编程语言是如何一步步演变过来的?
映魅研究 | 青少儿编程语言是如何一步步演变过来的?

映魅研究 | 青少儿编程语言是如何一步步演变过来的?

  Scratch可能是现在大家最熟悉或者说知晓度最高的青少儿编程语言了。的确,自Scratch编程语言诞生以来,其可能是在商业化过程中最为成功的一款适合青少儿群体的编程语言了,尽管其到今天为止依然是一款开源的免费编程语言。不过也许正是因为其一直以来坚持的开放和开源,使得有更多的人围绕Scratch开发了各种课程,无形中也让更多的人能够触及Scratch,让更多的儿童和青少年了解究竟什么是编程。

理论萌芽期

20世纪60年代-21世纪初

  青少儿编程作为一种教育产品进入到普通人的视野中的时间并不长,过去的4-5年时间是其快速发展的爆发期。但是作为一种编程工具,Scratch的诞生时间略微更早一些,在21世纪的第一个10年(第一代Scratch在2007年发布),来自麻省理工学院的“终身幼儿园”团队开创性地创造出了Scratch。

  我们曾经在《映魅研究 | 为什么我们觉得许多人都应该看看《终身幼儿园》这本好书?》一文中提到,由米切尔·雷斯尼克(Mitchel Resnick)领导终身幼儿园团队创造出Scratch编程语言的过程中,其受到来自乐高积木的灵感影响是显而易见的。Scratch的设计目的之一就是能让编程像搭建乐高积木那样简单,容易上手。另外,在创造Scratch编程语言时,它需要面对的是所有学习风格和背景的孩子,即要让所有的孩子都能够用Scratch来表达自己,而不是仅仅针对那些继续学习编程并最终成为专业程序员的孩子。希望今天的孩子们能够借助编程来学习一种新的方式来表达自己,这种技能和方式对每个人都很重要,即使他们未来从事的工作并不局限在计算机专业领域。

米切尔·雷斯尼克(Mitchel Resnick)

  Scratch并不是全球最早出现的针对少儿群体的编程学习语言。我们还可以将时间往前再回拨到20世纪的60年代。目前,行业内公认的全球最早的纯粹针对青少儿群体的编程语言是LOGO语言,由当时的麻省理工学院的计算机科学教授西蒙·派珀特(Seymour Papert)发明。今天在麻省理工学院的官网上依然能够找到一些关于西蒙·派珀特和LOGO编程语言的介绍资料。

西蒙·派珀特(Seymour Papert)

西蒙·派珀特和LOGO编程语言的介绍

(来源:麻省理工学院官网)

  LOGO语言是一种与自然语言非常接近的编程语言,通过“绘图”的方式来学习编程,是对初学者特别是儿童进行寓教于乐的教学方式。绘图是LOGO语言的最主要的功能,通过不多的参数(位置和指向)来操控“小乌龟”的行走方向,并借助绘图的方式解决学习任务。

LOGO语言的简单指令

  以今天的眼光来看,当时的LOGO语言看上去是非常原始的,也完全不同于今天大家常说的图形化、模块化的编程语言。但是其完全是为儿童学习编程语言而专门打造的,通过LOGO语言,学生们能够找到解决问题的步骤,并通过“编程”的方式进行解决,可以引导学生对解决问题的步骤进行拆解。LOGO还具有很好的人机交互特点,每当给出一条LOGO命令时,它都能够给出及时的响应和回答,帮助孩子在学习过程中建立信心。

  作为一款自诞生以来已经经过了数十年的编程语言工具,即使到了今天,LOGO语言背后所承载的理念并不过时,很多的学校和老师依然会使用LOGO语言来教授孩子们的启蒙编程知识。

Floor Turtle

  但是,你知道更早的时候,孩子们是这样学习编程的吗?

  在20世纪60年代,来自麻省理工学院的Tom Callahan制造出了上图中的实物,这是一种由硬电线和计算机进行物理连接的Floor Turtle。当乌龟移动时,它拖着连接线。使用Logo turtle命令,学生可以命令海龟向前或向后移动指定的距离,向右或向左转动指定的角度,按响它的喇叭,用它的笔画画,并感知其天线上的接触传感器是否遇到了障碍。

  到了1972年,BBN的工程师Paul Wexelblat设计并制造了第一台无线连接的Floor Turlte,并取名为:Irving。Irving是一个直径1英尺的小乌龟,可以通过连接到远程计算机的电传打字终端上的无线电收发器,根据徽标命令自由移动。无线连接的方式让乌龟有了更多的使用场景,也让孩子们学习如何控制乌龟的行走路线有了更多的挑战。

西蒙·派珀特和乐高集团掌门人Kjeld Kirk Kristiansen

(来源:麻省理工学院官网)

  时任乐高集团的掌门人Kjeld Kirk Kristiansen在提到Seymour Papert时表示,Seymour Papert向我们展示了编程(Programming)可以是一个充满创意的过程,就像用乐高积木搭建“建筑物”一样,孩子们将命令行或是乐高积木块组装在一起,对其进行反思和讨论,修改他们的创造,再不断进行新的尝试,由此他们可以发现有无数的可能性。而正是Seymour Papert的理念至今依然是乐高集团的工作核心。

西蒙·派珀特的著书

  在1985年,Seymour Papert和乐高集团合作,同年,麻省理工学院的媒体实验室(MIT Media Lab)创立。乐高集团在1998年推出了名为Mindstorms系列机器人产品,以纪念Seymour Papert所著的同名书籍“Mindstorms: Children, Computers, and Powerful Ideas”。

让·皮亚杰(Jean Piaget)

  让我们再提一位老者,也是全球知名的儿童教育心理学家:让·皮亚杰(Jean Piaget)。尽管他并没有创造出少儿编程语言,但是他的思想深深地影响了如西蒙·派珀特、米切尔·雷斯尼克等人的成就。

  在皮亚杰提出的认知发展理论中,他将一个人的认知发展划分为4个主要阶段。感觉运动阶段(从出生到2岁):这个阶段的儿童主要认知结构是感知运动图式。儿童借助这种图式,可以协调感知输入和动作反应,从而依靠动作去适应环境。前运算阶段(2--7岁):在这个阶段,皮亚杰提到了“运算”,运算是指一种内化了的可逆的动作,即在头脑中进行的可以朝相反方向运转的思维活动。皮亚杰在这个阶段又细分了2个阶段,即象征思维阶段(2--7岁)和直觉思维阶段(4--7岁)。具象运算阶段(7--12岁):在这个阶段,儿童能够反向思考它们见到的变化并进行前后比较,并思考这种变化如何发生的。形式运算阶段(12岁以上):在这个阶段,儿童的思维发展到了抽象逻辑思维的水平,能够进行假设演绎推理。

快速发展期

2007年至今

Scratch 1.4版本

  最早在2007年发布的Scratch 1.4版本(公开版本)是需要用户下载到本地的,从2003年的Scratch 1.0到2007年的Scratch 1.4,本身的区别并不是很大。但是Scratch的出现,已经大大地和更早的LOGO编程语言有了本质的区别。

  比如说,LOGO语言是一种面向过程的编程语言,因此也具备面向过程的编程语言的特点,比如面向过程编程是分析出解决问题所需要的步骤,然后用函数把这些步骤一步步实现出来,在使用函数的时候依次调用就可以。而Scratch则体现的是面向对象编程语言的思想,在Scratch中有一些“积木块”,而这些“积木块”则相当于构建了一个函数,可以增加参数或者文本,这些“积木块”体现了面向对象编程中“封装性”的特点。

  从2007年推出Scratch 1.4,再到2013年推出了Scratch 2.0版本,再到2019年推出了Scratch 3.0版本。Scratch每一次大版本的更新几乎都花了大约6-7年的时间。在这几个版本的更新中,随着移动互联网的普及和移动设备的逐渐普及,用户不再需要下载到本地才能使用,对移动设备的支持也越来越好,同时也越来越多地和更多的硬件兼容和开放。

MIT App Inventor

  App Inventor原本是Google Labs的一个项目,提供了一个支持完全在线开发的Android编程环境。App Inventor的推出极大地降低了人们开发基于Android操作系统应用的门槛,其也借鉴了Scratch语言中的“块”的概念。Google公司推出App Inventor的目的可想而知,是希望能够更加丰富其Android的生态。

  在2012年,App Inventor交由麻省理工学院运行,并开始服务更多的教育需求,成为了一种教育用的编程语言(麻省理工学院App Inventor教学网站:appinventor.mit.edu)。

  作为全球两大移动操作系统之一的iOS,苹果公司自然不会忽视如何构建围绕iOS的应用生态。不过,苹果公司直到2014年才推出了其专属的编程语言:Swift。Swift语言吸取了C语言和Objective-C的优点,功能更加强大而且易学。

Swift Playgrounds

  不过,苹果公司一直到2年后才推出了真正地面向青少儿群体的编程学习工具:Swift Playgrounds。对于用户来说,根本不需要具备任何编程基础,任何背景的人都可以学习。和学习Swift编程语言通常需要Xcode作为开发环境不同,换句话说,如果没有Xcode环境,是无法用Swift创建应用的。但是在Swift Playgrounds中,用户是不需要了解Xcode开发环境的。而随着Swift Playgrounds从最初的iPad版本到之后推出了Mac版本,用户可以将在Swift Playgrounds尝试的想法直接拷贝到Xcode中(Mac中有Xcode,但是有消息说,未来的iPad也会有Xcode)。

  从LOGO语言到Scratch语言,再到之后出现的App Inventor、Swift Playgrounds,尽管在这数十年的发展中,还出现了很多其他的面向青少儿群体的编程学习语言,而且这些语言本身(比如LOGO语言、Scratch语言)也有了很多的版本(因为这些语言是开源的),但是基本上代表了青少儿编程语言的发展脉络:从面向过程语言-----面向对象编程语言(以图形化编程为代表)-----支持移动开发环境。

  而新的一个阶段是:软硬结合

Scratch 3.0 + LEGO Mindstorms

  在青少儿编程语言快速发展的同时,以开源硬件、各类教玩具、编程学习硬件也在最近10年里快速发展。如果说学习编程语言更多地是培养学生们的思维的话,那么,当编程语言和硬件结合在一起时,则能让学生们将自己的所学应用到解决实际问题中或者模拟世界中,去驱动一个硬件完成学生的目标。

  事实上,乐高的Mindstorms的前身RCX就是最早的可编程的硬件。只不过当时需要有专用的编程软件来驱动。而随着Mindstorms和如Scratch、Swift Playgrounds等编程语言的结合,在丰富了学生的学习体验的同时,无论是对编程语言的普及,亦或是对Mindstorms的普及都是有很大的帮助。

  从学习编程语言,到通过掌握的编程语言能力驱动机器人,是一种对我们周围世界观察视角的重大改变。也许只有当今天软硬结合的到来,我们才能够说学习编程语言是为了解决生活中的实际问题,我们当把生活中遇到的问题通过编程的能力来解决,也更加符合当下STEM教育的目标。

  当我们对硬件编程时,有时我们会遇到难以预测的复杂环境,我们需要通过传感器等获得更加真实的复杂多变的周围数据,而在机器人编程时最为复杂的是能够创建一个模型,而这个模型能够解释机器人的传感器数据以便机器人做出正确的决策,而这是在纯软件编程学习中难以体会到的。

  • Scratch编程语言不是最早的少儿编程语言,但的确是目前最为成功的;
  • LOGO语言亦或是Scratch编程语言本身并不赚钱,它们是很好的工具;换句话说,编程语言本身并不能够创造经济价值,但是围绕编程语言的服务可以是商业化的;
  • Scratch只是众多图形化编程语言中的一种,图形化编程语言也并非都是为儿童学习编程开发的;
  • 一些青少儿编程语言有其非常明显的商业化倾向,比如Swift Playgrounds,但是其最终还是需要靠服务来转化;
  • 一些硬件也有自己独有的编程语言,比如Micro:bit有自己的编程语言,软银的Pepper机器人也有自己的编程学习语言;
  • 会不会有新的青少儿编程语言出现?会有,但是这个过程可能并不会太顺利;

Powered by Froala Editor