Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Turing (programming language)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|High-level computer programming language}} {{Update|date=December 2021}} {{Infobox programming language | name = Turing | logo = Turing logo.gif | paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]] | designer = [[Ric Holt]], [[James Cordy]] | developer = Holt Software Associates | released = {{Start date and age|1982}} | latest release version = 4.1.1 | latest release date = {{End date and age|2007|11|25}} | discontinued = Yes | typing = [[Static typing|static]], [[Manifest typing|manifest]] | operating system = [[Microsoft Windows]] | license = | file ext = | website = <!-- {{URL|www.example.com}} --> | implementations = Turing, [[#TPlus|TPlus]], [[#OpenT|OpenT]] | dialects = [[#Object-Oriented Turing|Object-Oriented Turing]], [[#Turing+|Turing+]] | influenced by = [[Euclid (programming language)|Euclid]], [[Pascal (programming language)|Pascal]], [[SP/k]] | influenced = }} '''Turing''' is a [[High-level programming language|high-level]], [[General-purpose programming language|general purpose]] [[programming language]] developed in 1982 by [[Ric Holt]] and [[James Cordy]], at [[University of Toronto]] in Ontario, Canada. It was designed to help students taking their first [[computer science]] course learn how to code. Turing is a descendant of [[Pascal (programming language)|Pascal]], [[Euclid (programming language)|Euclid]], and [[SP/k]] that features a clean [[Syntax (programming languages)|syntax]] and precise machine-independent [[Semantics (computer science)|semantics]]. Turing 4.1.0 is the latest stable version. Versions 4.1.1 and 4.1.2 do not emit stand alone [[.exe]] files. Versions pre-4.1.0 have outdated syntax and functions. ==Overview== Named after British computer scientist [[Alan Turing]], Turing is used mainly as a teaching language at the high school and university level.<ref>{{cite journal |last1=Fluck |first1=A. |last2=Webb |first2=M. |last3=Cox |first3=M. |last4=Angeli |first4=C. |last5=Malyn-Smith |first5=J. |last6=Voogt |first6=J. |last7=Zagami |first7=J. |date=2016 |title=Arguing for computer science in the school curriculum |journal=Journal of Educational Technology & Society |volume=19 |issue=3 |pages=38β46}}</ref> Two other versions exist, [[#Object-Oriented Turing|Object-Oriented Turing]] and [[#Turing+|Turing+]], a systems programming variant. In September 2001, "Object Oriented Turing" was renamed "Turing" and the original Turing was renamed "Classic Turing". Turing is now unsupported by Holt Software Associates in [[Toronto, Ontario]]. Turing was widely used in high schools in [[Ontario]] as an introduction to programming.<ref>{{Cite web|url=http://compsci.ca/holtsoft/|title=Download Turing & RTP (Ready to Program)|last=info@compsci.ca|website=compsci.ca|access-date=2018-08-21}}</ref> On November 28, 2007, Turing, which was previously a commercial programming language, became freeware, available to download from the developer's website free of charge for personal, commercial, and educational use.<ref name=holtsoft>{{cite web |url=http://www.holtsoft.com |title=Holt Software Associates |date=January 2008 |access-date=2010-04-10 |url-status=dead |archive-url=https://web.archive.org/web/20100405101149/http://www.holtsoft.com/ |archive-date=2010-04-05}}</ref><ref name="holtsoft/old_index">{{cite web |url=http://www.holtsoft.com/old_index.html |title=Holt Software Associates (old) |date=2007-11-25 |access-date=2010-04-10 |url-status=dead |archive-url=https://web.archive.org/web/20100417185823/http://www.holtsoft.com/old_index.html |archive-date=2010-04-17}}</ref><ref>{{Cite web |url=http://compsci.ca/blog/download-turing-411/ |title=Download Turing 4.1.1 |access-date=2009-01-10 |publisher=compsci.ca Blog |date=2007-11-28}}</ref> The makers of Turing, Holt Software Associates, have since ceased operations, and Turing has seen no further development since November 25, 2007.<ref name="holtsoft/old_index"/> ==Syntax== Turing is designed to have a very lightweight, readable, intuitive [[Syntax (programming languages)|syntax]]. Here is the entire [["Hello, World!" program]] in Turing with [[syntax highlighting]]: '''put''' <span style="color:red">"Hello World!"</span> Turing avoids [[semicolon]]s and [[Curly brackets|braces]], using explicit end markers for most language constructs instead, and allows [[Declaration (computer programming)|declarations]] anywhere. Here is a complete program defining and using the traditional [[Recursion|recursive]] function to calculate a [[factorial]]. <span style="color:green">[[Comment (computer programming)|%]] Accepts a number and calculates its factorial</span> '''function''' <span style="color:blue">factorial</span> (<span style="color:blue">n</span>: '''int''') : '''real''' '''if''' <span style="color:blue">n</span> = 0 '''then''' '''result''' 1 '''else''' '''result''' <span style="color:blue">n</span> * <span style="color:blue">factorial</span> (<span style="color:blue">n</span> - 1) '''end if''' '''end''' <span style="color:blue">factorial</span> '''var''' <span style="color:blue">n</span>: '''int''' '''loop''' '''put''' <span style="color:red">"Please input an integer: "</span> .. '''get''' <span style="color:blue">n</span> '''exit when''' <span style="color:blue">n</span> >= 0 '''put''' <span style="color:red">"Input must be a non-negative integer."</span> '''end loop''' '''put''' <span style="color:red">"The factorial of "</span>, <span style="color:blue">n</span>, <span style="color:red">" is "</span>, <span style="color:blue">factorial</span> (<span style="color:blue">n</span>) ==Open implementations== Currently, there are two open source alternative implementations of Turing: Open Turing, an open source version of the original [[Interpreter (computing)|interpreter]], and [[#TPlus|TPlus]], a native compiler for the concurrent system programming language variant [[#Turing+|Turing+]]. [[#OpenT|OpenT]], a project to develop a Turing compiler, was discontinued. ===Open Turing=== Open Turing is an open-source implementation of the original Turing interpreter for Windows written by Tristan Hume. It includes speed improvements, new features such as OpenGL 3D and a new code editor. It is fully backwards compatible with the closed-source implementation.<ref>{{cite web|last=Hume|first=Tristan|title=Open Turing|url=http://tristan.hume.ca/openturing/|access-date=6 May 2012}}</ref> ===TPlus=== TPlus is an open-source implementation of original (non-Object-Oriented) Turing with systems programming extensions developed at the University of Toronto and ported to [[Linux]], [[Oracle Solaris|Solaris]], and [[macOS|Mac OS X]] at [[Queen's University at Kingston|Queen's University]] in the late 1990s.<ref>{{cite web|last=Cordy|first=James|title=Turing+ 6.1|url=http://txl.ca/txl-tplusdownload.html|access-date=11 December 2020}}</ref> TPlus implements [[#Turing+|Turing+]] (Turing Plus), a concurrent systems programming language based on the original Turing programming language. Some, but not all, of the features of Turing Plus were eventually subsumed into the present [[#Object-Oriented Turing|Object-Oriented Turing]] language. Turing Plus extends original Turing with [[Process (computing)|processes]], [[Monitor (synchronization)|monitors]] (as specified by [[C.A.R. Hoare]]), and language constructs needed for system programming such as binary input-output, separate compiling, variables at absolute addresses, type converters and other features. == Turing+ == {{Infobox programming language | name = Turing+ | logo = | paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]], [[Concurrent programming|concurrent]] | designer = [[Ric Holt]], [[James Cordy]] | developer = [[Ric Holt]], [[James Cordy]] | released = {{Start date and age|1987}} | latest release version = <!--x.y.z --> | latest release date = <!-- {{Start date and age|202y|mm|dd|mf=yes}} --> | typing = [[Static typing|static]], [[Manifest typing|manifest]] | operating system = | license = | file ext = | website = | implementations = | dialects = | influenced by = [[Concurrent Euclid]], Turing | influenced = [[#Object-Oriented Turing|Object-Oriented Turing]] }} '''Turing+''' (Turing Plus) is a [[concurrent system]]s programming language based on the Turing programming language designed by [[James Cordy]] and [[Ric Holt]], then at the [[University of Toronto]], Canada, in 1987. Some, but not all, of the features of Turing+ were eventually subsumed into [[#Object-Oriented Turing|Object-Oriented Turing]]. Turing+ extended original Turing with processes and [[Monitor (synchronization)|monitor]]s (as specified by [[C.A.R. Hoare]]) as well as language constructs needed for systems programming such as binary input-output, separate compiling, variables at absolute addresses, type converters, and other features. Turing+ was explicitly designed to replace [[Concurrent Euclid]] in systems-programming applications. The [[TUNIS]] operating system, originally written in Concurrent Euclid, was recoded to Turing+ in its [[MiniTunis]] implementation. Turing+ has been used to implement several production software systems, including the language [[TXL (programming language)|TXL]]. == Object-Oriented Turing == {{Infobox programming language | name = Object-Oriented Turing | logo = | paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]], [[Concurrent programming|concurrent]] | designer = [[Ric Holt]] | developer = [[Ric Holt]] | released = {{Start date and age|1991}} | latest release version = <!--x.y.z --> | latest release date = <!-- {{Start date and age|202y|mm|dd|mf=yes}} --> | typing = [[Static typing|static]], [[Manifest typing|manifest]] | operating system = [[Cross-platform]]: [[Sun-4]], [[MIPS architecture|MIPS]], [[IBM System p|RS-6000]] | license = | file ext = | website = | implementations = | dialects = | influenced by = Turing | influenced = }} '''Object-Oriented Turing''' is an extension of the Turing programming language and a replacement for [[#Turing Plus|Turing Plus]] created by [[Ric Holt]]<ref>{{cite journal |last=Mancoridis|first=S |author2=Holt, R C |author3=Penny, D A |date=February 1993|title=A Conceptual Framework for Software Development|journal=ACM Annual Computer Science Conference (SIGCSE, Indianapolis)|pages=74β80|oclc=194807519|issn=1041-4517|id=BL Shelfmark 0578.623000|author2-link=Ric Holt}}</ref><ref>{{cite book |title=Turing reference manual|last=Holt|first=RC|author-link=Ric Holt|edition=3rd.|year=1992|publisher=Holt Software Associates|location=[[Toronto]]|isbn=978-0-921598-15-2|oclc=71476276}}</ref> of the [[University of Toronto]], Canada, in 1991. It is [[Imperative programming|imperative]], [[Object-oriented programming|object-oriented]], and [[Concurrency (computer science)|concurrent]]. It has [[Modularity (programming)|modules]], [[Class (computer science)|classes]], single [[Inheritance (object-oriented programming)|inheritance]], [[Process (computing)|processes]], [[exception handling]], and optional [[machine-dependent]] programming. There is an [[integrated development environment]] under the [[X Window System]] and a demo version.{{citation needed|date=October 2013}} Versions exist for [[Sun-4]], [[MIPS architecture|MIPS]], [[IBM System p|RS-6000]], [[NeXTSTEP]], [[Windows 95]], and others. ==References== {{Reflist}} ==Further reading== *{{cite book |last=Grogono |first=Peter |date=1995 |title=Programming with Turing and Object Oriented Turing |url=https://www.springer.com/gp/book/9780387945170 |publisher=Springer-Verlag|isbn=978-0-387-94517-0}} *{{cite journal |last1=Holt |first1=Richard C. |author1-link=Ric Holt |last2=Cordy |first2=James R. |author2-link=James Cordy |date=December 1983 |title=The Turing language report |journal=Annual Progress Report |publisher=Computer Systems Research Institute, [[University of Toronto]] |location=Canada |issn=0316-6295}} *{{cite journal |last1=Holt |first1=Richard C. |author1-link=Ric Holt |last2=Cordy |first2=James R. |author2-link=James Cordy |date=December 1988 |title=The Turing programming language |journal=[[Communications of the ACM]] |volume=31 |issue=12 |pages=1410β1423 |doi=10.1145/53580.53581 |s2cid=40859457 |doi-access=free}} *{{cite book |last1=Holt |first1=Richard C. |author1-link=Ric Holt |last2=Matthews |first2=Philip A. |last3=Rosselet |first3=J. Alan |last4=Cordy |first4=James R. |author4-link=James Cordy |year=1988 |title=The Turing programming language: design and definition |publisher=[[Prentice Hall]] |location=[[Englewood Cliffs, New Jersey|Englewood Cliffs, N.J.]] |isbn=978-0-13-933136-7 |oclc=17377539}} ==External links== {{Wikibooks|Turing}} * {{GitHub|Open-Turing-Project/OpenTuring}} {{Authority control}} [[Category:1982 establishments in Ontario]] [[Category:Academic programming languages]] [[Category:Algol programming language family]] [[Category:Articles with example code]] [[Category:Educational programming languages]] [[Category:Programming languages created in 1982]] [[Category:Statically typed programming languages]] [[Category:Structured programming languages]] [[Category:University of Toronto]] [[Category:Alan Turing]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Authority control
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite book
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:GitHub
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Sister project
(
edit
)
Template:Update
(
edit
)
Template:Wikibooks
(
edit
)