List of educational programming languages: Difference between revisions

Content deleted Content added
See also: Programming education, code playgrounds
 
(301 intermediate revisions by more than 100 users not shown)
Line 1:
{{Short description|none}}
{{multiple issues|
{{use mdy dates|date=October 2016}}
{{cleanup|reason=Come up with a clear inclusion criteria; purge unreferenced non-notable entries; regularise; etc|date=January 2013}}
{{refimprove|date=January 2013}}
}}
 
An '''educational programming language''' ('''EPL''') is a [[programming language]] that is designedused primarily as a [[learning]] instrumenttool, and nota sostarting muchpoint asbefore atransitioning toolto formore writingcomplex programs for real-worldprogramming worklanguages.
 
==Types of educational programming languages==
==Learning paths==
===Assembly languages===
Many educational programming languages position themselves inside a learning path, that is a sequence of languages each designed to build on the others moving a student from easy to understand and entertaining environments to full professional environments. Some of the better known are presented below.
Initially, [[machine code]] was the sole method of programming [[Computer|computers]]. [[Assembly language]] (ASM), introduced mnemonics to replace low-level instructions, making it one of the oldest programming languages still used today. Numerous [[Dialect|dialects]] and implementations exist, each tailored to a specific [[computer processor]] [[Instruction set architecture|architecture]]. Assembly languages are [[Low-level programming language|low-level]] and more challenging to use, as they are [[Programming language#Type system|untyped]] and rigid. For educational purposes, simplified dialects of assembly languages have been developed to make coding more accessible to beginners.
Assembly languages are designed for specific processor architectures, and they must be written with the corresponding hardware in mind. Unlike [[High-level programming language|higher-level]] languages, educational assembly languages require a representation of a [[Processor (computing)|processor]] which can be virtual or physical. These languages are often used in educational settings to demonstrate the fundamental operations of a computer processor.[[File:Little Man Computer Simulator LMC.png|alt=This image describes the program Little Man Computer (LMC)'s interface|thumb|An image of Little Man Computer (LMC)'s interface]]
* [[Little man computer|'''Little Man Computer''']] (LMC), (1965) is an instructional model of a simple [[von Neumann architecture]] computer. It includes the basic features of modern computers and can be programmed using machine code (usually in decimal) or assembly. The model simulates a computer environment using a visual metaphor of a person (the "Little Man") in a room with 100 mailboxes ([[Computer memory|memory]]), a calculator (the [[Accumulator (computing)|accumulator]]) and a program counter. LMC is used to help students understand basic processor functions and [[memory management]].
* [[MIX (abstract machine)|'''MIX''']] (1968) and '''[[MMIX]]''' (1999) are computer models featured in [[Donald Knuth]]'s (Art of Computer Programming'').'' The MIX computer is designed for educational purposes, illustrating how a basic machine language operates. Despite its simplicity, it can handle complex tasks typical of high-performance computers. MIX allows programming in both binary and decimal, with [[software emulator]]s available for both models. MMIX, which superseded MIX, is a 64-bit [[Reduced instruction set computer|RISC]] instruction set architecture, modernized for teaching contemporary computer architecture.
* '''[[DLX]]''' (1994) is a reduced instruction set computer ([[Reduced instruction set computer|RISC]]) processor architecture created by key developers of the [[MIPS architecture|MIPS]] and Berkeley [[Reduced instruction set computer|RISC]] designs. DLX is a simplified version of [[MIPS architecture|MIPS]], offering a 32-bit load/store architecture commonly used in college-level computer architecture courses.
* '''[[Next Byte Codes]]''' (NBC), (2007) is a simple assembly language used for programming [[Lego Mindstorms NXT]] programmable bricks. The NBC compiler produces NXT-compatible machine code and is supported on Windows, macOS and Linux.
* '''[[Little Computer 3]]''' (LC-3), (2019) is an assembly language with a simplified instruction set, enabling the writing of moderately complex assembly programs. It includes many features found in more advanced languages, making it useful for teaching basic programming and [[computer architecture]]. It is primarily used in introductory computer science and engineering courses.
 
===AssemblyBASIC languagevariants===
'''[[BASIC]]''' (Beginner's All-purpose Symbolic Instruction Code) was invented in 1964, to provide computer access to non-science students. It became popular on [[minicomputer]]s during the 1960s and became a standard computing language for [[microcomputer]]s during the late 1970s and early 1980s. The goals of BASIC were focused on the need to learn to program easily and they are to:
Originally, [[machine code]] was the first and only way to program computers. [[Assembly language]] was the next type of language used, and thus is one of the oldest families of computer languages in use today. Many dialects and implementations are available, usually some for each computer processor architecture. It is very basic and termed a [[low level programming language]]. It is one of the more difficult languages to work with being [[type system|untyped]] and rigid, but this is how computers work at low level. Several simplified dialects exist for education.
* Be easy for beginners to use.
* Be interactive.
* Provide clear and friendly error messages.
* Respond quickly.
* Not require an understanding of computer hardware or operating systems.
 
What made BASIC attractive for education was the small size of programs that could illustrate a concept in a dozen lines. BASIC continues to be frequently self-taught with [[Tutorial|tutorials]] and implementations.
Low level languages must be written for a specific [[central processing unit|processor]] [[computer architecture|architecture]] and cannot be written or taught in isolation without referencing the processor for which it was written. Unlike higher level languages, using an educational assembly language needs a representation of a processor (whether virtualized or physical). Assembly is the most helpful programming language to use for learning about fundamental computer processor operation.
 
See also: [[List of BASIC dialects by platform]]
* '''[[Little Man Computer]]''' ('''LMC''') is an instructional model of a simple [[von Neumann architecture]] computer with all basic features of modern computers. It can be programmed in machine code (usually decimal) or assembly. It is based on the concept of having a little man locked in a small room. At one end of the room are 100 mailboxes (memory), each capable of holding a three digit instruction or data. At the other end of the room are two mailboxes labeled INBOX and OUTBOX which receive and emit data. In the middle of the room is a work area with a simple two function (add and subtract) calculator called the Accumulator and a resettable counter called the Program Counter. The Program Counter is similar to what a doorperson uses to keep track of how many people have entered a facility—it can count up 1, or it can be reset to 0. As specified by the [[von Neumann architecture]], memory contains both instructions and data. The user loads data into the mailboxes and then signals the little man to begin execution.
 
* '''[[Next Byte Codes]]''' (NBC) is a simple language with assembly language syntax that is used to program [[Lego Mindstorms NXT]] programmable bricks. The command line compiler emits NXT compatible machine code, and supports Windows, Mac OS X and Linux.
 
* '''Little Computer 3''' ('''[[LC-3]]'''), is an assembly language with a simplified instruction set, but can be used to write moderately complex assembly programs and is a theoretically viable target for C compilers. It is simpler than x86 assembly but has many features similar to those in more complex languages. These features make it useful for teaching basic programming and computer architecture to beginning college computer science and computer engineering students, which is its most common use.
 
* '''[[DLX]]''' is a [[reduced instruction set computer]] (RISC) processor architecture by the main designers of the [[MIPS architecture|MIPS]] and the [[Berkeley RISC]] designs, two benchmark examples of RISC design. DLX is essentially a cleaned up, simplified MIPS, with a simple 32-bit load/store architecture. It is widely used in [[college]]-level computer architecture courses.
 
* '''[[MIX]]''' and '''[[MMIX]]''' are hypothetical computers used in [[Donald Knuth]]'s monograph, ''[[The Art of Computer Programming]]'' (''TAOCP''). Paraphrasing Knuth: ''The MIX systems are computers intended to illustrate machine-level aspects of programming, so its machine language is simple, elegant, easy to learn. It also includes all the complexities needed for high performance in practice, so in principle it can be built and perhaps be competitive with some of the fast general-purpose computers.'' MIX is hybrid programmable in [[binary numeral system|binary]] and [[decimal]] numbers; most programs written for it will work using either form. Software implementations for MIX and MMIX have been developed by Knuth and made freely available. Several versions of both emulators exist. MIX is a 1960s-style computer. It is superseded by MMIX, a newer modern computer architecture, a [[64-bit]] [[reduced instruction set computer|RISC]] [[instruction set]] architecture (ISA). For MMIX, Knuth collaborated with the architects of the [[MIPS architecture|MIPS]] and [[DEC Alpha|Alpha]] ISAs.
 
===BASIC===
'''[[BASIC]]''' is a language invented in 1964 to provide computer access to non-science students. It became popular on mini computers during the 1960s, and became the standard computing language for [[microcomputer]]s during the late 1970s and early 1980s. The goals of BASIC were focused on the needs of learning to program easily: be easy for beginners to use, be interactive, provide clear and friendly error messages, respond quickly, do not require an understanding of computer hardware or operating systems. What made BASIC particularly useful for education was the small size of programs. Useful programs to illustrate a concept could be written in a dozen lines. At the same time BASIC did not require mathematical or computer science sophistication.<ref>{{Cite journal
|last= Brin
|first= David
|title= Why Johnny can't code
|journal= [[Salon.com|Salon Magazine]]
|date= Sep 14, 2006
|url= http://www.salon.com/tech/feature/2006/09/14/basic/print.html
|accessdate= 4/12/09
|postscript=<!--None-->}}</ref> BASIC continues to this day to be a language which is frequently self-taught with excellent tutorials and implementations. See [[List of BASIC dialects by platform]] for a complete list. BASIC offers a learning path from learning oriented BASICs such as [[Microsoft Small Basic]], [[BASIC-256]] and [[SiMPLE]], to more full featured BASICs like [[Visual Basic .NET]] and [[Gambas]].
 
* '''[[Visual Basic .NET]]''' with a freely available [http://www.microsoft.com/Express/VB/ Visual Basic Express Edition] including an [http://msdn.microsoft.com/en-us/beginner/bb308754.aspx K-12 learning center] and [http://msdn.microsoft.com/en-us/beginner/default.aspx Beginner adult learning center]
 
* '''[[Microsoft Small Basic]]''' is a restricted version of Visual Basic designed as a first programming language, "aimed at bringing 'fun' back to programming". The language is explicitly quite small with only 15 intuitive keywords. By including object specific libraries for things of general interest to children, children are able to create entertaining, interactive programs, on the net or on the desktop. For example, with 6 lines of code, it is possible to demonstrate a random network image viewer using [[Flickr]] as the source.<ref>
Microsoft corporation 2009 [http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdf Getting Started Guide for Small Basic], p. 64.</ref> The system utilizes the [[Microsoft Visual Studio]] IDE to provide [[IntelliSense|auto-completion]] and [[Tooltip|context sensitive help]].
 
* '''[[Visual Basic for Applications]]''' (VBA) is a version of Visual Basic built into most Microsoft Office applications and is used to build macros to automate processes within most applications of [[Microsoft Office]] (e.g. creating a User-Defined Function in Excel or creating a complicated sequence of commands in response to a user event in a data entry form in Access). VBA can also work across applications like automatically creating a report in Word from a database in Access. Note VBA is not used to create [[standalone program]]s but works only within a host application. Since VBA is on every machine that has any portion of MS Office installed on it, it is arguably the most ubiquitously available version of BASIC.
 
* '''[[Gambas]]''' which is a freely available easy to use BASIC for Linux with a [[wikibooks:Gambas|wikibook on Gambas]] available.
 
* '''[[Basic-256]]''' an easy to use version of BASIC designed to teach anybody the basics of computer programming. It uses traditional BASIC control structures ([[gosub]], [[for loop]]s, [[goto]]) for ease of understanding program flow-control. It has a built-in graphics mode that allows children to draw pictures on screen after minutes. It includes tutorials that introduce programming concepts through fun exercises.
 
* '''[[SiMPLE]]''' is a programming development system that was created to provide easy programming capabilities for everybody, especially non-professionals. SiMPLE is vaguely reminiscent of the AppleSoft [[BASIC]]. SiMPLE is a compiled language. In addition, SiMPLE allows users to create their own libraries of frequently used functions. "Simple" is a generic term for three slightly different versions of the language: Micro-SiMPLE to use only 4 keywords, Pro-SiMPLE, and Ultra-SiMPLE use of 23 keywords.
 
BASIC offers a learning path from learning-oriented BASICs such as [[Microsoft Small Basic]], [[BASIC-256]] [[Simple Mail Transfer Protocol|SIMPLE]] and to more full-featured BASICs like [[Visual Basic .NET|Visual Basic, NET]] and [[Gambas]].
* '''[[Microsoft Small Basic]]''' is a restricted version of [[Visual Basic (classic)|Visual Basic]], which is designed as "an introductory programming language for beginners". It's intentionally minimal with just 15 keywords for basic functionality. By providing specific libraries for topics that interest children, they can create programs for both the web and [[Desktop computer|desktop]] environments. For example, with 6 lines of code, it is possible to demonstrate a random network image viewer using [[Flickr]] as the source.<ref>Microsoft corporation 2009 [http://download.microsoft.com/download/9/0/6/90616372-C4BF-4628-BC82-BD709635220D/Introducing%20Small%20Basic.pdf Getting Started Guide for Small Basic], p. 64.</ref> The system utilizes the [[Microsoft Visual Studio]] IDE to provide [[IntelliSense|auto-completion]] and [[Tooltip|context-sensitive help]].
* '''[[Basic-256]]''' is an easy-to-use version of BASIC designed to teach anybody the basics of computer programming. It uses traditional BASIC control structures ([[gosub]], [[for loop]]s, [[goto]]) for easy understanding of program flow control. It has a built-in [[graphics]] mode that allows children to draw pictures on the screen after minutes.
* [[SiMPLE|'''SiMPLE''']] is a programming development system that was created to provide easy programming abilities for everybody, especially non-professionals. It is somewhat like [[Applesoft BASIC|AppleSoft BASIC]]. It is compiled and lets users make their own libraries of often-used functions. "Simple" is a generic term for three slightly different versions of the language: Micro-SIMPLE (uses only 4 keywords), Pro-SiMPLE, and Ultra-SiMPLE (using 23 keywords).
* '''[[Hot Soup Processor]]''' is a BASIC-derived language used in Japanese schools.
* '''[[TI-BASIC]]''' is a simple BASIC-like language implemented in [[Texas Instruments]] [[graphing calculator]]s, often serving as a student's first look at programming.
* [[SmallBASIC|'''Small BASIC''']] is a fast and easy-to-learn BASIC language [[Interpreter (computing)|interpreter]] ideal for everyday calculations, scripts and [[prototype]]s. It includes [[Trigonometry|trigonometric]], [[Matrix (mathematics)|matrix]] and [[Algebra|algebra functions]], a built-in [[Integrated development environment|IDE]], a powerful string library, system, sound and graphic commands, and a structured programming syntax.
 
===C-based===
* '''[[TI-BASIC]]''' is a simple BASIC-like language implemented in Texas Instruments graphing calculators, often serving as a students' first look into programming.
* [[Ch (computer programming)|'''Ch''']] is a [[C (programming language)|C]]/[[C++]] interpreter designed to help non-CS students learn [[Mathematics|math]], computing and programming in C and C++. It extends C with numerical, 2D/3D graphical plotting and scripting features.
 
* '''[[SmallBASIC]]''' fast and easy to learn BASIC language interpreter ideal for everyday calculations, scripts and prototypes. SmallBASIC includes trigonometric, matrices and algebra functions, a built in IDE, a powerful string library, system, sound, and graphic commands along with structured programming syntax.
 
===C===
* '''[[Ch (computer programming)|Ch]]''' is a C/C++ interpreter that was specifically designed to help non-CS students to learn math, computing and programming in C and C++. It extends C with numerical, 2D/3D graphical plotting and scripting features.
 
===Java-based===
* Written in [[Java (programming language)|Java]] and [[Scala (programming language)|Scala]] - a development environment for building and exploring scientific models, specifically [[agent-based model]]s.
[[Sun Microsystems|Sun's]] recommended path is Greenfoot to BlueJ to Netbeans/BlueJ to Netbeans/Java.<ref name="SunLP">{{cite web
|last= Nourie
|first= Dana [http://weblogs.java.net/blog/dnourie/]
|title= Young Developer Learning Path
|publisher= [[Sun Microsystems]]
|date= July 2008
|url= http://java.sun.com/developer/technicalArticles/young_dev_learning_path/
|accessdate= April 3, 2009}}</ref>
 
* '''[[Greenfoot]]''' is an interactive Java development environment developed primarily for educational purposes. It allows easy development of two-dimensional graphical applications, such as simulations and interactive games. It is mainly aimed at programming education (object-oriented programming with Java) at high school and early university level.<ref name=SunLP/>
 
* '''[[NetLogo]]''' is a development environment for building and exploring scientific models, specifically agent-based models. It is in widespread use both in science research [http://ccl.northwestern.edu/netlogo/references.shtml (Science papers using NetLogo)] and in educational contexts, including elementary, secondary schools, universities and museums.
 
* '''[[BlueJ]]''' is an integrated Java environment specifically designed for introductory teaching, first year college student. It eliminates some of Java's complex syntax, the difficulties of I/O and represents the object/class relationships visually. The BlueJ environment was developed as part of a university research project about teaching object-orientation to beginners (the [[Blue (programming language)|Blue system]]). The aim of BlueJ is to provide an easy-to-use teaching environment for the Java language that facilitates the teaching of Java to first year students. Special emphasis has been placed on visualization and [[interaction techniques]] to create a highly interactive environment that encourages experimentation and exploration.<ref>{{cite web
|title= What is BlueJ?
|publisher= BlueJ official site
|url= http://www.bluej.org/about/what.html
|accessdate= April 3, 2009}}</ref>
 
*'''[[NetBeans BlueJ Edition]]''' is an integrated development environment (IDE) meant to transition students from the introductory IDE BlueJ to the more professional IDE NetBeans. Sun provides a [http://www.sun.com/aboutsun/comm_invest/jgp/viewall.html free curriculum], designed for and tested in high schools for use in teaching Java/BlueJ.
 
* '''[[NetBeans]] / [[Java (programming language)|Java]]''' This is a professional level platform. NetBeans refers to both a [[Computing platform|platform]] for the development of applications for the network, and an [[integrated development environment]] (IDE) developed using the NetBeans Platform. The NetBeans Platform is a reusable [[Software framework|framework]] for simplifying the development of other desktop applications. The platform offers services common to desktop applications, allowing developers to focus on the logic specific to their application. The NetBeans IDE is an [[open source|open-source]] integrated development environment written entirely in Java using the NetBeans Platform. NetBeans IDE supports development of all Java application types ([[Java Platform, Standard Edition|Java SE]], [[Web application|web]], [[Enterprise JavaBean|EJB]] and [[MIDlet|mobile]] applications) out of the box. Among other features are an [[Apache Ant|Ant]]-based project system, [[Revision control|version control]] and [[Code refactoring|refactoring]].
 
===Lisp-based===
* [[Lisp (programming language)|'''Lisp''']] is the second oldest family of computer[[programming languageslanguage]]s in use today, and as such has a [[:Category:Lisp programming language family|hostmany]] of [[Dialect (computing)|dialects]] and implementations atwith a wide range of difficulties. Lisp was originally created as a practical mathematical notation for computer programs, based on [[lambda calculus]], which makes it particularly well suited for teaching theories of computationcomputing. As one of the earliest programming languages, Lisp pioneered many ideas in [[computer science]], including [[tree (data structure)|tree data structure]]s, [[Garbage collection (computer science)|automatic storage management]], [[Type system|dynamic typing]], [[object-oriented programming]], and the [[Self-hosting (compilers)|self-hosting]] [[compiler]], all of which are useful for learning computer science. The name LISP derives from "List Processing language." [[Linked list]]s are one of the languages major [[data structure]]s and Lisp [[source code]] is made of lists. Thus, Lisp programs can manipulate [[source code]] as a data structure, giving rise to the [[Macro (computer science)|macro]] systems that allow programmers to create new syntax or even new [[___domain-specific language]]s embedded in Lisp. Therefore, Lisp can be useful for learning language design.<ref>{{Cite web|last=Kenlon|first=Seth|title=Learn the Lisp programming language in 2021 {{!}} Opensource.com|url=https://opensource.com/article/21/5/learn-lisp|access-date=2024-10-14|website=opensource.com|language=en}}</ref><ref>{{Cite web|title=What is the Lisp (List Processing) Programming Language? – A Definition from TechTarget.com|url=https://www.techtarget.com/whatis/definition/LISP-list-processing|access-date=2024-10-14|website=WhatIs|language=en}}</ref>
 
===Logo-based===
The name ''LISP'' derives from "LISt Processing language". [[Linked list]]s are one of Lisp languages' major [[data structure]]s, and Lisp [[source code]] is itself made up of lists. As a result, Lisp programs can manipulate source code as a data structure, giving rise to the [[Macro (computer science)|macro]] systems that allow programmers to create new syntax or even new [[___domain-specific language]]s embedded in Lisp. So Lisps are useful for learning language design, and creating custom languages.
* [[Logo (programming language)|'''Logo''']] is a language that was specifically designed to introduce children to programming. The first part of learning Logo deals with "turtle graphics" (derived from [[turtle (robot)|turtle robots]]) used as early as 1969. In modern implementations, an abstract drawing device, called the ''turtle'', is used to make programming for children very attractive by concentrating on doing [[turtle graphics]]. [[Seymour Papert]], one of the creators of Logo, was a prominent figure in [[constructionism (learning theory)|constructionism]], a variety of [[constructivism (learning theory)|constructivist learning theories]]. [[Seymour Papert|Papert]] argued that activities like writing would naturally be learned by much younger children provided that they adopt a computing culture.<ref name="RedC">{{Cite conference|first=Seymour|last=Papert|title=Redefining Childhood: The Computer Presence as an Experiment in Developmental Psychology|url=http://www.papert.org/articles/RedefiningChildhood.html|date=October 1980|place=Tokyo, Japan and Melbourne, Australia|publisher=8th World Computer Congress: IFIP Congress|doi=|id=}}</ref> Logo was designed to introduce children to programming through visual aids and concepts in a technology-focused curriculum. "M''ore important than having an early start on intellectual building is being saved from a long period of dependency during which one learns to think of learning as something that has to be dished out by a more powerful other...Such children would not define themselves or allow society to define them as intellectually helpless.''"<ref name="RedC" /> It has been used by children as young as 3 years old and has a track record of 30 years of success in education. Since Logo is actually a streamlined version of [[Lisp (programming language)|Lisp]] with more advanced students, it can be used to introduce the basic concepts of computer science and even artificial intelligence. Logo is available on multiple platforms, offered in both free and commercial versions for educational use.
 
A reasonable learning path would be Logo followed by any educational variant such as Scheme or newLISP, followed by a professional variant such as Common LISP.
 
* '''[[Logo (programming language)|Logo]]''' is a language that was specifically designed to introduce children to programming. The first part of learning Logo deals with "turtle graphics" (derived from [[turtle (robot)|turtle robots]] used as early as 1969 with proto-Logo. In modern implementations, an abstract drawing device, called the ''turtle'', is used to make programming for children very attractive by concentrating on doing [[turtle graphics]]. [[Seymour Papert]], the inventor of Logo, was a major thinker in [[constructionism (learning theory)|constructionism]], a variety of [[constructivism (learning theory)|constructivist learning theory]]. Papert argued that activities like writing would naturally be learned by much younger children providing that they adopted a computation culture.<ref name="RedC">{{Cite journal
|first= Seymour
|last= Papert
|contribution= Redefining Childhood: The Computer Presence as an Experiment in Developmental Psychology
|contribution-url= http://www.papert.org/articles/RedefiningChildhood.html
|date= October 1980
|place= Tokyo, Japan and Melbourne, Australia
|publisher= 8th World Computer Congress: IFIP Congress
|doi=
|id=
|postscript=<!--None-->}}</ref> Logo was thus designed not only to teach programming, and computation concepts but to enhance a child's entire well being in a culture increasingly dominated by technology, "''more important than having an early start on intellectual building, is being saved from a long period of dependency during which one learns to think of learning as something that has to be dished out by a more powerful other...Such children would not define themselves or allow society to define them as intellectually helpless.''"<ref name="RedC" /> It has been used with children as young as 3 and has a track record of 30 years of success in education. Since Logo is actually a streamlined version of [[Lisp (programming language)|Lisp]] with more advanced students it can be used to introduce the basic concepts of computer science and even artificial intelligence. [http://www.cs.berkeley.edu/~bh/ Brian Harvey] wrote a series ''Computer Science Logo Style''<ref>[http://www.cs.berkeley.edu/~bh/v1-toc2.html Volume 1: Symbolic Computing] [http://www.cs.berkeley.edu/~bh/v2-toc2.html Volume 2: Advanced Techniques] [http://www.cs.berkeley.edu/~bh/v3-toc2.html Volume 3: Beyond Programming]</ref> for self study of computer science based on Logo. Logo is widely available on virtually every platform, in both free and commercial versions.
 
* '''[[Scheme (programming language)|Scheme]]''' was originally designed in 1975 to serve a tutorial purpose.<ref>Gerald Jay Sussman and Guy Lewis Steele, Jr.. "Scheme: An Interpreter for Extended Lambda Calculus". MIT AI Lab. AI Lab Memo AIM-349. December 1975. [http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf], from [[Lambda Papers]]</ref> LISPs of the day used non-recursive control structures to implement [[lambda calculus]], primarily since LISPs were still being implemented for efficiency reasons in hardware. [[Guy L. Steele, Jr.]] and [[Gerald Jay Sussman]] constructed Scheme as a fast interpreted language on top of an underlying LISP with cheap procedure calls.<ref>"Debunking the "Expensive Procedure Call" Myth, or Procedure Call Implementations Considered Harmful, or LAMBDA, the Ultimate GOTO". ACM Conference Proceedings. 1977. [http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-349.pdf], from the [[Lambda Papers]]</ref> Pedagogically this allowed for teaching programming in terms of [[___domain-specific language]]s and [[meta-circular evaluator]]s. The publication of [[Structure and Interpretation of Computer Programs]] in 1984 incorporated this educational philosophy into a canonical textbook, which changed the predominance of Pascal as the university programming language. {{cquote|The publication of Abelson and Sussman’s Structure and Interpretation of Computer Programs (sicp) (Abelson et al., 1985) revolutionized the landscape of the introductory computing curriculum in the 1980s. Most importantly, the book liberated the introductory course from the tyranny of syntax. Instead of arranging a course around the syntax of a currently fashionable programming language, sicp focused the first course on the study of important ideas in computing: functional abstraction, data abstraction, streams, data-directed programming, implementation of message-passing objects, interpreters, compilers, and [[register machine]]s.
Over a short period, many universities in the US and around the world switched their first course to sicp and Scheme. The book became a major bestseller for MIT Press. Along with sicp, the Scheme programming language became widely used. It was no longer the subject of a few individual courses at Indiana University, MIT, and Yale, but the language of choice in introductory courses all over the world.<ref>{{Cite journal
|last= Felleisen
|first= Matthias
|authorlink= Matthias Felleisen
|last2= Findler
|first2= Robert Bruce
|author2-link= Robert Bruce Findler
|last3= Flatt, |first3= Matthew |author3-link= Matthew Flatt
|last4= Krishnamurthi |first4= Shriram
|title= The Structure and Interpretation of the Computer Science Curriculum
|journal= Journal of Functional Programming
|year= 2004
|url= http://www.ccs.neu.edu/scheme/pubs/jfp2004-fffk.pdf
|doi= 10.1017/S0956796804005076
|volume= 14
|pages= 365
|postscript=<!--None-->
}}</ref>}}
: Since then the Scheme community has introduced several pedagogic programming environments for more modern approaches. Of particular note is the [[Racket (programming language)|Racket]] outreach effort with its [[DrRacket]] environment, freely available text [[How to Design Programs]] and [[ProgramByDesign]] educator training.<ref>More information on the PLT group results is at [http://www.ccs.neu.edu/scheme/pubs/ Northeastern PLT: Publications].</ref>
 
*'''[[newLISP]]''' aims to provide a fast, powerful, cross-platform, full-featured scripting version of the Lisp programming language which uses only a modest amount of system resources such as disk space and memory. It is particularly suited for learners because of its simple, consistent, streamlined, Lisp environment that minimizes the learning curve and maximizes programmer productivity and pleasure.
 
===Scala-based===
* '''[[Kojo (programming language)|'''Kojo]]''']] is an interactive desktop development environment, developed primarily for educational purposes. The application that runs on [[Microsoft Windows|Windows]], [[Linux,]] and OS X[[macOS]]. ItKojo is a learning environment, with many different features that help with the exploration, learning, and teaching of concepts in the areas of computer programming, and [[critical thinking]], math and, science, art, music, and [[creative thinking]], computer and [[internet literacy]].<ref>{{cite web|title=About kogics Kojo|url=http://www.kogics.net/sf:about|access-date=February 12, 2011}}</ref>
| title = About kogics Kojo
| url = http://www.kogics.net/sf:about
| accessdate = 02-12-2011}}</ref>
* '''[[Spde (programming language)|Spde]]''' is an offshoot of the [[Processing (programming language)|Processing]] environment to support sketches written in Scala, a powerfully object-oriented and functional language.<ref>{{cite web
| title = About Spde
| url = http://technically.us/spde/About
| accessdate = 02-12-2011}}</ref>
 
===Smalltalk-based===
As part of the [[One Laptop per Child]] project, a sequence of Smalltalk-based languages has been developed, each designed to act as an introduction to the next. The structure is Scratch to [[Etoys (programming language)|Etoys]] to [[Squeak]] to any [[Smalltalk]].<ref>{{cite web|last=Cavallo|first=David|title=Learning Squeak from Scratch|publisher=One Laptop Per Child News|date=May 28, 2007|url=http://www.olpcnews.com/software/applications/learning_squeak_scratch.html|access-date=April 3, 2009}}</ref> Each provides graphical environments that may be used to teach not only programming concepts to kids but also physics and mathematics simulations, story-telling exercises, etc., through the use of [[Constructivism (philosophy of education)|constructive learning]]. Smalltalk and Squeak have fully featured application development languages that have been around and well-respected for decades; Scratch is a children's learning tool.
* [[Scratch (programming language)|'''Scratch''']] 1.0 is implemented in Smalltalk. See [[#Children|below]] for more information.
|last= Cavallo
* [[Etoys (programming language)|'''Etoys''']] is based on the idea of programmable [[Virtuality|virtual]] entities behaving on the computer screen. Etoys provides a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users. It includes [[2D computer graphics|2D]] and [[3D computer graphics|3D]] [[graphics]], [[image]]s, [[Plain text|text]], particles, presentations, web pages, [[video]]s, sound and [[Musical Instrument Digital Interface|MIDI]] (the ability to share desktops with other Etoys users in [[real-time computing|real-time)]]. Many forms of immersive [[mentorship|mentoring]] and play can be done over the [[Internet]]. It is [[Multilingualism|multilingual]] and has been used successfully in the [[United States]], [[Europe]], [[South America]], [[Japan]], [[Korea]], [[India]], [[Nepal]] and elsewhere. The program is aimed at children between the ages of 9-12.<ref>{{cite book|last=Ducasse|first=Stéphane|url=http://smallwiki.unibe.ch/botsinc/|title=Squeak: Learn Programming with Robots (Technology in Action)|publisher=Apress|year=2005|isbn=1-59059-491-6|pages=289 in ch 24: ''A tour or eTOY''}}</ref>
|first= David
* '''[[Squeak]]''' is a modern, open-source, full-featured implementation of the Smalltalk language and environment. Smalltalk is an [[Object-oriented programming|object-oriented]], [[Type system|dynamically typed]], [[reflective programming]] language created to underpin the "new world" of computing exemplified by "human-computer symbiosis".<ref name="History">{{cite web|last=Kay|first=Alan|url=http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html|title=The Early History of Smalltalk|access-date=September 13, 2007|archive-url=https://web.archive.org/web/20110429192453/http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html|archive-date=April 29, 2011|url-status=dead}}</ref> Like [[Lisp (programming language)|Lisp]], it has [[Persistence (computer science)#Built-in to operating systems and programming languages|image-based persistence]], so everything is modifiable from within the language (see [[Smalltalk#Reflection]]).<ref>For further discussion of why this make it easy see [[Meta-circular evaluator]]</ref> It has greatly influenced the industry introducing many of the concepts in object-oriented programming and [[just-in-time compilation]]. Squeak is the vehicle for a wide range of projects including multimedia applications, educational platforms and commercial [[web application]] development. Squeak is designed to be highly portable and easy to debug, analyze and change, as its [[virtual machine]] is written fully in Smalltalk.
|title= Learning Squeak from Scratch
|publisher= One Laptop Per Child News
|date= May 28, 2007
|url= http://www.olpcnews.com/software/applications/learning_squeak_scratch.html
|accessdate= 4-3-09}}</ref>
Each provides graphical environments which may be used to teach not only programming concepts to kids, but also physics and mathematics simulations, story-telling exercises, etc., through the use of [[constructivism (learning theory)|constructive learning]]. Smalltalk and Squeak are fully featured application development languages that have been around and well respected for decades; Scratch is a children's learning tool.
 
===Pascal===
* '''[[Scratch (programming language)|Scratch]]''' is a visual programming language based on and implemented in Squeak. It has the goal of teaching programming concepts to children and letting them create games, videos, and music. In Scratch, all the interactive objects, graphics, and sounds can be easily imported to a new program and combined in new ways. That way, beginners can get quick results and be motivated to try further. The Scratch community has developed and uploaded over 3,000,000 projects.<ref>{{cite web |url=http://scratch.mit.edu/ |title=Scratch: imagine, program, share |author=Mitchel Resnick, John Maloney, Natalie Rusk, Evelyn Eastmond, Amon Millner, Jay Silver, Eric Rosenbaum, Karen Brennan, Amos Blanton |publisher=[[Massachusetts Institute of Technology]] |accessdate=8 January 2013}}</ref> It is developed by the Lifelong Kindergarten group at [[MIT Media Lab]].
* [[Pascal (programming language)|'''Pascal''']] is an [[ALGOL]]-based programming language designed by [[Niklaus Wirth]] in approximately 1970 with the goal of teaching [[structured programming]].<ref>Hemmendinger, David. "Pascal". Encyclopædia Britannica, 5 Apr. 2024, https://www.britannica.com/technology/Pascal-computer-language. Accessed 12 June 2024.</ref> From the late 1970s to the late 1980s, it was the primary choice in introductory computer science classes for teaching students programming in both the US and Europe. Its use for real-world applications has since increased to general usage.<ref>{{Cite web|title=Pascal - Free Pascal wiki|url=https://wiki.freepascal.org/Pascal|access-date=2024-10-11|website=wiki.freepascal.org}}</ref>
 
* '''[[Etoys (programming language)|Etoys]]''' is based on the idea of programmable [[Virtuality|virtual]] entities behaving on the computer screen. Etoys provides a media-rich authoring environment with a simple, powerful scripted object model for many kinds of objects created by end-users. It includes [[2D computer graphics|2D]] and [[3D computer graphics|3D]] [[graphics]], [[image]]s, [[Plain text|text]], particles, presentations, web-pages, [[video]]s, sound and [[Musical Instrument Digital Interface|MIDI]], the ability to share desktops with other Etoy users in [[real-time computing|real-time]], so many forms of immersive [[mentorship|mentoring]] and play can be done over the [[Internet]]. It is [[Multilingualism|multilingual]], and has been used successfully in [[United States]], [[Europe]], [[South America]], [[Japan]], [[Korea]], [[India]], [[Nepal]], and elsewhere. The program is aimed at children 9-12.<ref>{{cite book
|last= Ducasse
|first= Stéphane
|authorlink= Stéphane Ducasse
|title= Squeak: Learn Programming with Robots (Technology in Action)
|publisher= Apress
|year= 2005
|pages= 289 in ch 24: ''A tour or eTOY''
|url= http://smallwiki.unibe.ch/botsinc/
|isbn= 1-59059-491-6}}</ref>
 
*'''[[Squeak]]''' is a modern, open source, full-featured implementation of the Smalltalk programming language and environment. Smalltalk is an [[object-oriented programming|object-oriented]], [[Type system|dynamically typed]], [[reflection (computer science)|reflective]] [[programming language]] created as the language to underpin the "new world" of computing exemplified by "human–computer symbiosis".<ref name="History">{{cite web|first=Alan|last=Kay|url=http://gagne.homedns.org/~tgagne/contrib/EarlyHistoryST.html|title=The Early History of Smalltalk|accessdate=2007-09-13}}</ref> Like [[Lisp (programming language)|Lisp]], it has [[persistence (computer science)#Built-in to operating systems and programming languages|image-based persistence]], so everything is modifiable from within the language itself (see [[Smalltalk#Reflection]]).<ref>For further discussion of why this make it easy see [[Meta-circular evaluator]]</ref> It has greatly influenced the industry introducing many of the concepts in object-oriented programming and [[just-in-time compilation]]. Squeak is the vehicle for a wide range of projects including multimedia applications, educational platforms and commercial [[web application]] development. Squeak is designed to be highly portable and easy to debug, analyze, and change, as its virtual machine is written fully in Smalltalk. The main site maintains a list of [http://wiki.squeak.org/squeak/792 free tutorials], and [[Stéphane Ducasse]] maintains a large collection of [http://stephane.ducasse.free.fr/FreeBooks.html Free Online Books] related to Smalltalk and Squeak. The commonly used professional language in greatest use today which incorporates many of Smalltalk's ideas is [[Objective-C]].
 
===Other===
* '''[[TouchDevelopCircuitPython]]''' is ana [[interactivebeginner-oriented developmentversion environment]] and aof [[visualPython (programming language)|Python]] beingfor developedinteractive atelectronics [[Microsoftand Research]]education.
* '''[[Rapira]]''' is an [[ALGOL]]-like [[procedural programming]] language, with a simple [[interactive development environment]], developed in the [[Soviet Union]] to teach programming in schools.
* '''[[Src:Card]]''' is a tactile offline programming language embedded in an educational [[card game]].
 
==Children==
* '''[[AgentSheets]]''' and '''[[https://www.agentcubesonline.com AgentCubes]]''' are two computational thinking tools to author 2D/3D games and simulations. These tools are used in schools around the world through the [http://scalablegamedesign.cs.colorado.edu Scalable Game Design] curriculum supported by the National Science Foundation and Google ([https://www.youtube.com/embed/wStwKAVqSbY?autohide=1&cc_load_policy=0&hl=en&cc_lang_pref=en&autoplay=1 RISE/CS4HS). Authoring takes place through desktop applications or browser -based apps, and it can create 2D/3D games playable in HTML5 compliant browsers, including mobile ones.
* [[Alice (software)|'''Alice''']] is a free programming software designed to teach event-driven [[object-oriented programming]] (OOP) to children. Programmers create interactive stories using a modern IDE interface with a drag-and-drop style of programming. The target audience ranges from middle school children all the way to university students.<ref>{{Cite web|title=About – Alice|url=https://www.alice.org/about/|access-date=2024-10-07|language=en-US}}</ref> [[Storytelling alice|'''Storytelling Alice''']] is a variant of the Alice software designed for younger children, with a greater emphasis on its capabilities in terms of storytelling.<ref>{{Cite web|title=Storytelling Alice – Alice|url=http://www.alice.org/get-alice/storytelling-alice/|access-date=2023-11-07|language=en-US}}</ref>
 
* '''[[Blockly]]''' is an open-source web-based graphical language where users can drag blocks together to build an application with no typing required. It was developed by [[Google]]. It allows users to convert their Blockly code into other programming languages such as PHP, Python, etc.
* '''[[Alice (software)|Alice]]''' is a free programming software designed to teach event-driven object-oriented programming to children. Programmers create interactive stories using a modern IDE interface with a drag and drop style of programming. The target audience is incoming college freshmen although most children with computer experience will find it entertaining and educational. A variant of Alice designed specifically for children with an even stronger story telling bent called [http://www.alice.org/kelleher/storytelling/index.html Story Telling Alice] is also available.
* '''[[CiMPLE]]''' was a visual language for programming robotic kit designed for children. It was built on top of [[C (programming language)|C]] as a [[Digital subscriber line|DSL]]. ThinkLabs, an Indian Robotics education-based startup, built it for the iPitara Robotics Kit. The language bore strong resemblance to the C language. At least one school in Bangalore, India bought the iPitara kit and had their students program the robots using CiMPLE.<ref>{{Cite web|last=EducationWorld|date=2012-09-21|title=ThinkLABS RoboLAB|url=https://www.educationworld.in/thinklabs-robolab/|access-date=2024-10-08|website=EducationWorld|language=en-US}}</ref> More information is available at the CiMPLE Original Developers Weblog.<ref>[http://www.uptosomething.in/weblog/?p=531 CiMPLE Original Developers Weblog] {{webarchive|url=https://web.archive.org/web/20110721181639/http://www.uptosomething.in/weblog/?p=531|date=July 21, 2011}}</ref><ref>{{Cite web|date=2012-09-20|title=ThinkLABS -|url=http://www.thinklabs.in/school/robo-camp.html#tab-3|access-date=2024-10-09|archive-url=https://web.archive.org/web/20120920065922/http://www.thinklabs.in/school/robo-camp.html#tab-3|archive-date=September 20, 2012}}</ref> ThinkLabs eventually switched to using "THiNK VPL" as their visual programming software.
 
* '''[[Physical Etoys]]''' is a free open-source extension of Etoys. Its philosophy is that "it helps children explore their own creativity by combining science and art in an infinite laboratory."<ref>{{Cite web|title=Physical EToys - General description of the project|url=https://tecnodacta.com.ar/gira/projects/physical-etoys/|website=Tecnodata}}</ref> It can run on [[Microsoft Windows|Windows]], [[Linux]] and [[Sugar OS|Sugar]]. Due to its block scripting system, Physical Etoys allows different electronic devices such as [[Lego Mindstorms NXT|Lego NXT]], [[Arduino]] boards, [[Sphero]], [[Kinect]], and [[Wii Remote|Wiimote]] joysticks interact between themselves.
* '''[[Baltie]]''' is an educational graphic-oriented programming tool for children, youth (and adults). Baltie is also main character of this software a little wizard keen to execute miscellaneous commands and to conjure pictures (tiles) in his scene. With Baltie's help children will quickly realize what is a computer and how to master and program the computer. All that by playing. Baltie can be used also for exercising logical thinking. It makes no demands on childs knowledge, only playfulness and imagination are required. It is used in many countries in the basic schools. The new version of Baltie 4 fully supports [[C Sharp (programming language)|C#]]. More usage information is at the [http://www.sgpsys.com (SGP Systems)].
* '''[[Hackety Hack]]''' is a free [[Ruby (programming language)|Ruby]]-based environment that aims to make learning [[computer programming|programming]] easy for beginners, especially teenagers.<ref>{{Cite web|title=Hackety Hack|url=https://github.com/hacketyhack|access-date=2024-10-09|website=GitHub|language=en}}</ref>
 
* [[Karel (programming language)|'''Karel''']], [[Karel++|Karel''++'']], and [[Karel the robot|Karel J. Robot]] are languages aimed at beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. While Karel is its own language, Karel++ is a version of Karel implemented in [[C++]], while Karel J. Robot is a version of Karel implemented in [[Java (programming language)|Java]].
* '''[[Blockly]]''' is an open source web-based, graphical programming language where users can drag blocks together to build an application. No typing required. It is developed by [[Google]]. More information is available at the project [http://code.google.com/p/blockly/ home page].
* '''[[Kodu]]''' is a language that is simple and entirely icon based. It was developed by [[Microsoft Research]] as a project to encourage younger children, especially girls, to enjoy technology. Programs are composed of pages, which are divided into rules, which are further divided into conditions and actions. Conditions are evaluated simultaneously. The Kodu language is designed specifically for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control characters behavior. The Kodu tool is available in three forms: [[Personal computer|PC]] as a free download in public beta and academic forms, and as a low-cost [[Xbox 360]] Live download.
 
* [[Logo (programming language)|'''Logo''']] is an educational language for children designed in 1967 by [[Daniel G. Bobrow]], [[Wally Feurzeig]], [[Seymour Papert]] and [[Cynthia Solomon]]. Today, the language is remembered mainly for its use of "[[turtle graphics]]," in which commands for movement and drawing produce [[turtle graphics|line graphics]] using a small robot called a "[[Turtle (robot)|turtle]]." The language was originally conceived to teach concepts of programming related to [[Lisp (programming language)|Lisp]] and only later to enable what Papert called ''"[[kinesthetic|body-syntonic]] reasoning"'' where students could understand (and predict and reason about) the turtle's motion by imagining what they would do if they were the turtle.<ref>{{Cite AV media|url=https://www.youtube.com/watch?v=gA93QOJp0Rs|title=Logo Programming - Turtle Academy Lesson 1|date=2018-01-23|last=HL ModTech|access-date=2024-10-09|via=YouTube}}</ref>
* '''[[CiMPLE]]''' is a visual programming language for programming robotic kit for children. It is built on top of C as a DSL. ThinkLabs an Indian Robotics education based startup has built it for iPitara Robotic kit. CiMPLE visual language bears strong resemblance to written C programming language. Approximately 5000+ students in India have brought the iPitara kit and programmed it using CiMPLE. More information is at [http://www.uptosomething.in/weblog/?p=531 (CiMPLE Original Developers Weblog)] and [http://thinklabs.in ].
* '''[[Lego Mindstorms]]''' is a line of Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and [[Lego Technic]] pieces (such as gears, axles, and beams). Mindstorms originated from the programmable sensor blocks used in the line of educational toys. The first retail version of Lego Mindstorms was released in 1998 and marketed commercially as the [[Robotics Invention System]] (RIS). The current version was released in 2006 as '''[[Lego Mindstorms NXT]]'''. A wide [[Lego Mindstorms NXT#Programming|range of programming languages is used]] for the Mindstorms from Logo to BASIC to derivatives of Java, Smalltalk and C. The Lego Mindstorms approach to programming now has dedicated physical sites called [[Computer Clubhouse|'''Computer Clubhouses''']].
 
* [[Mama (software)|'''Mama''']] is an educational [[object-oriented programming|object oriented]] language designed to help young students start programming by providing all the language elements in the student's language. Mama language is available in several languages, with both LTR and RTL language direction support. A [http://www.eytam.com/mama new variant of Mama] was built atop [[Carnegie Mellon]]'s ''[[Alice (software)|Alice]]'' development environment, supporting scripting of the 3D stage objects. This variant was designed to help young students start programming by building 3D animations and games. A document on educational programming principles explains Mama's design considerations.<ref>[http://en.eytam.com/mama/educational_programming_language Mama educational programming principles]</ref>
* '''[http://www.cubiverse.net/ Cubiverse]''' is an free web-based (3D) voxel/''Minecraft''-style game that allows children to create and control voxel-based worlds using JavaScript. These worlds are persistent and support multiplayer gameplay through the sharing of a simple URL. The game teaches children how to use object-oriented JavaScript, understand coding (including events) and create shared environment for groups to build complex worlds and games. A wiki is available at [http://wiki.cubiverse.net/], along with an API reference [http://api.cubiverse.net/]
* '''[[RoboMind]]''' is a simple educational programming environment that allows beginners to program a robot. It introduces popular programming techniques along with robotics and artificial intelligence. The robot can be programmed in Arabic, Chinese, Dutch, German, English and Swedish.
 
* [[Scratch (programming language)|'''Scratch''']] is a visual language with the goal of teaching programming concepts to children by allowing them to create projects such as games, videos, and music. It does this by simplifying code into function "blocks" that can be dragged and connected, then run by clicking the green flag icon. In Scratch, interactive objects, graphics, and sounds can be easily imported to a new program and combined, getting quick results. The Scratch community has developed and uploaded over 1,000,000,000 projects with over 164,000,000 being publicly shared.<ref name="u895">{{cite web|title=Imagine, Program, Share|website=Scratch Statistics|date=2023-05-25|url=https://scratch.mit.edu/statistics/|language=la|access-date=2024-11-17}}</ref> It is developed by the Lifelong Kindergarten<ref>{{Cite web|title=Group Overview ‹ Lifelong Kindergarten|url=https://www.media.mit.edu/groups/lifelong-kindergarten/overview/|access-date=2024-10-08|website=MIT Media Lab}}</ref> group at [[MIT Media Lab]].
* '''[http://www.playcodemonkey.com/ CodeMonkey]''' is an online game that teaches how to code using [[CoffeeScript]]. In CodeMonkey, users program a monkey and help it collect bananas by writing lines of code. The game is built out of short challenges, starting with simple topics and progressing into advanced topics, such as loops, variables and functions. CodeMonkey is suitable for all ages, and can be practiced at home as well as in a classroom environment.
* '''[[ScratchJr]]''' is derivative of the Scratch graphical language. It is designed for children with ages around 5-7.
 
* [[Snap! (programming language)|'''Snap!''']] is a free [[Open-source software|open-source]] blocks-based graphical language implemented in [[JavaScript]] and originally derived from [[MIT]]'s [[Scratch (programming language)|Scratch]]. Snap! adds the ability to create new blocks and has [[first-class functions]] that enables the use of [[anonymous functions]]. It is actively maintained by [[UC Berkeley]]. The [https://github.com/jmoenig/Snap--Build-Your-Own-Blocks source] is entirely hosted on [[GitHub]].
* '''[http://www.crunchzilla.com/code-monster Code Monster from Crunchzilla]''' helps kids learn about programming. It walks children (mostly ages 9–14) through how to program in JavaScript, starting with early concepts like parameters, variables, and loops, moving through functions, eventually introducing some of the wonders of fractals, animation, and physics. It makes programming fun by using live code to show changes immediately and encouraging experimentation.
* '''[[Stagecast Creator]]''' is a visual programming system based on [[programming by demonstration]]. Users demonstrate to the system what to do by moving icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model concepts, multi-level games, and interactive stories.
 
* '''[[Stencyl]]''' is a visual programming and game development IDE that has been used for education and commerce. The concept of ''code blocks'' it implements is based on [[MIT]]'s [[Scratch (programming language)|Scratch]] visual language (listed above). It also permits the use of ''normal'' typed code (separate or intermingled) through its own [[API]] and the [[Haxe]] language.
* '''[[E-Slate]]''' is an exploratory learning environment. It provides a workbench for creating highly dynamic software with rich functionality by non-programmers. Educational activity ideas can be turned into software with minimal authoring effort in the form of interactive Microworlds which contain specially designed educational components. E-Slate components are provided as a kit of pre-fabricated, interoperable computational objects. Software Microworlds can be very easily constructed by plugging components in various configurations. The behaviour of both components and Microworlds, can be programmed in a Logo-based scripting language. E-Slate is currently based on the Java platform and related technologies.
* '''[[ToonTalk]]''' is a language and environment that looks like a video game. Computational abstractions are mapped to concrete analogs such as robots, houses, trucks, birds, nests, and boxes. It supports big integers and exact rational numbers. It is based upon [[Concurrent constraint logic programming|concurrent constraint programming]].
 
* '''[[Guido van Robot]]''' is a robot control program similar to Logo or [[Karel (programming language)|Karel]], with a minimal [[Python (programming language)|Python]] syntax. It is designed to be minimalistic and generic to any high-level programming language. There is a variant that includes the full Python syntax and a canonical set of lessons called [[RUR-PLE]].
 
* '''[http://www.pps.jussieu.fr/~gimenez/laby/ Laby]''', designed with education in mind (its primary function as a teaching tool), is a small application to learn how to code in various programming languages (OCaml, Python, Lua, Ruby, C, Java, Prolog and Perl) with ants and spider webs.
 
* '''[http://light-bot.com/ Lightbot]''', is a visual programming game designed to teach basic instruction sequencing, procedures, recursive loops, and conditionals. In Lightbot, players guide a robot to light up blue tiles to solve levels, utilizing a small set of symbols representing actions and procedure calls.
 
* '''[http://light-bot.com/ Lightbot Jr]''', is a version of Lightbot designed for children 4 years old and up. It goes over basic instruction sequencing, procedures, and basic loops. The gameplay is synonymous with that of Lightbot.
 
* '''[http://lookingglass.wustl.edu/ Looking Glass]''', is a novice programming environment designed to enable middle-school aged children learn computer programming independently through 3D storytelling. Looking Glass is the successor to Storytelling Alice.
 
* '''[[Physical Etoys]]''' is a free open-source extension of Etoys. Its philosophy is “help kids model and program the real world in order to learn more about it”. It can run on Windows, Linux and Sugar. Physical Etoys lets different electronic devices such as Lego NXT, Arduino boards, Sphero, Kinect, Wiimote joystick, among others, be easily programmed and interact between themselves due to its block scripting system. Its perfect for the educational curricula.
 
* '''[[PythonTurtle]]''' is a Logo-like turtle graphics made in wxPython. There is also Python [https://docs.python.org/library/turtle.html standard Turtle graphics module (based on TK)], and a [http://code.google.com/p/python-turtle-demo/ Python Turtle Demo]—collection of 50+ demos, which are intended as examples for using Python and turtlegraphics in an educational setting.
 
* '''[[Pynguin]]''' is another Python Turtle Graphics Application. It is a unified editor, interactive console, and graphics display area written using Python and the PyQt toolkit (in contrast to the wxPython of PythonTurtle). Pynguin is meant to be an easy environment for introducing programming concepts to beginning programmers. The default avatar in Pynguin is a penguin, but other avatars, including a turtle, can be selected as well.
 
* '''[[Hackety Hack]]''' is a free [[Ruby (programming language)|Ruby]]-based environment aiming to make learning [[computer programming|programming]] easy for beginners, especially teenagers.
 
* '''[[KidsRuby]]''' is another free [[Ruby (programming language)|Ruby]]-based environment meant for kids.
 
* '''[[Karel (programming language)|Karel]]''', '''Karel++''', and '''Karel J. Robot''' are languages aimed at absolute beginners, used to control a simple robot in a city consisting of a rectangular grid of streets. While Karel is its own programming language, Karel++ is a version of Karel implemented in [[C++]], while Karel J. Robot is a version of Karel implemented in [[Java (programming language)|Java]].
 
*'''[http://www.kodable.com/ Kodable]''' a programming game for the [[iPad]] "which teaches pre-literate kids the basic concepts of [[computer programming|programming]]".<ref name="carson2014">{{cite news | url=http://www.techrepublic.com/article/kodable-gets-kids-programming-before-they-can-read/ | title=Kodable gets kids programming before they can read | work=[[TechRepublic]] | date=20 October 2014 | author=Carson, Erin | deadurl=no<!--added to archive.org-->}}</ref> Using a unique programming language of arrows, paths, and boxes, kids learn basic coding logic.<ref>{{cite news|last1=Satell|first1=Greg|title=Do Our Kids Really Need to Learn How to Code?|url=http://www.forbes.com/sites/gregsatell/2014/07/06/do-our-kids-really-need-to-learn-how-to-code/|accessdate=24 October 2014|work=Opinion|agency=Forbes|publisher=Forbes|date=7/6/2014}}</ref> It was composed by Grechen Huebner and Jon Mattingly of [[Louisville, Kentucky]], and was released into the [[App Store (iOS)|AppStore]] in 2012.<ref name="carson2014" />
 
* '''[[Kodu]]''' is a language that is simple and entirely icon-based. It was incubated out of Microsoft Research as a project to reach younger children and especially girls into enjoying technology. Programs are composed of pages, which are divided into rules, which are further divided into conditions and actions. Conditions are evaluated simultaneously. The Kodu language is designed specifically for game development and provides specialized primitives derived from gaming scenarios. Programs are expressed in physical terms, using concepts like vision, hearing, and time to control character behavior. While not as general-purpose as classical programming languages, Kodu can express advanced game design concepts in a simple, direct, and intuitive manner. The Kodu tool is available in three forms: PC as a free download in public beta and academic forms, and as a low-cost Xbox 360 Live download.
 
* '''[[Logo (programming language)|Logo]]''' is an educational programming language for children, designed in 1967 by [[Daniel G. Bobrow]], [[Wally Feurzeig]], [[Seymour Papert]] and [[Cynthia Solomon]]. Today the language is remembered mainly for its use of "[[turtle graphics]]", in which commands for movement and drawing produced [[turtle graphics|line graphics]] either on screen or with a small robot called a "[[Turtle (robot)|turtle]]". The language was originally conceived to teach concepts of programming related to [[Lisp (programming language)|Lisp]] and only later to enable what Papert called ''"[[kinesthetic|body-syntonic]] reasoning"'' where students could understand (and predict and reason about) the turtle's motion by imagining what they would do if they were the turtle.
 
* '''[[Learn to Program BASIC]]''' is a [[BASIC]] [[interpreter (computing)|interpreter]] with an interactive course intended to teach the language to middle school students. Game-specific additions to the BASIC language include 2D [[sprite (computer graphics)|sprite]] support. Programs written in "LTPB" could be executed on computers without the software by means of a freely-distributable "runner".
* '''[[Lego Mindstorms]]''' is a line of Lego sets combining programmable bricks with electric motors, sensors, Lego bricks, and Lego Technic pieces (such as gears, axles, and beams). Mindstorms originated from the programmable sensor blocks used in the line of educational toys. The first retail version of Lego Mindstorms was released in 1998 and marketed commercially as the Robotics Invention System (RIS). The current version was released in 2006 as Lego Mindstorms NXT. A wide [[Lego Mindstorms NXT#Programming|range of programming languages is used]] for the mindstorms from Logo to BASIC to derivatives of Java, Smalltalk and C. The Mindstorm approach to programming now have dedicated physical sites called [[Computer Clubhouse]]s.
 
*'''[[Mama (software)|Mama]]''' is an educational [[object-oriented programming|object oriented]] programming language designed to help young students start programming by providing all the language elements in the student mother tongue. Mama programming language is available in several languages, with both LTR and RTL language direction support. A [http://www.eytam.com/mama new variant of Mama] was built on top of [[Carnegie Mellon]]'s [[Alice (software)|''Alice'']] development environment, supporting scripting of the 3D stage objects. This new variant of Mama was designed to help young students start programming by building 3D animations and games. A document about [http://en.eytam.com/mama/educational_programming_language educational programming principles] explains Mama's design considerations.
 
* '''[[Phrogram]]''' (the second generation product of ''Kid's Programming Language'') is a commercial easy-to-learn programming language and Integrated Development Environment introduced in 2006. It emphasizes graphics and sounds, making it especially easy to develop games and entertaining educational material. Phrogram is a simplified structured language, and offers component-based development features such as classes and methods. It is modeled on modern IDEs such as Eclipse and Visual Studio, and intends to prepare a beginner to graduate to these or other professional development environments.
 
* '''[[RoboMind]]''' is a simple educational programming environment that lets beginners program a robot. It introduces popular programming techniques and also some robotics and artificial intelligence. The robot can be programmed in Arabic, Chinese, Dutch, German, English and Swedish.
 
* '''[http://www.s2js.com/ S2JS]''' is for kids who have mastered Scratch and are starting to bump up against its limitations. S2JS teaches JavaScript in terms of Scratch, assuming they already know what loops and if-then-elses are, and showing how the sort of things they achieve in Scratch (and more) can also be achieved in JavaScript. Rather than teaching swathes of HTML, the DOM, CSS, etc, S2JS takes a more direct path to enable the kids to use the Canvas to start producing games and other programs they'll feel proud of. S2JS provides tutorials with live examples, and also a private work area where kids can develop their own projects. Kids can run the tutorial and development environment split-screen, so they can copy & paste code fragments to their own projects. Their work is directly sharable with their friends just by emailing a URL to their project. S2JS shows kids how to write programs that make use of smartphone features such as tilt and touch. Free.
 
*'''[[Scratch (programming language)|Scratch]]''' is a blocks-based graphical programming language to create animated stories and games. For more information, visit [http://scratch.mit.edu/ http://scratch.mit.edu/].
 
* '''[[Snap! (programming language)|Snap!]]''' is a free [[open-source]] blocks-based graphical programming language implemented in [[JavaScript]] and originally derived [[MIT|MIT's]] [[Scratch (programming language)|Scratch]]. Snap! adds the ability to create new blocks and has [[first-class functions]] that enables the use of [[anonymous functions]]. It is actively maintained by [[UC Berkeley]]. The [https://github.com/jmoenig/Snap--Build-Your-Own-Blocks source] is entirely hosted on [[GitHub]].
 
* '''[[Stagecast Creator]]''' is a visual programming system based on [[programming by demonstration]]. Users demonstrate to the system what to do by moving icons on the screen, and it generates rules for the objects (characters). Users can create two-dimensional simulations that model a concept, multi-level games, interactive stories, etc.
 
* '''[[Stencyl]]''' is a visual programming and game development IDE that has been used for both educational and commercial purposes. The concept it uses of "code blocks" is based on [[MIT|MIT's]] [[Scratch (programming language)|Scratch]] visual programming language (which is also listed above). It also permits the use of "normal" typed code (separate or intermingled) through its own API and the [[Haxe]] programming language.
 
* '''[[ToonTalk]]''' is a programming language and environment that looks like a video game. Computational abstractions are mapped to concrete analogs such robots, houses, trucks, birds, nests, and boxes. It supports big integers and exact rational numbers. It is based upon [[Concurrent constraint logic programming|concurrent constraint programming]].
 
*'''[[TurtleAcademy]]''' is an educational logo programming site teach kids how to [http://www.turtleacademy.com/ program with logo].
 
*'''[[Tynker]]''' is a visual educational programming site that teaches kids programming games. Visually it is based on [[Scratch (programming language)|Scratch]] but is based on a modern platform with HTML5 and JavaScript, and has many pre-made graphical backdrops and actors that you can use in your games.
 
==Historical==
* '''[[Pascal (programming language)|Pascal]]''' is the most well-known programming language that was designed with education in mind. From the late 1970s to the late 1980s, it was the primary choice in introductory computer science classes for teaching students programming in both the US and Europe. Its use for real-world applications has since increased, and regarding it as a purely educational programming language has since become somewhat controversial.{{according to whom|date=May 2014}}
 
==University==
* [[Curry (programming language)|'''Curry''']] is a teaching language<ref>M. Hanus. Teaching Functional and Logic Programming with a Single Computation Model. In Proc. Ninth International Symposium on Programming Languages, Implementations, Logics, and Programs (PLILP'97), pp. 335–350. Springer LNCS 1292, 1997.</ref> designed to amalgamate the most important declarative programming paradigms, namely functional programming (nested expressions, higher-order functions, lazy evaluation) and [[logic programming]] (logical variables, partial data structures, built-in search). It also integrates the two most important operational principles developed in the area of integrated functional logic languages: "residuation" and "narrowing."<ref>{{cite web|url=http://www.informatik.uni-kiel.de/~curry/report.html|title=Curry report, Introduction|archiveurl=https://web.archive.org/web/20091004101455/http://www.informatik.uni-kiel.de/~curry/report.html|archivedate=2009-10-04}}</ref><ref>{{cite journal|first=M.|last=Hanus|title=The Integration of Functions into Logic Programming: From Theory to Practice|journal=Journal of Logic Programming|volume=19&20|pages=583–628|date=1994|doi=10.1016/0743-1066(94)90034-5 |hdl=11858/00-001M-0000-0014-ADB0-F|hdl-access=free}}</ref>
* '''[[A++]]''' represents a more recent attempt to create a language designed to provide an efficient tool for basic training in programming.
* [[Flowgorithm (programming language)|'''Flowgorithm''']] is a graphical [[authoring tool]] for writing and executing programs via [[flowchart]]s. The approach is designed to emphasize the algorithm rather than the syntax of a given language. The flowchart can be converted to several major languages such as [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Visual Basic .NET]] and [[Python (programming language)|Python]].<ref name=about>{{cite web|title=About|url=http://flowgorithm.org/about/index.htm|website=Flowgorithm|access-date=August 26, 2014}}</ref>
 
* [[Oz (programming language)|'''Oz''']] is a language designed to teach [[computer theory]]. It supports most major paradigms<ref>[http://www.info.ucl.ac.be/people/PVR/paradigmsDIAGRAMeng108.pdf Programming Paradigms] poster</ref> in one language so that students can learn paradigms without having to learn multiple [[Syntax (programming languages)|syntaxes]]. Oz contains most of the concepts of the major [[Programming paradigm|programming paradigms]], including logic, functional (both [[Lazy evaluation|lazy]] and [[Eager evaluation|eager]]), [[Imperative programming|imperative]], [[Object-oriented programming|object-oriented]], constraint, [[Distributed programming|distributed]], and [[Concurrent computing|concurrent programming]]. It has a [[canonical]] textbook, ''[[Concepts, Techniques, and Models of Computer Programming]]'' (2004), and a freely available standard implementation, the [[Mozart Programming System]].<ref>{{Cite web|title=Mozart Programming System|url=http://mozart2.org|access-date=2024-10-25|website=mozart2.org}}</ref>
* '''[[Curry (programming language)|Curry]]''' is a teaching language<ref>M. Hanus. Teaching Functional and Logic Programming with a Single Computation Model. In Proc. Ninth International Symposium on Programming Languages, Implementations, Logics, and Programs (PLILP’97), pp. 335–350. Springer LNCS 1292, 1997.</ref> designed to amalgamate the most important declarative programming paradigms, namely functional programming (nested expressions, higher-order functions, lazy evaluation) and [[logic programming]] (logical variables, partial data structures, built-in search). It also integrates the two most import operational principles developed in the area of integrated functional logic languages: “residuation” and “narrowing”.<ref>[http://www.informatik.uni-kiel.de/~curry/report.html Curry report, Introduction. Most recent version available at]</ref><ref>M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.</ref>
* '''[[Haskell (programming language)|Haskell]]''' is often used by universities in place of LISP or [[Scheme (programming language)|Scheme]]. Its primary goal was to function equally well as a language for teaching, research and application design.<ref>{{cite web
|last= Jones
|first= Simon Peyton
|authorlink= Simon Peyton Jones
|title= Preface
|work= The Haskell 98 report
|publisher= Haskell 98 working group
|year= 2002
|url= http://www.haskell.org/onlinereport/preface-jfp.html
|accessdate= April 4, 2009}}</ref> It is a purely functional, extremely expressive [[lazy evaluation|lazy]] [[functional programming]] language. [http://www.haskell.org/haskellwiki/Haskell_in_education Sample courses] are available online, as are multiple [http://www.haskell.org/haskellwiki/Books_and_tutorials books and tutorials]. An education specific compiler / IDE, called [[Helium (Haskell)|Helium]] has been created. Another advantage of Haskell is in teaching inductive methods. Because of the advantages of Haskell's syntax inductive proofs become as easy or easier as they are on paper, unlike the LISP/Scheme family which introduces additional syntax.<ref>{{Cite journal
|last= Wadler
|first= Philip
|authorlink= Philip Wadler
|title= Why calculating is better than scheming
|year= 1987
|journal= ACM SIGPLAN Notices
|pages= 83–94
|url= http://www.cs.kent.ac.uk/people/staff/dat/miranda/wadler87.pdf
|id= ISSN:0362-1340
|postscript=<!--None-->}}</ref><ref>{{cite book
|last= Bird
|first= Richard
|authorlink= Richard Bird (computer scientist)
|title= Introduction to Functional Programming using Haskell (2nd Edition)
|publisher= Prentice Hall
|year= 1998
|pages= 66
|isbn= 0-13-484346-0}}</ref>
 
* '''[[Flowgorithm (programming language)|Flowgorithm]]''' is a graphical [[authoring tool]] which allows students to write and execute programs using [[flowchart]]s. The approach is designed to emphasize the algorithm rather than the syntax of a specific programming language. The flowchart can be converted to several major programming languages such as [[C Sharp (programming language)|C#]], [[Java (programming language)|Java]], [[Visual Basic .NET]] and [[Python (programming language)|Python]].<ref name=about>{{cite web|title=About|url=http://flowgorithm.org/about/index.htm|website=Flowgorithm|accessdate=2014-08-26}}</ref>
 
* '''[[M2001]]''' is a [[Modular programming|modular]] mathematical language for developing and presenting mathematical algorithms, from modern discrete to classical continuous mathematics. It is built on a semantic framework based in category theory, with a syntax similar to that of Pascal or [[Modula-2]]. It is designed for education only, so efficiency and ease of implementation are far less vital in its development than generality and range of application. It was created to play a strong role in forming a formal algorithmic foundation for first-year college math students.
 
* '''[[Picky (programming language)|Picky]]''' is an imperative programming language designed for a first level, introductory programming course. The language is small and simple. It has a terse syntax that derives from Pascal and C. Picky is very restrictive. The compiler and the run time include extra checks to provide safety features. Picky also provides realistic handling of basic file I/O. The language compiles to byte-code for an abstract machine called PAM. An interpreter is supplied together with the compiler. The tools are available for different operating systems, such as [[Plan 9 From Bell Labs]], [[Linux]], [[Mac OS X]] and [[Windows]]. The documentation includes a [http://lsub.org/ls/export/picky.pdf white paper] and a text book for a complete programming course (in Spanish, [http://lsub.org/fdp/doc/fdpicky.pdf on-line version]).
 
* '''[[Oz (programming language)|Oz]]''' is a programming language designed to teach computer theory. It supports most major paradigms<ref>[http://www.info.ucl.ac.be/people/PVR/paradigmsDIAGRAMeng108.pdf Programming Paradigms] poster</ref> in one language so that students can learn paradigms without having to learn multiple [[syntax (programming languages)|syntaxes]]. Oz contains in a simple and well-factored way most of the concepts of the major programming paradigms, including logic, functional (both lazy and eager), imperative, object-oriented, constraint, distributed, and concurrent programming. It has a canonical textbook [[Concepts, Techniques, and Models of Computer Programming]] and a freely available standard implementation the [[Mozart Programming System]].
 
==Languages by age and experience==
{{unreferenced section|date=June 2012}}
The following chart helps to summarize the information above for parents and teachers.
 
{| class="wikitable"
|-
! US educational level
! Approximate Age
! Experience level
! Appropriate languages
|-
| Preschool – grade 2
| 3–7
| None, not applicable
| [[Logo (programming language)|Logo]], [[Guido van Robot]], [[Karel (programming language)|Karel]], [[Scratch_Jr|ScratchJr]], [[Scratch (programming language)|Scratch]], [[Kodu]], [[Stagecast Creator]], [[Lightbot]], [[Kodable]]
|-
| Grades 2–4
| 7–9
| None, not applicable
| [[AgentSheets]], [[Logo (programming language)|Logo]], [[Kodu]], [[RoboMind]], [[Scratch (programming language)|Scratch]] or [[Etoys (programming language)|Etoys]], [[Stagecast Creator]], [[Lightbot]], [[Kodable]]
|-
| Grades 5–8
| 10–14
| None or little
| [[AgentSheets]], [[Alice (software)|Alice]], [[Kodu]], [[Lego Mindstorms|Lego Mindstorm]], [[Etoys (programming language)|Etoys]], [[Microsoft Small Basic]], [[RoboMind]], [[Gambas]], [[BASIC]], [[Phrogram]], [[Stagecast Creator]], [[Mama (software)|Mama]], [[Lightbot]], [[Kodable]]
|-
| Grades 5–8
| 10–14
| Some
| [[AgentSheets]], [[Squeak]], [[Microsoft Small Basic]], [[RoboMind]], full featured [[BASIC]], [[Greenfoot]], [[Pascal (programming language)|Pascal]], [[Mama (software)|Mama]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]]
|-
| High school
| 14–17
| None or little
| [[AgentSheets]], [[Squeak]], [[Microsoft Small Basic]], [[RoboMind]], full featured [[BASIC]], [[Greenfoot]], [[Pascal (programming language)|Pascal]], [[Mama (software)|Mama]], [[Python (programming language)|Python]], [[Ruby (programming language)|Ruby]], [[Visual Basic]]
|-
| High school
| 14–17
| Some
| [[AgentSheets]], [[Squeak]], [[RoboMind]], [[Greenfoot]] or [[BlueJ]], [[Mama (software)|Mama]], [[newLISP]], [[Oz (programming language)|OZ]], most other programming languages
|-
| College
| 18+
| None assumed, non-majors course
| [[Squeak]], [[Greenfoot]] or [[BlueJ]], [[newLISP]], [[Visual Basic]], full featured [[BASIC]]
|-
| College
| 18+
| Starting computer science or developer curriculum
| [[Haskell (programming language)|Haskell]], [[Oz (programming language)|OZ]], [[Scheme (programming language)|Scheme]], [[Squeak]], [[NetBeans]] [[NetBeans BlueJ Edition|BlueJ.]]
|-
|}
 
==See also==
* [[:Category: Programming language comparisons]]
* [[Sugar (desktop environment)|Sugar]], a GUI designed for constructive learning
* [[Assembly language]] – a low-level programming language
* [[Design By Numbers (programming language)|Design by numbers]] and [[Processing (programming language)|Processing]], two languages dedicated to artwork, originated at the MIT with both and educational and actual production purpose.
* [[Wiki Markup Language]]
 
* [[Sugar (desktop environment)|Sugar]] – a GUI designed for constructive learning
==External links==
* [[Design By Numbers (programming language)|Design by numbers]]
* {{dmoz|Computers/Programming/Languages/Education|Educational programming languages}}
* [[Processing (programming language)|Processing]] – a language dedicated to artwork
* [http://www.kidslike.info/computer_programming_educational_programming_languages Kids Like . info - educational games and toys; teach children programming], nontechnical encyclopedia article on educational programming languages, reviews and explains Scratch, Alice, Greenfoot
* [[Online integrated development environment|List of online integrated development environments]]
* [http://blogs.msdn.com/coding4fun/ Coding 4 Fun], Microsoft site for recreational coding
* [[Comparison of online source code playgrounds]]
* [http://www.wikivs.com/wiki/BASIC_vs_Logo BASIC vs Logo], at WikiVS
* [[Programmer#Programming education|Programming education]]
* [http://happynerds.net HappyNerds], link collection for educational programming languages
 
==References==
{{reflistReflist|230em}}
 
{{DEFAULTSORT:Educational programming languages}}
[[Category:Educational programming languages|*]]
[[Category:Programming language comparisons]]
[[Category:Programming language classification]]
[[Category:Lists of programming languages]]