这是wikipedia上的内容,转载保存,以便以后查阅,英文版见Educational programming language
主要是介绍了一些适合于教育的编程语言,分别适合于不同的个人需求。
详细内容如下:
许多教育性质的程序设计语言都提供建议的学习顺序,即是学习一组编程语言的顺序,每种语言都建立在其他语言的基础上,使得学生能够完成从简单又易于理解的娱乐性编程环境到专业开发环境的转变。
下面是一些著名的程序设计语言。
基于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岁的儿童的。
Squeak是一个现代的,开源的,功能齐全的Smalltalk程序设计语言和执行环境。Smalltalk是一个面向对象,拥有动态类型和反射 特性的程序设计语言,用来支持“人机共栖”这个“新的世界”的计算典范。像Lisp一样,它有影像式持久性(image-based persistence),所以通过语言本身能对所以任何事物进行修改(参见Smalltalk#反射)。Smalltalk在面向对象编程和JIT及时 编译等方面给行业带来了深远的影响。Squeak是在广泛开发项目中使用的工具,包括多媒体应用,教育平台和商业网络应用程序等。Squeak被设计为高 度可移植的,调试,分析和维护亦是如此,这是因为Squeak的虚拟机完全用Smalltalk编写的,Squeak的主页维护着免费的教程列 表,Stéphane Ducasse则维持着大量Smalltalk和Squeak相关的在线书籍。现如今使用最广泛的,采纳了许多Smalltalk的设想的语言是 Objective-C。
基于Java
Sun公司推荐的学习顺序是:Greenfoot->BlueJ->Netbeans/BlueJ->Netbeans/Java。
Greenfoot是一个交互式Java开发环境,主要目的是用于教育。它可以很容易的开发2D图形应用程序,例如一些模拟和互动游戏。主要是针对于高中和大学早期阶段的编程学习(Java的面向对象编程)。
BlueJ是一个完整的Java环境,是特别为课程导入教学,一年级的大学生设计的。BlueJ消除了一些复杂的Java语法,难以理解的输入输出 (I/O),并且可视化的表示出了类/对象之间的关系。BlueJ编程环境是关于教授初学者面向对象概念的大学研究项目(The Blue System)的一部分。BlueJ目的是为一年级的大学生提供一个易于使用、便于教学的Java环境,特别强调了可视化与互动技术,旨在创造出一个高度 互动的环境,鼓励试验和探索。
NetBeans/BlueJ是一个集成开发环境,旨在帮助学生从BlueJ的IDE过渡到更专业的NetBeans IDE。Sun提供了针对高中教学和使用Java/BlueJ免费课程。
NetBeans/Java是一个专业的开发平台。NetBeans既是一个网络应用程序开发平台,同时也是使用NetBeans平台的IDE(集 成开发环境)。NetBeans Platform是能够简化桌面应用程序开发的可复用性框架,提供了开发桌面应用程序所需的共通服务,使得开发者能够把重点放在实现应用程序的业务逻辑 上。NetBeans IDE是完全使用Java编写,基于NetBeans Platform的集成开发环境。NetBeans IDE与众不同的支持所有类型的Java应用程序开发(Java SE,Web,EJB和移动应用程序)。其他的特性还包括使用基于Ant的工程系统,版本控制和重构。
基于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目前已广泛应用于各种平台,同时提供了免费版和商业版。
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(寄存器机器)。”
短时间内,美国以及世界各地的很多大学把第一门计算机科学课程改成了SICP和Scheme。而SICP也成了MIT Press最为畅销的图书之一。和SCIP一起,Scheme也广泛应用,不仅仅是印第安纳大学,MIT,耶鲁大学的开设的少数课程,而是成为世界性入门 语言的选择。
自那以后,Scheme社区为低年级课程提供了一些定制的教育编程环境。其中有PLT Scheme和DrScheme环境,还提供了免费的教师培训教材:How to Design Programs 和TeachScheme!。
- newLISP旨在提供一个磁盘占用和系统资源使用少的,快速的,强大的,跨平台的,全功能脚本版的Lisp程序设计语言。因为它的简单,一致,线性的特点,特别适合于初学者。newLisp能够最大限度的减少学习的曲线并且带给程序员更多的创造性和快乐。
- CommonLisp 是通用的(专业的),多泛型程序设计语言。它支持过程式、函数式和面向对象的编程范式。作为一个动态程序设计语言,CommonLisp促进了迭代编译向 高效运行时程序的快速发展。CommonLisp和大部分其他程序设计语言不同,它使用S-expressions(S表达式)来表示代码和数据结构,而 函数和宏调用是用链表实现的。通过Lisp的标准化统一各种Lisp的变体已经提上了日程,这不是一个特定的实现而是一个语言规范。现在有几种 CommonLisp的标准实现,包括商业产品和开源软件 。
BASIC
- Basic是在1964年为那些非科学专业学生使用计算机而发明的程序语言。在20世纪60年代在小型机上非常流行,进而在20世纪70年代 末,80年代出成为微机的标准计算语言。Basic目的是满足简单学习编程的需要:初学者很容易上手,是交互的,提供明确和友好的错误信息,反应迅速,并 不需要多少对计算机硬件或操作系统的了解。短小的程序使得Basic特别适合于教学用途,你可以通过不到十行的代码就能阐述清楚出一个概念。而且 Basic并不需要对数学或者是计算机科学有多少精通的了解。Basic作为一个延续到今日的语言,拥有许多很好的自学教程和实现。参见完整的Basic 方言列表。Basic提供的建议学习顺序是:以Basic为基础的,如微软的Small Basic,Basic-256和SiMPLE到全功能的Basic,如Visual Basic .NET或Gambas。
- Visual Basic .NET可以通过Visual Basic Express版本获取,其中包括K-12 learning center (K-12学习中心)和Beginner adult learning center(成人初学者中心)。
- 微软Small Basic作为一个入门程序设计语言,是Visual Basic的简化版本。“旨在把‘乐趣’带回到编程中”。Small Basic实在是小,只有15个关键字,并且每个都自然好懂。Small Basic提供特别的对象函数库,包括使人普遍感兴趣和孩子们感兴趣的东西(例如Flickr)。孩子们能够在线或在本地创建有趣的交互程序。Small Basic利用了微软的Visual Studio IDE提供的自动完成和上下文相关的帮助。
- Gambas 是一个免费提供、易于使用的Linux版本。
- BASIC-256[5]是易于使用的Basic版本,设计用于教会孩子们计算机编程的基础知识。它使用了传统的Basic控制结构(go sub, for loops,goto),这便于孩子们理解程序流程的控制。Basic-256提供了一个内置的绘图模式,允许在屏幕上绘画。Basic-256还提供了 教程,通过有趣的练习来介绍编程的概念。
- SiMPLE是一种编程开发系统,是为了提供给普通人简单的编程能力,尤其是非专业人士。SiMPLE依稀让人想起了AppleSoft的 Basic。SiMPLE是一个编译式的语言。此外,SiMPLE允许用户将经常使用的功能创建为函数库。SiMPLE是三种略微不同语言的通 称:Micro-SiMPLE(只有4个关键字)、Pro-SiMPLE、Ultra- SiMPLE(23个关键字)。
儿童
- 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模型来模拟一个概念,多层次的游戏,交互的故事等。
大学
- A++ 是最近一个旨在创造一种程序设计语言,提供一个高效编程训练工具的尝试
- Curry 是一个教学语言,旨在合并最为重要的编程范式,即函数编程(嵌套表达式、高阶函数、延迟赋值)和逻辑编程(逻辑变量、局部数据结构,内 置搜索)。在这一过程中,Curry同样整合了两种最重要的操作原则:“Residuation”(残差)和“Narrowing”(缩小)。
- Haskell 是大学中经常用来替代LISP或Scheme的函数语言。Haskell主要目的是以同样方式进行教学、研究、程序设计,是纯粹的 函数式、富于表达的延迟赋值程序设计语言(extremely expressive lazy functional)。Haskell示例可以在线获取,同样还有许多书籍和教程。还有一个叫Helium的教育版的编译器和IDE。Haskell另 一个优势是在教学归纳法上,因为Haskell的语法在归纳证明中很有优势,就像在纸上证明一样简单,而不像Lisp/Scheme还需要引入额外的语 法。
- Oz 是旨在于教育计算机理论的程序设计语言。Oz在单一语言中支持大多数主要的编程范式,因而学生学习范式不需要掌握多种语法。Oz通过简单又良 好分解的方式来阐述主要的编程范式的概念,包括逻辑式、函数式(包括lazy和eager)、命令式、面向对象、强类型、分布式及并发编程。 《Concepts, Techniques, and Models ofComputer 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 |
二年级–四年级 | 无/不适用 | Kodu, Logo, Scratch or Etoys, Stagecast Creator |
五年级–八年级 | 很少或没有经验 | Kodu, Lego Mindstorm, Etoys, AgentSheets, Alice, Baltie 3, learning oriented BASIC, Mama, Phrogram, Stagecast Creator |
五年级–八年级 | 有一些经验 | Kodu, Squeak, full featured BASIC, Greenfoot, Pascal |
高中 | 很少或没有经验 | Kodu, Squeak, Greenfoot, Pascal, full featured BASIC |
高中 | 有一些经验 | Squeak, Greenfoot or BlueJ, newLISP, OZ. Most other programming languages. |
大学 | 不是主要专业,假定没有经验 | Squeak, Greenfoot or BlueJ, newLISP, full featured BASIC, |
大学 | 开始计算机科学或程序设计课程 | Haskell, OZ, Scheme, Qi, Squeak, NetBeans BlueJ., |