Content deleted Content added
Onmodefive (talk | contribs) copyedits |
→See also: Programming education, code playgrounds |
||
(48 intermediate revisions by 37 users not shown) | |||
Line 1:
{{Short description|none}}
{{use mdy dates|date=October 2016}}
An '''
==
===Assembly languages===
Initially, [[machine code]] was the sole method of programming [[Computer|computers]]. [[Assembly language]]
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)|
* [[Little man computer|'''Little Man Computer''']] (LMC), (1965)
▲Assembly languages are designed for specific processor architectures and 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]]
* [[MIX (abstract machine)|'''MIX''']] (1968) and '''[[MMIX]]''' (1999)
▲* [[Little man computer|Little Man Computer]] (LMC), (1965): This 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]]
* '''[[DLX]]''' (1994)
▲* [[MIX (abstract machine)|MIX]] (1968) and [[MMIX]] (1999): These are hypothetical 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.
* '''[[Next Byte Codes]]''' (NBC), (2007)
▲* [[DLX]] (1994): DLX is a reduced instruction set ([[Reduced instruction set computer|RISC]]) computer 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.
* '''[[Little Computer 3]]''' (LC-3), (2019)
▲* [[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.
===BASIC variants===
'''[[BASIC]]''' (Beginner's All-purpose Symbolic Instruction Code) was invented in
* Be easy for beginners to use.
* Be interactive.
* Provide clear and friendly error messages.
* Respond quickly.
*
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.
Line 30 ⟶ 26:
See also: [[List of BASIC dialects by platform]]
BASIC offers a learning path from learning-oriented BASICs such as [[Microsoft Small Basic]], [[BASIC-256]] [[Simple Mail Transfer Protocol|SIMPLE]]
* '''[[Microsoft Small Basic]]
* '''[[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.
* [[
* '''[[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
===C-based===
*
===Java-based===
*
===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
===
*
===Scala-based===
*
===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 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
* '''[[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.▼
▲* [[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 |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'' |authorlink=}}</ref>
▲* [[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
===Other===
* '''[[CircuitPython]]''' is a beginner-oriented version of [[Python (programming language)|Python]] for interactive electronics and 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 '''[[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.
*
* '''[[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.
* '''[[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
* '''[[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]]''' is a free [[Ruby (programming language)|Ruby]]-based environment
*
* '''[[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
*
* '''[[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
*
* '''[[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.
*
* '''[[ScratchJr]]''' is derivative of the Scratch graphical language. It is designed for children with ages around 5-7.
*
* '''[[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.
* '''[[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]].
==University==
*
*
*
==See also==
* [[:Category: Programming language comparisons]]
* [[Assembly language]] – a low-level programming language
* [[Wiki Markup Language]]
* [[Sugar (desktop environment)|Sugar]] – a GUI designed for constructive learning
* [[Design By Numbers (programming language)|Design by numbers]]
* [[Processing (programming language)|Processing]] – a language dedicated to artwork
* [[Online integrated development environment|List of online integrated development environments]]
* [[Comparison of online source code playgrounds]]
* [[Programmer#Programming education|Programming education]]
==References==
|