作为“OLPC(One Laptop per Child,每个孩子都有一台电脑)”项目的一部分,Smalltalk提出一个建议的语言学习顺序,其中的每种语言都被设计成下一种的入门和基础。这个顺序是:Scratch->Etoys->Squeak->任意Smalltalk。在学习的过程中,每一种语言都提供了图形化的编程环境,不仅是用于教会孩子们一些编程的概念,而且是包含物理和数学知识的模拟及讲述故事的一些练习。Smalltalk和Squeak作为全功能的应用程序开发语言,在过去的数十年中已经变得十分有名了,而Scratch是孩子们学习的工具。
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 目前已广泛应用于各种平台,同时提供了免费版和商业版。
Scheme 最初是在 1975 年出于教学目的而设计的语言(参加[9] LISPs of the day used non-recursivecontrol structures to implement lambda calculus以非递归的控制结构实施λ演算),这主要是因为Lisp 仍然在硬件实现具有高效率。Guy L.Steele,Jr 和 Gerald Jay Sussman 创造出了 Scheme,通过使用简洁高效的 Lisp 过程调用,使得 Scheme 成为最快的解释型语言之一。从语言教学上来讲,可以通过以 domain-specific languages(DSL,特定领域语言)和 MetacircularEvaluator(元循环计算)的方式来进行。1984年出版的《Structure and Interpretation of Computer Programs》(《计算机程序的构造和解释》)将这种教育理念纳入了经典的教学课本中,从而改变了 Pascal 在大学程序设计语言中的优势地位。
“Abelson 和 Sussman 在1984年出版的《Structure and Interpretation of Computer Programs》(SICP),给上世纪八十年代的计算机课程设计带来了彻底性的改变。更为重要的是,SICP 打破了语法入门课程的垄断,不再是将课程的组织仅仅围绕某个当前流行的程序设计语言的语法,而是将学习计算科学的重点放在了:functional abstraction (函数抽象), data abstraction(数据抽象), streams(流), data-directed programming(数据导向编程), implementation of message-passingobjects(消息传递对象的实现), interpreters(解释器), compilers(编译器), and register machines(寄存器机器)。”
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 的变体,能够提供更强的讲故事能力。
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”。
Oz 是旨在于教育计算机理论的程序设计语言。Oz 在单一语言中支持大多数主要的编程范式,因而学生学习范式不需要掌握多种语法。Oz 通过简单又良好分解的方式来阐述主要的编程范式的概念,包括逻辑式、函数式(包括 lazy 和 eager)、命令式、面向对象、强类型、分布式及并发编程。《Concepts, Techniques, and Models of Computer Programming》是介绍 Oz 的经典图书,还有一个免费的 Oz 标准实现的语言 Mozart Programming System。
Qi II 是一个函数程序设计语言。Qi 的核心是 Lisp 的简化版,但是它包含最常见的现代函数式语言的特性,例如模式匹配、局部套用函数、偏应用(partial applications)、静态类型检查。Qi II 还包括一个嵌入 Prolog 的发行版,叫 Qi Prolog。 所有这些特性与 Lisp 环境的结合,使得 Qi 在某种意义上可以称为合理化和现代化的 Lisp。 Qi 在非商业用途上是免费的,一本经典的图书《Functional Programming in Qi》专门介绍 Qi 编程。
按年龄和程度区分所授语言
年龄
程度
适宜语言
学龄前–二年级
无/不适用
Logo style: Logo, Guido van Robot, Karel. Scratch, Baltie 2, Stagecast Creator