Content deleted Content added
m →Children: Added links |
→See also: Programming education, code playgrounds |
||
(26 intermediate revisions by 19 users not shown) | |||
Line 1:
{{Short description|none}}
{{use mdy dates|date=October 2016}}
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.▼
▲An '''
==Types of educational programming languages==
===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)|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
* '''[[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.
Line 20 ⟶ 15:
===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 32 ⟶ 27:
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.
* [[
* '''[[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===
Line 52 ⟶ 47:
===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 [[
===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|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>
* '''[[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.
Line 81 ⟶ 76:
* [[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 allowing them to create projects such as games, videos, and music. It does this by simplifying
* '''[[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 89 ⟶ 84:
==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>
* [[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>
Line 96 ⟶ 91:
* [[: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==
|