这是维基百科上的一个条目 ,为了找适合孩子们的编程语言找到的,过节期间实在看不进去,索性翻译了,原因是看到小学四年级的表弟,对玩游戏十分痴迷,回想起我当初也肯定是那样,而且更为疯狂。还记得当年想学习编程,仍然有点耿耿于怀:既没有任何背景知识,也没有人指导,方法还不对;书倒是买了不少,效果很一般。最开始选择的是C语言系列,看书枯燥的很,就扔在那里了,直到最近几年有了深入的体会。汗,早期教育还是相当重要的。
翻译的过程中还是能有不少收获的:比如说,尽管能够看懂原文,但是翻译能够加深理解,经常会发现粗读时漏掉的部分或者是理解错误的地方。又比如说,翻译过程中工具的利用是必不可少的,Google翻译时经常有完全错误的翻译,Lingoes就很不错,基本上用Lingoes和专业术语词典就OK了;剩下的就是文章本身带来的了,如何教导小孩编程,很多语言都是有学习顺序或步骤的(Learning Path),并且学习过程中不仅仅是了解编程的一些概念,计算机中的术语,更重要的是对逻辑思维的训练,更早的接触计算文化(computing culture),这就是所谓的“从娃娃抓起”。兴趣是关键,比如:有趣的绘图(我接触的第一个程序就是98下的画图,当然了那时谈不上有趣),轻易能完成的Story-telling,甚至是自己设计的游戏都能引起小孩的兴趣(MSDN博客Coding4Fun 也讲到了,可以去看看),如果语言本身很简单,则会使得孩子们进一步深入的学习下去,寓教于乐。
翻译完后统计了一下,居然也有5000多字,不算少。当然了,翻译的质量也是因人而异的,这里贴一些献丑了,全文可以去我的译言 看看。
教育编程语言
一个教育性质的程序设计语言,是一种主要设计于用来学习的工具,是与用于编写真实环境下的应用程序编程语言不大相同的一种编程语言.
Learning Paths(学习顺序)
许多教育性质的程序设计语言都提供建议的学习顺序,即是学习一组编程语言的顺序,每种语言都建立在其他语言的基础上,使得学生能够完成从简单又易于理解的娱乐性编程环境到专业开发环境的转变。
下面是一些著名的程序设计语言。
基于Smalltalk/Squeak
作为“OLPC(One Laptop per Child,每个孩子都有一台电脑)”项目的一部分,Smalltalk提出一个建议的语言学习顺序,其中的每种语言都被设计成下一种的入门和基础。这个顺序是:Scrath->Etoys->Squeak->任意Smalltalk 。在学习的过程中,每一种语言都提供了图形化的编程环境,不仅是用于教会孩子们一些编程的概念,而且是包含物理和数学知识的模拟及讲述故事的一些练习。Smalltakl和Squeak作为全功能的应用程序开发语言,在过去的数十年中已经变得十分有名了,而Scratch是孩子们学习的工具。
Scratch是一种基于Squeak、并由Squeak实现的可视化程序设计语言。通过让孩子们创建游戏,视频和音乐,达到教会孩子们一些编程概念的目的。在Scratch中,所有的互动物体,图形和声音都能够很轻松的导入到新的程序,通过新的方式将其组合,通过这种方法,初学者能够很快的看到结果,并且有兴趣深入学习下去。在Scratch社区中,已经开发和上传了超过100,000个工程项目。Scratch是由MIT多媒体实验室开发的。
Etoys的创意来源计算机屏幕上那些可编程的实体。Etoys提供一个简单高效的脚本对象模型,和一个用户媒体丰富的创作环境,涵盖了2D和3D图形,图片,文本,粒子,演示文档,网页,视频,声音和MIDI音乐,能够与其他Etoys用户实时共享桌面,通过互联网进行身临其境的指导。Etoys是多语言的,已经在美国,欧洲,南美,日本,韩国,尼泊尔等地取得了成功。这个项目是针对9至12岁的儿童的。
基于Lisp
Lisp是现如今使用的计算机语言家族中第二古老的语言,因此拥有大量的方言以及广泛的实现。Lisp最初是作为计算机程序的实用数学记法而创立的,基于λ演算,这使得它特别适合于理论计算的教学。作为最早的程序设计语言之一,Lisp开创了许多计算机科学概念的先河,包括树形数据结构、自动存储管理、动态类型、面向对象编程、自足执行的编译器(self-hosting compiler)。这些概念对于学习计算机科学而言是十分有帮助的。
LISP语言的名字来源于“LIST Processing language(列表处理语言)”。 链表是Lisp中最主要的数据结构之一,Lisp本身代码就是由链表构成的。因此,Lisp程序能够将源代码当作某种数据结构来进行操作,这就允许程序员创建新的语法,甚至是能够把新的特定领域的语言嵌入到Lisp。所以Lisp对于学习语言的设计,创建自定义语言是相当有用的。
合理的学习顺序是:Logo->Scheme/newLisp(教育版变体)->Common Lisp(职业版变体)
Logo是特别为孩子们设计的入门程序设计语言。学习Logo的第一步是认识“turtle graphics”(龟状图形,最早可以追溯到1969年,proto-Lisp中的“turtle robots”)。在现代的Lisp实现中,有一个叫“turtle”的抽象绘图设备,专门用来绘制龟状图形,是为了吸引孩子们进行编程。Seymour Papert,Logo语言的发明者,是构造论的支持者,构造论是多种构成主义的学习理论。Papert认为像写作之类的活动,会在早期接受计算文化过程中自然而然的学会。所以Logo设计的初衷不仅仅是为了教会孩子们编程和计算文化中的一些概念,而是为了增强孩子们对日益以科技为主导的文化的适应。
“比开始较早进行智力教育更为重要的是,这能够使孩子们避免学习中形成的长期依赖,即学习的东西都是由所谓权威的人提出的…而这样的小孩无法给自己准确的定位,或者让社会觉得他们是在智力上通常是无助的。”
通过在3岁左右的孩子进行实验,对他们30年的跟踪记录发现,大多数都取得了教育上的成功。Logo实际上是一个Lisp的线性版本,对于高年级的学生而言,Logo能够用来解释计算机甚至是人工智能中的一些概念。Brian Harvey写过一系列的文章“Computer Science Logo Style”,对那些通过Logo学习计算机科学的学生而言是很有帮助的。Logo目前已广泛应用于各种平台,同时提供了免费版和商业版。
Children
AgentSheet 是屡获大奖的游戏和仿真制作工具,它可以简单到让中学生通过制作视频游戏来学习计算机知识,也可以复杂到让NASA的科学家来模拟航天飞机的有效负荷。AgentSheet是由一个叫做Scalable Game Design(可扩展的游戏设计)的完整课程提供支持的,它从简单的像青蛙一样(Frogger-like)的游戏一直到复杂的人工智能仿真游戏。AgentSheet支持游戏(动画,交互,声音,语音合成/识别(Mac)),科学应用程序(绘图,输出到电子表格,3D绘图(Mac))。AgentSheet有英语,希腊语和日语版本。Lego Mindstorms以AgentSheets为基础,开发了LegoSheets程序设计语言,比Brick Logo的学习曲线要平缓的多。
Alice 是一个免费的编程软件,旨在教会孩子们事件驱动的面向对象编程。编程者可以使用现代IDE,以拖拽的方式创建交互式的故事程序。Alice目标群体是大多数中学阶段的有计算机使用经验的女生,可谓寓教于乐。还有一个叫Story Telling Alice的Alice的变体,能够提供更强的讲故事能力。
Baltie 是图形化的编程工具,适合儿童,青少年(成人)。Baltie是软件中一个主要的角色,一个巫师,用来执行各种命令、将出现在他视野的图片变魔术。通过Baltie的帮助,孩子们能够很快认识到什么是计算机,如何对计算机进行操作和编程,这些都是在玩的过程中实现的。Baltie同样能够帮助逻辑思维训练,而且对孩子们的知识并没有多少要求,只要求会玩和想象力。Baltie已经在许多国家的小学中采用了。新版本的Baltie 4甚至完全支持C#,更多的信息可以在SGP Systems中找到。
Guido van Robot 是一个机器人控制程序,有点类似于Logo和Karel J. Robot,使用了Python语法中的很少一部分。Guido van Robot被设计成对任何高级语言都尽量简化和通用。还有一个叫RUR-PLE的变体,它包括了完整的Python语法和一些经典的课程。
Karel,Karel++,和Karel J.Robot 是为那些完全的初学者而准备的。用来在一个由长方形街道网格组成的城市中控制一个简单机器人。Karel是一个自主的程序设计语言,而Karel++是Karel的C++实现,Karel J. Robot则是Karel的Java实现。
Learn to Program BASIC 是一个通过互动课程教会中学生Basic的Basic解释程序,在Basic语言中加入了一些的游戏,包括对2D sprite支持。在LTPB中编写的程序能够脱离LTPB独立执行,即是一个可以自由分发的“runner”。
Lego Mindstorms (乐高机器人)是集合了可编程Lego砖块、电动马达、传感器、Lego砖块、Lego Technic部分(齿轮、轮轴、横梁)的统称。Mindstorms起源于益智玩具中可编程传感器模具(programmable sensor blocks)。第一个Lego Mindstorms的零售版本在1998年上市,当时叫做Robotics Invention System (RIS)。最近的版本是2006年上市的Lego Mindstorms NXT。许多语言都能对Mindstorms进行编程,包括Logo、Basic、Java的衍生版、Smalltalk和C语言。Computer Clubhouses是专注于Mindstorms编程的网站。
Phrogram (第二代的KPL,MS Kid's Programming Language)是2006年引入的一个商业的、易于学习的程序设计语言和集成开发环境。它强调图形和声音,使得它特别容易开发游戏,寓教于乐的程序。Phrogram是简化的结构化语言,提供了基于组件开发的特性,例如类和方法。Phrogram在现代IDE中进行建模,例如Eclipse 和Visual Studio. NET,并可以帮助初学者为这些或者其他的专业开发环境做好准备。
RoboMind 是一个简单的教育性质的编程环境,能让初学者对机器人编程。RoboMind介绍了流行的编程技术、一些机器人学和人工智能的知识。人们能够使用阿拉伯语、中文、荷兰语、英语和瑞典语对机器人进行编程。
StagecastCreators 是基于示范编程的可视化编程系统。用户通过移动屏幕上的图标,为物体(角色)制定规则来操作整个系统。用户可以创造2D模型来模拟一个概念,多层次的游戏,交互的故事等。
年龄 |
经验水平 |
合适的编程语言 |
学龄前–二年级 |
无/不适用 |
Logo style: Logo, Guido van Robot, Karel. Scratch, Baltie 2, Stagecast Creator |
二年级–四年级 |
无/不适用 |
Logo, Scratch, Etoys, Stagecast Creator |
五年级–八年级 |
很少或没有经验 |
Lego Mindstorm, Etoys, AgentSheets, Alice, Baltie 3, learning oriented BASIC, Phrogram, Stagecast Creator |
五年级–八年级 |
有一些经验 |
Squeak, full featured BASIC, Greenfoot, Pascal |
高中 |
很少或没有经验 |
Squeak, Greenfoot, Pascal, full featured BASIC |
高中 |
有一些经验 |
Squeak, Greenfoot 或 BlueJ, newLISP, OZ. Most other programming languages. |
大学 |
不是主要专业,假定没有经验 |
Squeak, Greenfoot 或 BlueJ, newLISP, full featured BASIC |
大学 |
开始计算机科学或程序设计课程 |
Haskell, OZ, Scheme, Qi, Squeak, NetBeans BlueJ |