如何选择适合孩子的编程软件?教育性质与专业编程语言的区别解析
大家在给孩子选编程软件之前,务必清楚教育性质的编程语言和专业的编程语言的差异。教育性质的编程语言如 Logo、Scratch、Etoys、Alice 等,专业的编程语言如 vc、Pascal、VB、Java、.net 等。教育性质的程序设计语言主要是用于学习的工具,与用于编写真实环境下应用程序的编程语言有所不同。

许多教育性的程序设计语言都给出了建议的学习顺序,也就是学习一组编程语言的顺序。这些语言相互关联,每种语言都以其他语言为基础。这样一来,学生就能够实现从简单且易于理解的娱乐性编程环境到专业开发环境的转变。
大家看看搜到的一张表格,这张表格是现在比较流行的少儿编程软件,并且有详细解释。
年龄
经验水平
合适的编程语言
学龄前–二年级
无/不适用
二年级–四年级
无/不适用
Logo 以及 Scratch、Etoys、StagecastCreator
五年级–八年级
很少或没有经验
Lego Mindstorm 、Etoys 、AgentSheets 、Alice 、Baltie 3 、以学习为导向的 BASIC 、Phrogram 、StagecastCreator 以及 smallBASIC 。
五年级–八年级
有一些经验
Squeak 是一种全功能的 BASIC 语言。Greenfoot 是与之相关的一个工具。Pascal 是另一种编程语言。
高中
很少或没有经验
Squeak 以及 Greenfoot、Pascal 都是全功能的 BASIC 语言。
高中
有一些经验
Squeak 以及 Greenfoot 或者 BlueJ,还有 newLISP、OZ。大部分其他的编程语言。
大学
不是主要专业,假定没有经验
Squeak 、Greenfoot 或者 BlueJ ,以及 newLISP 、功能完备的 BASIC 。
大学
开始计算机科学或程序设计课程
NetBeans BlueJ 是一个开发工具。
Logo 是专门为孩子们设计的入门程序设计语言。学习 Logo 首先要认识“turtle graphics”。“turtle graphics”最早可追溯到 1969 年,在 proto-Lisp 中是“turtle robots”。现代的 Lisp 实现中有一个名为“turtle”的抽象绘图设备,它专门用于绘制龟状图形,其目的是吸引孩子们进行编程。Seymour Papert 是 Logo 语言的发明者,他是构造论的支持者,构造论属于多种构成主义的学习理论。Papert 认为,像写作这类活动,会在早期接受计算文化的过程中自然而然地被学会。所以 Logo 设计的初衷,一方面是要教会孩子们编程和计算文化中的一些概念,另一方面是要增强孩子们对日益以科技为主导的文化的适应。比开始进行智力教育更早重要的是,这样能让孩子们避免在学习中形成长期依赖,也就是学习的东西都是所谓权威的人提出的……这样的小孩既无法给自己准确定位,也会让社会觉得他们在智力上是无助的。对 3 岁左右的孩子进行实验并跟踪 30 年发现,大多数都在教育上取得了成功。Logo实际上是 Lisp 的一种线性形式。对于高年级学生来说,Logo 可以用来阐释计算机以及人工智能中的某些概念。Brian Harvey 撰写了一系列名为“Computer Science LogoStyle”的文章,这些文章对通过 Logo 学习计算机科学的学生很有帮助。Logo 现今在各种平台上得到了广泛的应用。并且它提供了免费版以及商业版。
Scratch 是由麻省理工学院的 Dr. Mitchel Resnich 完成的。他和他所在的“终身幼儿园(MIT's Lifelong Kindergarten researchgroup)”研究组成员一同完成了 Scratch 的创作。Scratch 的设计灵感来源于在教小朋友们编程过程中所遇到的各种困难。它的名称源自 DJ 混录唱片的技术。大概认为 DJ 混唱片与搭乐高积木、用 Scratch 编程在某种程度上很相似。Scratch 能让编程变得如同搭积木一般。以往,许多教程常常借助方形、圆形等来辅助我们理解高深的编程理论,如对象、实例等,但往往越讲越让人困惑。如今,Scratch 出现了,一切都将发生改变。编程从此会变得像搭乐高积木那般简单!Scratch 目前已能提供 Windows 版和 MAC 版的下载,Linux 版也在研发进程中。编程界面包含操作符、变量、代码、图片、声音、程序等部分。编程命令依据动作、感觉等形象特征进行分类,并且这些编程命令都可以进行拖拽操作。成套的逻辑语句通过突出或特殊形状等方式来辅助编程。“IF...THEN...ELSE...”这个图形块呈黄色且呈“E”状,其中有一个菱形的洞可用来填写条件,在“E”的三横中间能够加上不同的操作。在编程过程里,用户能够添加本地或者 Web 上的图片和声音,并且添加的方式都是拖拽。Scratch 能够把项目文件保存为本地的“.sb 文件格式,并且能够通过一个按钮把它上传到 Scratch 主页上。其他用户凭借这个功能可以对该项目进行评论。另外,还可以从 Scratch 网站上下载一个名为“.SB file directly”的 Java applet,利用它可以将 Scratch 项目植入任何一个站点。
Scratch 对软件基础教学带来了一次变革。它让那些对编程感到厌烦的人眼前为之一亮。Scratch 能让编程易于上手且充满乐趣,同时又不会丧失编写复杂应用程序的能力。
微软 Small Basic 是一个入门程序设计语言,它是 Visual Basic 的简化版本。其目的是把“乐趣”带回编程中。Small Basic 确实很小,仅有 15 个关键字,且每个关键字都很自然易懂。Small Basic 提供了特别的对象函数库,其中包含了人们普遍感兴趣以及孩子们感兴趣的东西,比如 Flickr。孩子们可以在线创建有趣的交互程序,也可以在本地创建有趣的交互程序。Small Basic借助了微软的 Visual Studio IDE 所提供的自动完成功能以及上下文相关的帮助。
Scheme 最初是为教学目的而设计的语言。在 1975 年,这主要是因为当时的 Lisp 仍在硬件实现上具有高效率,所以采用了非递归的控制结构来实施λ演算。Guy L.Steele,Jr 与 Gerald Jay Sussman 创造出了 Scheme 这一语言。他们通过运用简洁且高效的 Lisp 过程调用,让 Scheme 成为了最快的解释型语言中的一种。从语言教学方面来看,可以用 domain-specificlanguages(DSL,特定领域语言)这种方式来进行,也可以通过 MetacircularEvaluator(元循环计算)这种方式来进行。1984 年出版的《Structure and Interpretation of Computer Programs》把这种教育理念纳入了经典教学课本。它改变了 Pascal 在大学程序设计语言中的优势地位。
1984 年 Abelson 和 Sussman 出版了《Structure and Interpretation of Computer Programs》(SICP),这本书给上世纪八十年代的计算机课程设计带来了根本性的改变。更为重要的是,SICP 打破了语法入门课程的垄断。它不再仅仅围绕某个当前流行的程序设计语言的语法来组织课程,而是将学习计算科学的重点放在了以下几个方面:函数抽象、数据抽象、流、数据导向编程、消息传递对象的实现、解释器、编译器以及寄存器机器。”
短时间内,美国以及世界各地的许多大学将第一门计算机科学课程改为了 SICP 和 Scheme。SICP 成为了 MIT Press 最畅销的图书之一。与 SICP 一同,Scheme 得到了广泛应用,它不仅在印第安纳大学、MIT、耶鲁大学开设的少数课程中使用,还成为了世界性入门语言的选择。自那之后,Scheme 社区为低年级课程提供了一些专门定制的教育编程环境。其中包括 PLT Scheme 环境和 DrScheme 环境。同时,还提供了免费的教师培训教材,分别是 How to Design Programs 和 TeachScheme!。newLISP的目标是提供一种磁盘占用和系统资源使用量都较少的语言。它快速、强大且跨平台,是全功能的脚本版 Lisp 程序设计语言。由于它具有简单、一致、线性的特点,所以特别适合初学者。newLISP 能够最大程度地降低学习曲线,给程序员带来更多的创造性和快乐。
CommonLisp 是通用的且为专业的语言。它具备多泛型的特点。CommonLisp 支持过程式编程范式,也支持函数式编程范式,还支持面向对象的编程范式。它是一个动态程序设计语言,能够促进迭代编译,进而促使高效运行时程序快速发展。CommonLisp 与大部分其他程序设计语言存在差异。它采用 S-expressions(S 表达式)来对代码和数据结构进行表示。同时,函数和宏调用是通过链表来实现的。将各种 Lisp 的变体进行标准化并统一这一工作已经被提上日程,这并非是一个特定的实现,而是一个语言规范。现在存在一些 CommonLisp 的标准实现,其中有商业产品,也有开源软件。
AgentSheet 是一款屡获大奖的工具,可用于游戏和仿真制作。它具有不同的使用难度,简单时能让中学生通过制作视频游戏来学习计算机知识,复杂时则能让 NASA 的科学家模拟航天飞机的有效负荷。AgentSheet 有一个完整课程提供支持,这个课程叫做 Scalable GameDesign(可扩展的游戏设计)。它涵盖的游戏范围很广,从简单的类似青蛙的游戏,到复杂的人工智能仿真游戏。AgentSheet 可以支持游戏,包括动画、交互、声音以及语音合成/识别(仅适用于 Mac)。AgentSheet 还能支持科学应用程序,像绘图、输出到电子表格以及 3D 绘图(仅适用于 Mac)。并且 AgentSheet 有英语、希腊语和日语版本。Lego Mindstorms以 AgentSheets 为基础,开发出了 LegoSheets 程序设计语言。这种语言的学习曲线比 Brick Logo 平缓很多。
Alice 是一款免费的编程软件,它的目的是教会孩子们进行事件驱动的面向对象编程。编程者能够运用现代的集成开发环境(IDE),通过拖拽的方式来创建交互式的故事程序。Alice 的目标群体主要是大多数中学阶段且有计算机使用经验的女生,这种方式可谓是寓教于乐。另外,还有一个名为 Story TellingAlice 的 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 J.Robot 是 Karel 的 Java 实现。
Learn to ProgramBASIC 是一个 Basic 解释程序,它通过互动课程教会中学生 Basic。在 Basic 语言中,它加入了一些游戏,其中包括对 2D sprite 的支持。在 LTPB 中编写的程序能够脱离 LTPB 而独立执行,它是一个可以自由分发的“runner”。
LegoMindstorms 是一个统称,它集合了可编程的 Lego 砖块、电动马达、传感器以及 Lego Technic 部分(包含齿轮、轮轴、横梁)。Mindstorms 源自于益智玩具中可编程传感器模具(programmable sensorblocks)。1998 年上市了第一个 Lego Mindstorms 的零售版本,当时它被叫做 Robotics Invention System(RIS)。2006 年上市的是最近的版本 Lego MindstormsNXT。许多语言都具备对 Mindstorms 进行编程的能力,其中有 Logo ,还有 Basic ,以及 Java 的衍生版,同时也包括 Smalltalk 和 C 语言。ComputerClubhouses 是一个专注于 Mindstorms 编程的网站。
这使得它特别容易开发游戏以及寓教于乐的程序Phrogram 是一种被简化的结构化语言,它具备基于组件进行开发的特性,其中包括类和方法。Phrogram 能够在现代的集成开发环境(IDE)中进行建模,像 Eclipse 和 Visual Studio.NET 等。并且,它还可以帮助初学者为这些以及其他的专业开发环境做好准备。
RoboMind 是一个具有教育性质的简单编程环境,它可以让初学者接触到机器人编程。RoboMind 向人们介绍了流行的编程技术,以及一些关于机器人学和人工智能的知识。人们可以使用阿拉伯语、中文、荷兰语、英语和瑞典语来对机器人进行编程。
StagecastCreators 是以示范编程为基础的可视化编程系统。用户能够通过移动屏幕上的图标,为物体(角色)设定规则,从而对整个系统进行操作。用户可以创建 2D 模型,以模拟一个概念,或者创建多层次的游戏,以及交互的故事等。
Etoys 的创意来源于计算机屏幕上那些可以编程的实体。Etoys 提供了一个脚本对象模型,这个模型简单且高效。它还提供了一个创作环境,这个环境用户媒体丰富。该创作环境涵盖了 2D 和 3D 图形、图片、文本、粒子、演示文档、网页、视频、声音以及 MIDI 音乐。它能够与其他 Etoys 用户实时共享桌面,并且可以通过互联网进行身临其境的指导。Etoys 具备多语言的特性。它在美国取得了成功,在欧洲取得了成功,在南美取得了成功,在日本取得了成功,在韩国取得了成功,在尼泊尔也取得了成功。并且,这个项目的目标受众是 9 至 12 岁的儿童。
Squeak 是一种现代的程序设计语言和执行环境,它是开源的且功能齐全。Smalltalk 是一种面向对象的程序设计语言,具有动态类型和反射特性,它被用于支持“人机共栖”这个“新的世界”的计算典范。它如同 Lisp 一般,具备影像式持久性。正因如此,凭借语言自身便能够对任何事物进行修改,这可参见 Smalltalk#反射。Smalltalk 在面向对象编程以及 JIT 及时编译等领域给行业带来了极为深远的影响。Squeak 是一种工具,在很多开发项目中被使用,其中包括多媒体方面的应用,还有教育方面的平台以及商业网络的应用程序等。StéphaneDucasse 维持着大量与 Smalltalk 和 Squeak 相关的在线书籍。现如今使用范围最为广泛的语言是 Objective-C,它采纳了诸多 Smalltalk 的设想。