List of educational programming languages: Difference between revisions

Source: Wikipedia, the free encyclopedia.
Content deleted Content added
Line 204: Line 204:
* ''[[Python (programming language)|Python]]'' is a [[cross-platform]] [[Programming paradigm#Multi-paradigm|multi-paradigm]] [[Command-line interface#Command-line interpreter|interpreted]] [[scripting language]] which is utilized for teaching computer science in various colleges and universities around the globe.<ref>{{cite web|title=Schools Using Python|url=https://wiki.python.org/moin/SchoolsUsingPython|website=Python.org}}</ref> Python's clear syntax, interpreted interface, and high level data structures make it an ideal instructional language for education, while the large number of extant libraries make it useful for working programs.
* ''[[Python (programming language)|Python]]'' is a [[cross-platform]] [[Programming paradigm#Multi-paradigm|multi-paradigm]] [[Command-line interface#Command-line interpreter|interpreted]] [[scripting language]] which is utilized for teaching computer science in various colleges and universities around the globe.<ref>{{cite web|title=Schools Using Python|url=https://wiki.python.org/moin/SchoolsUsingPython|website=Python.org}}</ref> Python's clear syntax, interpreted interface, and high level data structures make it an ideal instructional language for education, while the large number of extant libraries make it useful for working programs.
* ''[[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 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.
* ''[[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 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.
* ''[[Wolfram Language]]'' is a multi-paradigm programming language developed by Wolfram Research and is the programming language of mathematical symbolic computation program, [[Mathematica]] and the Wolfram Development Platform.<ref>{{Cite web|url=http://www.wolfram.com/development-platform|title=Wolfram Development Platform: Introducing a Programming Revolution|website=www.wolfram.com|access-date=2018-01-22}}</ref> It emphasizes symbolic computation, functional programming, and rule-based programming and can employ arbitrary structures and data.


==Languages by age and experience==
==Languages by age and experience==

Revision as of 15:37, 30 January 2018

An educational programming language is a programming language that is designed mostly as an instrument for learning, and less as a tool for writing programs to perform work.

Learning paths

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.

Assembly language

Originally,

low level programming language. It is one of the more difficult languages to work with being untyped
and rigid, but this is how computers work at low level. Several simplified dialects exist for education.

Low level languages must be written for a specific processor 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 language to use for learning about fundamental computer processor operation.

  • 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 as memory; each can hold 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 counter is similar to what a doorperson uses to count how many people have entered a facility; it can count up 1, or can be reset to 0. As specified by the von Neumann architecture
    , memory holds both instructions and data. The user loads data into the mailboxes and then signals the little man to begin executing.
  • 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 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.
  • instruction set architecture (ISA). For MMIX, Knuth collaborated with the architects of the MIPS and Alpha
    ISAs.

BASIC

.

C

  • Ch is a C/C++ interpreter 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

Sun Microsystems's recommended path is Greenfoot to BlueJ to Netbeans-BlueJ to Netbeans-Java.[3]

  • Greenfoot is an interactive Java development environment developed primarily for educational use. 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.[3]
  • NetLogo is a development environment for building and exploring scientific models, specifically agent-based models. It is in widespread use both in science research (Science papers using NetLogo) and in educational contexts, including elementary, secondary schools, universities and museums.
  • interaction techniques to create a highly interactive environment that encourages experimentation and exploration.[4]

Lisp-based

dialects and implementations at 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 computing. As one of the earliest languages, Lisp pioneered many ideas in computer science, including tree data structures, automatic storage management, dynamic typing, object-oriented programming, and the self-hosting compiler
all of which are useful for learning computer science.

The name LISP derives from "LISt Processing language". Linked lists are one of the languages' major data structures, and Lisp source code is made of lists. Thus, Lisp programs can manipulate source code as a data structure, giving rise to the macro systems that allow programmers to create new syntax or even new domain-specific languages embedded in Lisp. So Lisps are useful for learning language design, and creating custom languages.

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.

  • constructivist learning theory. Papert argued that activities like writing would naturally be learned by much younger children providing that they adopted a computing culture.[5] Logo was thus designed not only to teach programming, and computing 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."[5] 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 with more advanced students it can be used to introduce the basic concepts of computer science and even artificial intelligence. Brian Harvey wrote a series Computer Science Logo Style[6]
    for self study of computer science based on Logo. Logo is widely available on virtually every platform, in both free and commercial versions.
  • Scheme was originally designed in 1975 to serve a tutorial purpose.[7] 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 atop an underlying LISP with cheap procedure calls.[8] Pedagogically this allowed for teaching programming in terms of domain-specific languages and meta-circular evaluators. 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.

    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 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 machines.

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 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.[9]

Since then the Scheme community has introduced several pedagogic programming environments for more modern approaches. Of particular note is the
DrRacket environment, freely available text How to Design Programs and ProgramByDesign educator training.[10] The first unit of the Bootstrap Curriculum
uses the Racket language.
  • newLISP aims to provide a fast, powerful, cross-platform, full-featured scripting version of the Lisp 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 is an interactive desktop development environment developed primarily for educational purposes application that runs on Windows, Linux, and OS X. It 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.[11]

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 to Squeak to any Smalltalk.[12] 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

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.

  • Scratch is a visual 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.[13] It is developed by the Lifelong Kindergarten group at MIT Media Lab.
  • MIDI, the ability to share desktops with other Etoy users in real-time, so many forms of immersive mentoring and play can be done over the Internet. It is 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.[14]

Other

Children

  • AgentSheets is a computational thinking tool to author 2D/3D games and simulations. Authoring takes place through desktop applications or browser based apps and can create 2D/3D games playable in HTML5 compliant browsers including mobile ones.
  • 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. Story Telling Alice is an Alice variant designed for younger children, with an even stronger story telling bent.[17]
  • Blockly is an open source web-based, graphical language where users can drag blocks together to build an application; no typing needed. It is developed by Google. More information is available at the project home page.[18]
  • CiMPLE is a visual language for programming robotic kit for children. It is built atop C as a DSL. ThinkLabs an Indian Robotics education based startup has built it for iPitara Robotic kit. The language bears strong resemblance to the C language. Approximately 5000+ students in India have bought the iPitara kit and programmed it using CiMPLE. More information is at CiMPLE Original Developers Weblog[19] and ThinkLabs.[20]
  • 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.
  • Hackety Hack is a free Ruby-based environment aiming to make learning programming easy for beginners, especially teenagers.
  • 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 language, Karel++ is a version of Karel implemented in C++, while Karel J. Robot is a version of Karel implemented in Java.
  • 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.
  • 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.
  • Computer Clubhouses
    .
  • Carnegie Mellon's 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 on educational programming principles explains Mama's design considerations.[21]
  • open-source blocks and text-based online editor for physical computers like the micro:bit and Circuit Playground Express. It is actively maintained by Microsoft. The source is hosted on GitHub
    .
  • 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.
  • Scratch is a blocks-based graphical language to create animated stories and games.
  • UC Berkeley. The 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.
  • MIT's 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.
  • ToonTalk is a 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 programming.
  • Wolfram Programming Lab[22] is an educational program designed for anyone new to or has little experience with the Wolfram Language, which powers Wolfram|Alpha and is used in top research and development organizations worldwide. It includes a step-by-step introductory programming course that teaches the basics of the language in a straightforward manner.

Historical

  • Pascal is the most well-known 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 language has since become somewhat controversial.[according to whom?]

University

  • A++ represents a more recent attempt to create a language designed to provide an efficient tool for basic training in programming.
  • Curry is a teaching language[23] 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".[24][25]
  • Haskell is often used by universities instead of LISP or Scheme. Its primary goal was to function equally well as a language for teaching, research and application design.[26] It is a purely functional, extremely expressive lazy functional programming language. An education specific compiler / IDE, called 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.[27][28]
  • M2001 is a 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.

Languages by age and experience

The following chart helps to summarize the information above for parents and teachers.

US education level Approximate age Experience level Appropriate languages
Preschool – grade 2 3–7 None, not applicable
Grades 2–4 7–9 None, not applicable
Grades 5–8 10–14 None or little
Grades 5–8 10–14 Some AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Microsoft MakeCode, Python, Ruby
High school 14–17 None or little AgentSheets, Squeak, Microsoft Small Basic, RoboMind, full featured BASIC, Greenfoot, Pascal, Mama, Python, Ruby, Visual Basic
High school 14–17 Some AgentSheets, Squeak, RoboMind, Greenfoot or BlueJ, Mama, newLISP, Oz, Python, most other languages
College 18+ None assumed, non-majors course Squeak, Greenfoot or BlueJ, newLISP, Python, Visual Basic, full featured BASIC
College 18+ Starting computer science or developer curriculum
Haskell, Oz, Scheme, Squeak, Python

See also

External links

References

  1. Salon
    . Retrieved April 12, 2009.
  2. ^ Microsoft corporation 2009 Getting Started Guide for Small Basic, p. 64.
  3. ^ a b Nourie, Dana [1] (July 2008). "Young Developer Learning Path". Sun Microsystems. Retrieved April 3, 2009. {{cite web}}: External link in |first= (help)
  4. ^ "What is BlueJ?". BlueJ official site. Retrieved April 3, 2009.
  5. ^ a b Papert, Seymour (October 1980). Redefining Childhood: The Computer Presence as an Experiment in Developmental Psychology. Tokyo, Japan and Melbourne, Australia: 8th World Computer Congress: IFIP Congress.
  6. ^ Volume 1: Symbolic Computing Volume 2: Advanced Techniques Volume 3: Beyond Programming
  7. Lambda Papers
  8. Lambda Papers
  9. doi:10.1017/S0956796804005076.{{cite journal}}: CS1 maint: extra punctuation (link
    )
  10. ^ More information on the PLT group results is at Northeastern PLT: Publications.
  11. ^ "About kogics Kojo". Retrieved February 12, 2011.
  12. ^ Cavallo, David (May 28, 2007). "Learning Squeak from Scratch". One Laptop Per Child News. Retrieved April 3, 2009.
  13. ^ Mitchel Resnick; John Maloney; Natalie Rusk; Evelyn Eastmond; Amon Millner; Jay Silver; Eric Rosenbaum; Karen Brennan; Amos Blanton. "Scratch: imagine, program, share". Massachusetts Institute of Technology. Retrieved January 8, 2013.
  14. .
  15. ^ Kay, Alan. "The Early History of Smalltalk". Retrieved September 13, 2007.
  16. ^ For further discussion of why this make it easy see Meta-circular evaluator
  17. ^ Story Telling Alice
  18. ^ Blockly
  19. ^ CiMPLE Original Developers Weblog Archived July 21, 2011, at the Wayback Machine
  20. ^ ThinkLabs
  21. ^ Mama educational programming principles
  22. ^ "Wolfram Programming Lab". www.wolfram.com. Retrieved January 22, 2018.
  23. ^ 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.
  24. ^ Curry report, Introduction. Most recent version available at Archived October 4, 2009, at the Wayback Machine
  25. ^ M. Hanus. The Integration of Functions into Logic Programming: From Theory to Practice. Journal of Logic Programming, Vol. 19&20, pp. 583–628, 1994.
  26. ^ Jones, Simon Peyton (2002). "Preface". The Haskell 98 report. Haskell 98 working group. Retrieved April 4, 2009.
  27. ISSN 0362-1340
    .
  28. .
  29. ^ "About". Flowgorithm. Retrieved August 26, 2014.
  30. ^ "Schools Using Python". Python.org.
  31. ^ Programming Paradigms poster
  32. ^ "Wolfram Development Platform: Introducing a Programming Revolution". www.wolfram.com. Retrieved January 22, 2018.