Scartch编程培养新一代富有创造力,系统性的思考者(三)
When personal computers were first introduced in the late 1970s and 1980s, there was initial enthusiasm for teaching all children how to program. Thousands of schools taught millions of students to write simple programs in Logo or Basic. Seymour Papert’s 1980 book Mindstorms presented Logo as a cornerstone for rethinking approaches to education and learning. Though some children and teachers were energized and transformed by these new possibilities, most schools soon shifted to other uses of computers. Since that time, computers have become pervasive in children’s lives, but few learn to program. Today, most people view computer programming as a narrow, technical activity, appropriate for only a small segment of the population.
1970年到1980年期间,个人电脑开始出现。教每一个小孩学习编程的热情高涨起来。上千所学校教上百万的孩子如何用logo和Basic语言,西摩尔·帕普特(Seymour Papert)的《头脑风暴》把Logo语言作为重新思考教育和学习方法的基石。
西摩尔·帕普特
《头脑风暴》
在个人计算机问世前,帕普特就已经预见孩子将在类似互联网的环境下,使用计算机一样的设备,获取海量的信息,从而辅助学习、提高创造力。20世纪60年代末,帕普特创造了编程语言Logo,为的是教孩子如何使用计算机。
尽管有些孩子和老师们被这种新的可能性所激发和改变,但大部分学校很快转了方向,开始教计算机的其它应用。从那时候起,计算机在孩子们普及开来,但是很少有人学习编程。而到了今天,很多人把编程看做一个狭窄的专业技能,只有一小部分人能够运用。
What happened to the initial enthusiasm for introducing programming to children? Why did Logo and other initiatives not live up to their early promise? There were several factors:
为什么教孩子学习编程的热情减弱了,为什么Logo和其它早期语言没有实现当时的初衷,有几个因素:
Early programming languages were too diffcult to use, and many children simply couldn’t master the syntax of progra-mming;
早期的编程语言很难,很多孩子难以掌握其中的语法;
Programming was often introduced with activities (such as generating lists of prime numbers and making simple line drawings) that were not connected to young people’s interests of experiences;
学习编程经常用跟年轻人兴趣和经验无关的例子来学习(例如生成素数列表和制作简单的线条图)
Programming was often introduced in contexts where no one could provide guidance when things went wrong—or encourage deeper explorations when things went right.
编程涉及的问题经常处于这样一个情况,当程序出错时没有人可以提供指导,当程序成功时没有人提供鼓励深入下去。
Papert argued that programming languages should have a “low foor” (easy to get started) and a “high ceiling” (opportunities to create increasingly complex projects over time). In addition, languages need “wide walls”
(supporting many different types of projects so people with many different interests and learning styles can all become engaged). Satisfying the triplet of low-foor/high ceiling /wide-walls hasn’t been easy.
帕普特认为编程语言应该有一个低门槛(容易进入)和高天花板(随着时间推移,有机会创造复杂的应用项目)事实上,语言需要有广袤的基墙(可以支持不同兴趣,不同类型的人参与进来开发不同类的项目),但是满足低门槛/高天花板/广袤的基墙的三元组合的语言很难发明。
In recent years, new attempts have sought to introduce programming to children and teens. Some use professional programming languages like Flash/ActionScript; others use new languages (such as Alice7 and Squeak Etoys5) developed specifcally for younger programmers. They have inspired and informed our work on Scratch. But we weren’t fully satisfed with the existing options . In particular, we felt it was important to make the foor even lower and the walls even wider while still supporting development of computational thinking. To achieve these goals, we established three core design principles for Scratch: Make it more tinkerable,more meaningful, and more social than other programming environments. In the following sections, we discuss how each of these principles guided our design of Scratch.
近年来,有了一些向小孩和青年人介绍编程的新尝试,有些使用了一些专业的编程语言,例如Flash/ActionScript;有些使用了一些专门为年轻人开发的新的语言,例如Alice7和Squeak Etoys5;这些给了我们新的启发。但是我们对上面的这些语言也不是非常的满意,我们觉得在能支持得起计算思维发展的前提下,这个语言门槛应该更低,并且这个基墙应该更长。
为此,我们给Scratch设想了3个核心设计原则:
更好搭建;
更有意义;
更有社交属性;
接下来我们将要探讨这些原则如何指导我们的Scrath设计的。
更好搭建
Our Lifelong Kindergarten research group at the MIT Media Lab (http://llk.media.mit.edu) has worked closely with the Lego Company (http://www.lego.com/) for many years, helping develop Lego Mindstorms and other robotics kits. We have always been intrigued and inspired by the way children play and build with Lego bricks. Given a box full of them, they immediately start tinkering, snapping together a few bricks, and the emerging structure then gives them new ideas. As they play and build, plans and goals evolve organically, along with the structures and stories.
我们麻省理工学院媒体实验室的终身幼儿园研究小组(http://llk.media.mit.edu)与乐高公司(http://www.lego.com/)密切合作多年,帮助开发乐高头脑风暴和别的机器人套件。我们一直被儿童玩乐高积木展现的创造性所吸引和激发灵感。给他们一盒子积木,他们立即开始搭建,一起对齐一些砖块,伴随着一些新的结构出来,他们新的想法也源源不断。当他们玩耍和搭建积木时,计划和目标随着结构和故事而有机地演变着。
We wanted the process of programming in Scratch to have a similar feel. The Scratch grammar is based on a collection of graphical “programming blocks” children snap together to create programs (see Figure 2). As with Lego bricks, connectors on the blocks suggest how they should be put together. Children can start by simply tinkering with the bricks, snapping them together in different sequences and combinations to see what happens .There is none of the obscure syntax or punctuation of traditional programming languages. The foor is low and the experience playful.
我们希望用Scratch编程的过程有类似的体验,Scratch的语法是建立在图形化的“程序积木”上,孩子们通过搭建这些“程序积木”来编程,这些积木之间的联系告诉孩子们如何搭建,孩子们一开始只是简单的把积木用不同的顺序搭在一起然后观察有什么反应。这里没有传统编程语言的隐晦语法和复杂拼写。门槛非常低并且学习体验很有趣。
用搭积木的方式编程
Scratch blocks are shaped to fit together only in ways that make syntactic sense. Control structures (like forever and repeat) are C-shaped to suggest that blocks should be placed inside them. Blocks that output values are shaped according to the types of values they return: ovals for numbers and hexagons for Booleans. Conditional blocks (like if and repeat-until) have hexagon-shaped voids, indicating a Boolean is required.
只有当语法正确的时候,积木才能拼在一起,控制结构(比如永远执行和重复)是C型,这样其它的积木可以被包进去。有输出值的积木形状由值的类型来决定。数字型的是椭圆形,布尔型的是六边形。条件结构的积木(比如if或者重复执行直到)内含六边形空洞,表明需要一个布尔型。
The name “Scratch” itself highlights the idea of tinkering, as it comes from the scratching technique used by hip-hop disc jockeys, who tinker with music by spinning vinyl records back and forth with their hands, mixing music clips together in creative ways. In Scratch programming, the activity is similar, mixing graphics, animations, photos, music, and sound. Scratch is designed to be highly interactive. Just click on a stack of blocks and it starts to execute its code immediately. You can even make changes to a stack as it is running, so it is easy to experiment with new ideas incrementally and iteratively. Want to create parallel threads? Simply create multiple stacks of blocks. Our goal is to make parallel execution as intuitive as sequential execution.
The scripting area in the Scratch interface is intended to be used like a physical desktop You can even leave extra blocks or stacks lying around in case you need them later. The implied message is that it’s OK to be a little messy and experimental. Most programming languages (and computer science courses) privilege top-down planning over bottom-up tinkering. With Scratch, we want tinkerers to feel just as comfortable as planners.
The emphasis on iterative, incremental design is aligned with our own development style in creating Scratch. We selected Squeak as an implementation language since it is well-suited for rapid prototyping and iterative design. Before we launched Scratch in 2007, we continually field-tested prototypes in real-world settings, revising over and over based on feedback and suggestions from the field.
Scratch这个名字强调了拼贴这个想法,这个名字来自于hip-hop DJ, 他们用手把唱片拨来拨去,用一个有创意的方法把不同的音乐片段拼在一起。在Scratch里,这个创意是相同的 ,我们把图片、动画、照片、音乐和声音拼在一起。
Scratch具有高度的交互性,仅仅点击一下积木堆,它就会开始执行程序。你甚至可以在它运行的时候来改变积木。所以它非常容易试验新的想法和迭代。如果想要多线程并行运行,只需要搭建不同的积木块就可以了。我们的目标是把并行操作变得跟顺序运行一样的直观。
Scratch的脚本编辑区域就像一个摆放积木的桌子,你甚至可以把多余积木和积木堆放在上面以便后续使用。有一点杂乱和实验性是可以接受的。很多编程语言(计算机课程)更偏向于自顶向下的设计而不是从底层进行向上的拼贴。而在Scratch里面,我们更希望从底层向上的拼贴和跟自顶向下设计一样舒服。
Scratch的脚本编辑区域
Scratch的开发过程中一直采用迭代式增量模式, 我们选择Squeak作为实现语言,因为它非常适合快速原型设计和迭代设计。 在我们于2007年推出Scratch之前,我们不断在现实环境中对经过精心设计的原型进行测试,并根据来自全球的反馈意见和反馈进行反复修改。
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com