许多教育性质的程序设计语言都提供建议的学习顺序,即是学习一组编程语言的顺序,每种语言都建立在其他语言的基础上,使得学生能够完成从简单又易于理解的娱乐性编程环境到专业开发环境的转变。
年龄
经验水平
合适的编程语言
学龄前–二年级
无/不适用
Logostyle:Logo,GuidovanRobot,Karel.Scratch,Baltie2,StagecastCreator
二年级–四年级
Logo,Scratch,Etoys,StagecastCreator
五年级–八年级
很少或没有经验
LegoMindstorm,Etoys,AgentSheets,Alice,Baltie3,learningorientedBASIC,Phrogram,StagecastCreator,smallBASIC
有一些经验
Squeak,fullfeaturedBASIC,Greenfoot,Pascal
高中
Squeak,Greenfoot,Pascal,fullfeaturedBASIC
Squeak,Greenfoot或BlueJ,newLISP,OZ.Mostotherprogramminglanguages.
大学
不是主要专业,假定没有经验
Squeak,Greenfoot或BlueJ,newLISP,fullfeaturedBASIC
开始计算机科学或程序设计课程
Haskell,OZ,Scheme,Qi,Squeak,NetBeansBlueJ
Scheme最初是在1975年出于教学目的而设计的语言(参加[9]LISPsofthedayusednon-recursivecontrolstructurestoimplementlambdacalculus以非递归的控制结构实施λ演算),这主要是因为Lisp仍然在硬件实现具有高效率。GuyL.Steele,Jr和GeraldJaySussman创造出了Scheme,通过使用简洁高效的Lisp过程调用,使得Scheme成为最快的解释型语言之一。从语言教学上来讲,可以通过以domain-specificlanguages(DSL,特定领域语言)和MetacircularEvaluator(元循环计算)的方式来进行。1984年出版的《StructureandInterpretationofComputerPrograms》(《计算机程序的构造和解释》)将这种教育理念纳入了经典的教学课本中,从而改变了Pascal在大学程序设计语言中的优势地位。
“Abelson和Sussman在1984年出版的《StructureandInterpretationofComputerPrograms》(SICP),给上世纪八十年代的计算机课程设计带来了彻底性的改变。更为重要的是,SICP打破了语法入门课程的垄断,不再是将课程的组织仅仅围绕某个当前流行的程序设计语言的语法,而是将学习计算科学的重点放在了:functionalabstraction(函数抽象),dataabstraction(数据抽象),streams(流),data-directedprogramming(数据导向编程),implementationofmessage-passingobjects(消息传递对象的实现),interpreters(解释器),compilers(编译器),andregistermachines(寄存器机器)。”
CommonLisp是通用的(专业的),多泛型程序设计语言。它支持过程式、函数式和面向对象的编程范式。作为一个动态程序设计语言,CommonLisp促进了迭代编译向高效运行时程序的快速发展。CommonLisp和大部分其他程序设计语言不同,它使用S-expressions(S表达式)来表示代码和数据结构,而函数和宏调用是用链表实现的。通过Lisp的标准化统一各种Lisp的变体已经提上了日程,这不是一个特定的实现而是一个语言规范。现在有几种CommonLisp的标准实现,包括商业产品和开源软件。
AgentSheet是屡获大奖的游戏和仿真制作工具,它可以简单到让中学生通过制作视频游戏来学习计算机知识,也可以复杂到让NASA的科学家来模拟航天飞机的有效负荷。AgentSheet是由一个叫做ScalableGameDesign(可扩展的游戏设计)的完整课程提供支持的,它从简单的像青蛙一样(Frogger-like)的游戏一直到复杂的人工智能仿真游戏。AgentSheet支持游戏(动画,交互,声音,语音合成/识别(Mac)),科学应用程序(绘图,输出到电子表格,3D绘图(Mac))。AgentSheet有英语,希腊语和日语版本。LegoMindstorms以AgentSheets为基础,开发了LegoSheets程序设计语言,比BrickLogo的学习曲线要平缓的多。
Alice是一个免费的编程软件,旨在教会孩子们事件驱动的面向对象编程。编程者可以使用现代IDE,以拖拽的方式创建交互式的故事程序。Alice目标群体是大多数中学阶段的有计算机使用经验的女生,可谓寓教于乐。还有一个叫StoryTellingAlice的Alice的变体,能够提供更强的讲故事能力。
Baltie是图形化的编程工具,适合儿童,青少年(成人)。Baltie是软件中一个主要的角色,一个巫师,用来执行各种命令、将出现在他视野的图片变魔术。通过Baltie的帮助,孩子们能够很快认识到什么是计算机,如何对计算机进行操作和编程,这些都是在玩的过程中实现的。Baltie同样能够帮助逻辑思维训练,而且对孩子们的知识并没有多少要求,只要求会玩和想象力。Baltie已经在许多国家的小学中采用了。新版本的Baltie4甚至完全支持C#,更多的信息可以在SGPSystems中找到。
GuidovanRobot是一个机器人控制程序,有点类似于Logo和KarelJ.Robot,使用了Python语法中的很少一部分。GuidovanRobot被设计成对任何高级语言都尽量简化和通用。还有一个叫RUR-PLE的变体,它包括了完整的Python语法和一些经典的课程。
Karel,Karel++,和KarelJ.Robot是为那些完全的初学者而准备的。用来在一个由长方形街道网格组成的城市中控制一个简单机器人。Karel是一个自主的程序设计语言,而Karel++是Karel的C++实现,KarelJ.Robot则是Karel的Java实现。
LearntoProgramBASIC是一个通过互动课程教会中学生Basic的Basic解释程序,在Basic语言中加入了一些的游戏,包括对2Dsprite支持。在LTPB中编写的程序能够脱离LTPB独立执行,即是一个可以自由分发的“runner”。
LegoMindstorms(乐高机器人)是集合了可编程Lego砖块、电动马达、传感器、Lego砖块、LegoTechnic部分(齿轮、轮轴、横梁)的统称。Mindstorms起源于益智玩具中可编程传感器模具(programmablesensorblocks)。第一个LegoMindstorms的零售版本在1998年上市,当时叫做RoboticsInventionSystem(RIS)。最近的版本是2006年上市的LegoMindstormsNXT。许多语言都能对Mindstorms进行编程,包括Logo、Basic、Java的衍生版、Smalltalk和C语言。ComputerClubhouses是专注于Mindstorms编程的网站。
RoboMind是一个简单的教育性质的编程环境,能让初学者对机器人编程。RoboMind介绍了流行的编程技术、一些机器人学和人工智能的知识。人们能够使用阿拉伯语、中文、荷兰语、英语和瑞典语对机器人进行编程。
StagecastCreators是基于示范编程的可视化编程系统。用户通过移动屏幕上的图标,为物体(角色)制定规则来操作整个系统。用户可以创造2D模型来模拟一个概念,多层次的游戏,交互的故事等。