Content deleted Content added
m fixed spelling, grammatical errors, and improved formatting |
No edit summary |
||
Line 4:
{{more citations needed|date=January 2013}}
{{peacock|reason=Entries have opinions tied to text|date=February 2019}}}}
An '''Educational Programming Language''' ('''EPL
▲An '''Educational Programming Language (EPL)''' is a [[programming language]] used primarily as a learning tool and a starting point before transitioning to more complex programming languages.
▲== Types of Educational Programming Languages ==
===Assembly languages===
Initially, [[machine code]] was the sole method of programming [[Computer|computers]]. [[Assembly language]] or also known as ASM, followed as an early advancement due to the introduction of mnemonics in place of low-level instructions, making it one of the oldest families of programming languages that is still in use today. Numerous [[Dialect|dialects]] and implementations exist, each tailored to a specific [[computer processor]] [[Instruction set architecture|architecture]]. Assembly languages are considered [[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]]
Line 47 ⟶ 44:
===Lisp-based===
* [[Lisp (programming language)|'''Lisp''']] is the second oldest family of [[programming language]]s in use today and as such has [[:Category:Lisp programming language family|many]] [[Dialect (computing)|dialects]] and implementations with 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 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
===
* [[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 widely available on a variety of platforms, in both free and commercial versions.
===Scala-based===
* [[Kojo (programming language)|'''Kojo''']] is an interactive desktop development environment, developed primarily for educational purposes. The application runs on [[Microsoft Windows|Windows]], [[Linux]] and [[MacOS|OS X]]. Kojo is a learning environment, with many different features that help with the exploration, learning and teaching of concepts in computer programming, [[critical thinking]], math, science, art, music, [[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>
===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.
* [[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 [[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
* '''[[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.
===Pascal===
* [[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". Encyclopedia Britannica, 5 Apr. 2024, https://www.britannica.com/technology/Pascal-computer-language. Accessed 12 June 2024.</ref> From the late 1970s to the late 1980's, 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
===Other===
Line 91 ⟶ 68:
==Children==
* '''[[AgentSheets]]''' and '''[[AgentCubes]]''' are two computational thinking tools to author 2D/3D games and simulations. 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 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
* '''[[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 like PHP, Python, etc.
* '''[[CiMPLE]]''' was a visual language for programming robotic kit 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
* [[Physical Etoys|'''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
* [[Hackety Hack|'''Hackety Hack''']] is a free [[Ruby (programming language)|Ruby]]-based environment aiming to make learning [[computer programming|programming]] easy for beginners, especially teenagers.<ref>{{Cite web
* [[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]].
* '''[[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 character 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
* [[Lego Mindstorms|'''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|'''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 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>
* '''[[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 letting them create games, videos, and music. It does this by simplifying what we know to be code into function "blocks" that the user can drag and connect, then run by clicking the green flag icon. 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 1,000,000,000 projects with over 164,000,000 publicly shared.<ref name="u895">{{cite web
* '''[[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]].
Line 110 ⟶ 87:
==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
* [[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
==See also==
|