总机电话:010-64522026   编辑部:010-62178764   邮发代码:82-418   刊号:ISSN1671-4350   定价:16.00

[专题]影响世界的编程小海龟

刘 欣 陈 染/科技学堂

2019-06/总第279期

阅读数6

如果我们把各种编程语言的标志放一起,可以凑出一个动物园,如Python的大蟒蛇、PHP的大象、Go语言的地鼠,而对于中小学教师而言,最熟悉的“动物”应该是Scratch的小黄猫和LOGO语言的小海龟。你可能不知道的是,LOGO小海龟几乎定义了现今编程教育方法的基本框架,甚至对儿童教育和计算机发展都产生了巨大影响。在本文中,我们将一同回顾“小海龟”的成长历程,以及它如何影响了世界。

“小海龟”诞生

我们今天提到的“小海龟”,是指美国麻省理工学院教授西摩尔·派普特的LOGO语言和其中的绘图小海龟。派普特在威特沃特斯兰德大学和剑桥大学获得了2个数学博士学位。在攻读第2个数学博士期间,派普特结识了影响他一生的人物让·皮亚杰。皮亚杰被公认为是仅次于弗洛伊德的心理学“巨人”,他创建的认知发展理论颠覆了人们原本对儿童发展的理解。在此之前,儿童的玩耍一直被认为是无关紧要的行为,皮亚杰则认为玩耍对儿童的知识建构起到了重要的作用。在皮亚杰的影响下,派普特来到日内瓦大学,花了4年时间,与皮亚杰共同开展数学与儿童教育的研究工作。

1-2.jpg

派普特认为:“当代文化中常见的数学恐惧症让很多人看不到数学知识的真面。一方面,他们对自己所认为的‘数学’敬而远之;另一方面,尽管他们在数学知识上没有什么困难,但却不认为那就是数学。”[1]吸收了皮亚杰的认知发展理论,派普特希望找到一种学习方法,既能与数学知识相关联,又能让儿童以他们的认知方式理解。海龟型机器人是派普特最先找到的一个入手点。

1-1.jpg

LOGO语言中的“小海龟”

1963年,派普特加入麻省理工学院,与著名人工智能科学家马文·明斯基共同研究人工智能。同时,派普特也在研究如何借助计算机辅助儿童学习。在派普特的带领下,LOGO语言和绘图小海龟机器人先后诞生。在20世纪40年代,神经生理学家沃尔特设计了一批机器人,以《爱丽丝漫游仙境》中的海龟老师命名,通过让这些机器人模拟动物行为进行大脑运行模式的研究。麻省理工学院的小海龟机器人增加了一支笔,儿童可以通过计算机上的LOGO编程控制小海龟机器人行走和绘图。而后,LOGO语言里实现了可以直接在显示器上绘制数字图形的数字小海龟。派普特把通过控制小海龟绘图的学习方法称为“小龟几何”。这是一种易于学习的几何,它有效承载了很多普遍性的数学概念。打开LOGO语言,孩子们就能看到屏幕上呈现的小海龟,输入“FD 50”,小海龟就会向前行进50个距离单位,再输入“LT 90”,小海龟就会向左转90°,如此重复4次,小海龟回到原点,画出了1个正方形。小海龟的朝向、行走、转弯的概念,让孩子们得到了一种可以把自身代入到数学中的方式,并且让他们更敢于探索和尝试解决问题。派普特在他后来出版的《因计算机而强大:计算机如何改变我们的思考与学习》(Mindstorms: Children, Computer and Powerful Ideas)里详细阐述了他的计算机辅助学习和小龟几何的理论。

“小海龟”对儿童教育和计算机行业的影响

在今天的各种编程教育工具和机器人产品中,小海龟带来的朝向、旋转、步数已经成为最基本的命令规范。除了在LOGO语言中发挥作用外,这只小海龟还启发了很多影响世界的发明。这其中我们最熟知的是乐高Mindstorms机器人和麻省理工学院媒体实验室的Scratch。

1984年,乐高第3代掌门人克伊尔德·柯克·克里斯蒂安森在一期电视节目中,看到派普特介绍LOGO与小海龟的学习思想。克伊尔德立刻安排公司与派普特联系。收到乐高公司合作邀请的派普特也很兴奋,他与他的博士生米切尔·雷斯尼克当时已经在思考如何把乐高积木与计算机教育结合。派普特和雷斯尼克希望让电子器件与积木兼容,更轻、更小、更便宜,并且能脱离计算机使用。1990年,派普特团队研发出了乐高与LOGO融合的新产品原型,乐高公司很快转化为正式产品推出。这套产品以上文提到的派普特著作命名,也就是乐高Mindstorms机器人。如今乐高机器人竞赛已经成为每年有来自超过100个国家(地区)的60余万青少年参加的赛事。

可以说,秉承了派普特教育思想的Mindstorms机器人是更强大的小海龟,学生可以给机器人设计出更多的功能,通过编程让机器人完成更复杂的行为。后来,雷斯尼克又创造了一条完全不同的方向。同样基于“做中学、玩中学”的思想,雷斯尼克希望挑战更大的目标。派普特认为,编程语言应该有“低门槛”(容易上手学习)、“高天花板”(随着学习深入可以开发越来越复杂的项目)和“宽阔空间”(能支持不同类型的项目以吸引有不同兴趣的人)[2]。以此为目标,雷斯尼克带领麻省理工媒体实验室推出了Scratch。Scratch的“低门槛”的实现主要受儿童玩乐高积木方式的启发,儿童可以从随意摆放积木块开始,把它们按不同顺序和组合搭在一起,看会有什么结果产生。像传统编程语言中的晦涩的语法和符号都不复存在,Scratch实现了真正的“低门槛”并充满好玩有趣的体验。

“小海龟”不仅在教育领域产生了影响。1968年,计算机科学家艾伦·凯来到麻省理工学院人工智能实验室参观,孩子们使用LOGO语言学习编程的情景让他感到十分兴奋。在进一步了解了派普特和皮亚杰的学习理论后,艾伦提出了Dynabook的设计概念。Dynabook仅重2磅,采用电池供电,儿童可以轻便携带,随意在任何地方使用。Dynabook使用图形化界面(GUI),让儿童能轻松地学会操作方法。但是很遗憾,受到当时科技水平的限制,Dynabook没能实际生产出来。艾伦在加入施乐帕克研究中心后,基于Dynabook的设想开发出了展示原型。1979年12月,艾伦的研究成果让来访施乐帕克研究中心的一位年轻人和他的同事们感到惊讶无比。之后这位年轻人的公司迅速推出了几乎是定义了个人电脑的新产品——Macintosh电脑。这位年轻人就是史蒂夫·乔布斯。2010年,乔布斯执掌的另一个创新产品iPad发布,计算机业界纷纷感慨:“42年后,艾伦·凯的Dynabook终于到来了。”

除了设计Dynabook,艾伦还希望能创造一种基于面向对象设计,更利于“人与计算机共生关系”的编程语言。在施乐帕克研究中心,艾伦带领研发了Smalltalk语言。在早期研发工作中,面向对象设计、小海龟(LOGO)和图形化界面构成了Smalltalk最早的蓝图。艾伦尤其提到:“FLEX,PLANNER,LOGO,META II,以及我个人基于它们的衍生思想对Smalltalk的设计产生了很大的影响。”[3]2003年,艾伦因面向对象编程语言的原创思想,对Smalltalk的研究工作,以及对个人计算机发展的基础性贡献而获得图灵奖。Smalltalk被称为“面向对象编程语言之母”,几乎所有后来的面向对象编程语言都是源于Smalltalk的设计思想,比如我们熟知的Java、Objective-C、PHP、Perl,当然也包括今天在编程教育领域备受关注的Python。

“小海龟”在今天

随着计算机行业的蓬勃发展,“小海龟”已经不仅存在于LOGO语言和海龟机器人。“小海龟”的绘图方式已经成为一种设计思想,“海龟图形学”在多种编程语言和科学研究中都得以应用。

Lindenmayer系统,简称L系统,是由荷兰乌特勒支大学的生物学和植物学家,匈牙利裔的林登麦伊尔于1968年提出的有关生长发展中的细胞交互作用的数学模型,尤其被广泛应用于植物生长过程的研究。基于L系统的分形图形的绘制就使用了小海龟绘图法,通过更高级的编程语言,能够绘制出三维的植物生长模拟图。

一些编程语言专门创建了“小海龟”的类库,便于初学者上手学习,如Small Basic、Go语言、Java、Python等。伴随着人工智能产业和编程教育的发展,Python近几年受到了更广泛的关注。Python是吉多·范·罗苏姆于1991年开发的一种解释型、高级编程、通用型编程语言。与其他语言相比,Python的语法更加优雅、简单,可读性更高,因此全球各国都把Python视为更适合教育使用的编程语言。

1-3.jpg

Scratch是编程教育启蒙阶段的优秀工具,Python则承担了帮助学生学习编码效率更高、功能更复杂的代码式编程的重任。同样为了实现“低门槛”,很多高中和大学都选择使用Python的Turtle类库作为起始学习内容。即使要使用抽象的代码和语法编码,Python Turtle依然为学生提供了直观的共鸣式学习环境。学生可以很容易地预测和理解程序的结果,并且主动探究新代码的应用和复杂逻辑的实现。

2019年,由中国科协青少年科技中心和中国青少年科技辅导员协会主办的全国青少年创意编程与智能设计大赛中新增了Python比赛项目。大赛的Python赛项面向初高中学生,赛项分为科学探索、实用工具、数字艺术和互动游戏4个类别招收作品。具体要求可以访问大赛官网(http://aisc.xiaoxiaotong.org)。

回顾“小海龟”40多年的发展,我们不禁感叹,这只“小海龟”几乎影响了今天所有编程教育产品与教育机器人产品,甚至间接影响了个人计算机和编程语言的基础性设计。派普特与皮亚杰2位教育巨匠塑造了“小海龟”的灵魂,后来的人们与“小海龟”相遇,不断激发出新的火花。在人工智能备受重视的时代背景下,我相信小海龟背后的思想宝库还有源源不断的惊喜等待我们挖掘。

参考文献

[1] 西摩尔·派普特著,梁栋译.因计算机而强大.新星出版社,2019:26-27

[2] Mitchel Resnick, John Maloney, Andrés Monroy-Hernández, et al. Scratch: Programming For All. Communications of the ACM, 2009, 52 (11):60-67

[3] Alan C. Kay. The early history of Smalltalk. ACM SIGPLAN Notices, 1993, 28(3): 69-95

以下平台可使用同一账号密码登录,点击开始同步密码

确认