Turing (programming language): Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
No edit summary
Tags: Mobile edit Mobile web edit
 
(34 intermediate revisions by 22 users not shown)
Line 1: Line 1:
{{Short description|High-level computer programming language}}
{{Update|date=December 2021}}
{{Infobox programming language
{{Infobox programming language
| name = Turing
| name = Turing
| logo = [[File:Turing logo.gif]]
| logo = Turing logo.gif
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[procedural programming|procedural]]
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]]
| designer = [[Ric Holt]], [[James Cordy]]
| year = 1986
| designer = [[Ric Holt]] and [[James Cordy]]
| developer = Holt Software Associates
| developer = Holt Software Associates
| released = {{Start date and age|1982}}
| latest_release_version = <!--X.Y.Z/{{release date|mf=yes|YYYY|MM|DD}}-->
| latest release date =
| latest release version = 4.1.1
| latest release date = {{End date and age|2007|11|25}}
| typing = [[static typing|static]], [[manifest typing|manifest]]
| discontinued = Yes
| implementations = Turing, TPlus, OpenT
| dialects = [[Object-Oriented Turing]], [[Turing Plus]]
| typing = [[Static typing|static]], [[Manifest typing|manifest]]
| operating system = [[Microsoft Windows]]
| influenced_by =[[Euclid (programming language)|Euclid]], [[Pascal (programming language)|Pascal]], [[SP/k]]
| license =
| file ext =
| website = <!-- {{URL|www.example.com}} -->
| implementations = Turing, [[#TPlus|TPlus]], [[#OpenT|OpenT]]
| dialects = [[#Object-Oriented Turing|Object-Oriented Turing]], [[#Turing Plus|Turing Plus]]
| influenced by = [[Euclid (programming language)|Euclid]], [[Pascal (programming language)|Pascal]], [[SP/k]]
| influenced =
| influenced =
| operating_system = [[Microsoft Windows]]
| license =
| website =
| file_ext =
}}
}}


'''Turing''' is a [[Pascal (programming language)|Pascal]]-like [[programming language]] developed in 1982 by [[Ric Holt]] and [[James Cordy]], then of [[University of Toronto]], in [[Toronto]], Ontario, Canada. Turing is a descendant of [[Euclid (programming language)|Euclid]], Pascal and [[SP/k]] that features a clean syntax and precise machine-independent semantics.
'''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 of Turing. Turing 4.1.1 and Turing 4.1.2 do not allow for stand alone .EXE files to be created and versions before Turing 4.1.0 have outdated syntax and outdated functions.
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==
==Overview==
Named after British computer scientist [[Alan Turing]], Turing is used primarily as a teaching language at the high school and university level.{{Citation needed|date=January 2011}} Two other versions exist, [[Object-Oriented Turing]] and [[Turing Plus]], a systems programming variant. In September 2001, "Object Oriented Turing" was renamed "Turing" and the original Turing was renamed "Classic Turing". Turing is no longer supported by Holt Software Associates in [[Toronto, Ontario]]. Currently, [[Microsoft Windows]] is the only supported platform. Turing is 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>
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 Plus|Turing Plus]], 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 Home Page|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|df=}}</ref><ref name="holtsoft/old_index">{{cite web|url=http://www.holtsoft.com/old_index.html|title=Holt Software Associates Home Page (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|df=}}</ref><ref>{{Cite web |url= http://compsci.ca/blog/download-turing-411/|title= Download Turing 4.1.1|accessdate= 2009-01-10|publisher= compsci.ca Blog|date= 2007-11-28}}</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"/>
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==
==Syntax==
Turing is designed to have a very lightweight, readable, intuitive syntax. Here is the entire [[Hello World!]] program in Turing with [[syntax highlighting]]:
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>
'''put''' <span style="color:red">"Hello World!"</span>


Turing avoids semicolons and braces, using explicit end markers for most language constructs instead, and allows declarations anywhere. Here is a complete program defining and using the traditional [[recursion|recursive]] function to calculate a [[factorial]].
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">% Accepts a number and calculates its factorial</span>
<span style="color:green">*comment*% Accepts a number and calculates its factorial</span>
'''function''' <span style="color:blue">factorial</span> (<span style="color:blue">n</span>: '''int''') : '''real'''
'''function''' <span style="color:blue">factorial</span> (<span style="color:blue">n</span>: '''int''') : '''real'''
Line 59: Line 62:
==Open implementations==
==Open implementations==


Currently, there are two open source alternative implementations of Turing: Open Turing, an open source version of the original interpreter, and TPlus, a native compiler for the concurrent systems programming language variant [[Turing Plus]]. OpenT, a project to develop a compiler for Turing, is no longer in development.
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 Plus|Turing Plus]]. [[#OpenT|OpenT]], a project to develop a Turing compiler, was discontinued.


===Open Turing===
===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/|accessdate=6 May 2012}}</ref>
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===
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, Solaris and Mac OS X at [[Queen's University]] in the late 1990s.<ref>{{cite web|last=Cordy|first=James|title=Turing+ 5.1|url=http://research.cs.queensu.ca/~cordy/pub/downloads/tplus/|accessdate=13 April 2017}}</ref> TPlus implements 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]] language. Turing Plus extends original Turing with [[Process (computing)|processes]] and [[monitor (synchronization)|monitors]] (as specified by [[C.A.R. Hoare]]) as well as language constructs needed for systems programming such as binary input-output, separate compilation, variables at absolute addresses, type converters and other features.
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 Plus|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.

===OpenT===
[[OpenT]] is an abandoned [[open source software|open-source]] language, compiler, and [[Integrated development environment|IDE]] that was being developed by the members of the dTeam of [[Computer Science Canada]].{{citation needed|date=October 2013}} It shares many similarities with Turing, and is fully backwards compatible with it.

==Trivia==

As an addition to the usual graphics drawing functions, Turing features special functions for drawing [[Maple|maple leaves]] to allow easier drawing of the [[Flag of Canada|Canadian flag]].<ref>{{cite web|title=Turing Documentation for drawfillmapleleaf|url=http://compsci.ca/holtsoft/doc/drawfillmapleleaf.html|accessdate=21 August 2014}}</ref>


== Turing+ ==
== Turing+ ==
Line 79: Line 75:
| name = Turing+
| name = Turing+
| logo =
| logo =
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[procedural programming|procedural]], [[concurrent programming|concurrent]]
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]], [[Concurrent programming|concurrent]]
| designer = [[Ric Holt]], [[James Cordy]]
| year = 1987
| designer = [[Ric Holt]] and [[James Cordy]]
| developer = [[Ric Holt]], [[James Cordy]]
| developer = [[Ric Holt]] and [[James Cordy]]
| released = {{Start date and age|1987}}
| latest_release_version = <!--X.Y.Z/{{release date|mf=yes|YYYY|MM|DD}}-->
| latest release version = <!--x.y.z -->
| latest release date =
| latest release date = <!-- {{Start date and age|202y|mm|dd|mf=yes}} -->
| typing = [[static typing|static]], [[manifest typing|manifest]]
| typing = [[Static typing|static]], [[Manifest typing|manifest]]
| operating system =
| implementations =
| dialects =
| influenced_by =[[Concurrent Euclid]], Turing
| influenced =[[Object-Oriented Turing]]
| operating_system =
| license =
| license =
| file ext =
| website =
| website =
| file_ext =
| 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]]. 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 compilation, variables at absolute addresses, type converters and other features.
'''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 (programming language)|Concurrent Euclid]] in systems-programming applications. The [[TUNIS|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 [[TXL programming language]].
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 ==
== Object-Oriented Turing ==
{{Infobox programming language
{{Infobox programming language
| name =Object-Oriented Turing
| name = Object-Oriented Turing
| logo =
| logo =
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Object-oriented programming|object-oriented]], [[procedural programming|procedural]], [[concurrent programming|concurrent]]
| paradigm = [[Multi-paradigm programming language|multi-paradigm]]: [[Procedural programming|procedural]], [[Object-oriented programming|object-oriented]], [[Concurrent programming|concurrent]]
| designer = [[Ric Holt]]
| year =1991
| designer =[[Ric Holt]]
| developer = [[Ric Holt]]
| released = {{Start date and age|1991}}
| developer =[[Ric Holt]]
| latest_release_version = <!--X.Y.Z/{{release date||YYYY|MM|DD}}-->
| latest release version = <!--x.y.z -->
| latest release date =
| latest release date = <!-- {{Start date and age|202y|mm|dd|mf=yes}} -->
| typing = [[static typing|static]], [[manifest typing|manifest]]
| 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 =
| implementations =
| dialects =
| dialects =
| influenced_by =Turing
| influenced by = Turing
| influenced =
| influenced =
| operating_system = [[Cross-platform]]: [[Sun-4]], [[MIPS architecture|MIPS]], [[IBM System p|RS-6000]]
| license =
| website =
| file_ext =
}}
}}


'''Object-Oriented Turing''' is an extension of the Turing programming language and a replacement for [[Turing Plus]] created by [[Ric Holt]]<ref>{{cite journal |last= Mancoridis|first= S |author2=[[Ric Holt|Holt, R C]] |author3=Penny, D A |date=February 1993|title= A Conceptual Framework for Software Development|journal= [[Association for Computing Machinery|ACM]] Annual Computer Science Conference ([[SIGCSE]], [[Indianapolis]])|pages= 74–80|oclc= 194807519|issn= 1041-4517|id= BL Shelfmark 0578.623000}}</ref><ref>{{cite book |title= Turing reference manual|last= Holt|first= RC|authorlink= 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 (computer science)|inheritance]], [[Process (computing)|processes]], [[exception handling]], and optional [[machine-dependent]] programming.
'''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.


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.
==See also==
*[[Euclid (programming language)]]
*[[Concurrent Euclid]]
*[[Turing Plus (programming language)]]
*[[Object-Oriented Turing]]
* [[TXL (programming language)|TXL]]


==References==
==References==
Line 136: Line 125:


==Further reading==
==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 book |title= The Turing language report|last1= Holt|first1= Richard C|last2= Cordy|first2= James R|authorlink1= Ric Holt|authorlink2= James Cordy|date=December 1983|publisher= Computer Systems Research Institute, [[University of Toronto]] | location=Canada |issn= 0316-6295}}
*{{cite journal |last= Holt|first= Richard C|authorlink= Ric Holt|author2=Cordy, James R |authorlink2=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|url= }}
*{{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 |title= The Turing programming language: design and definition|last1= Holt|first1= Richard C|last2= Matthews|first2= Philip A|last3= Rosselet|first3= J Alan|last4= Cordy|first4= James R|authorlink1= Ric Holt|authorlink4= James Cordy|year= 1988|publisher= [[Prentice Hall]]|location= [[Englewood Cliffs, New Jersey|Englewood Cliffs, N.J.]]|isbn= 978-0-13-933136-7|oclc= 17377539}}
*{{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}}
*{{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 |access-date= }}


==External links==
==External links==
{{Wikibooks|Turing}}
{{Wikibooks|Turing}}
* {{GitHub|Open-Turing-Project/OpenTuring}}
*[http://www.compsci.ca/ Forum for Turing Help, Tutorials, & Source Code]
*[https://github.com/Open-Turing-Project/OpenTuring Github page for the Open Turing project]


{{Authority control}}
{{FOLDOC}}


[[Category:1982 establishments in Ontario]]
[[Category:1982 establishments in Ontario]]

Latest revision as of 19:42, 14 March 2024

Turing
Paradigmmulti-paradigm: procedural, object-oriented
Designed byRic Holt, James Cordy
DeveloperHolt Software Associates
First appeared1982; 42 years ago (1982)
Final release
4.1.1 / November 25, 2007; 16 years ago (2007-11-25)
Typing disciplinestatic, manifest
OSMicrosoft Windows
Major implementations
Turing, TPlus, OpenT
Dialects
Object-Oriented Turing, Turing Plus
Influenced by
Euclid, Pascal, SP/k

Turing is a high-level, 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, Euclid, and SP/k that features a clean syntax and precise machine-independent 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[edit]

Named after British computer scientist Alan Turing, Turing is used mainly as a teaching language at the high school and university level.[1] Two other versions exist, Object-Oriented Turing and Turing Plus, 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.[2]

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.[3][4][5]

The makers of Turing, Holt Software Associates, have since ceased operations, and Turing has seen no further development since November 25, 2007.[4]

Syntax[edit]

Turing is designed to have a very lightweight, readable, intuitive syntax. Here is the entire "Hello, World!" program in Turing with syntax highlighting:

put "Hello World!"

Turing avoids semicolons and braces, using explicit end markers for most language constructs instead, and allows declarations anywhere. Here is a complete program defining and using the traditional recursive function to calculate a factorial.

 *comment*% Accepts a number and calculates its factorial
 
 function factorial (n: int) : real
      if n = 0 then
           result 1
      else
           result n * factorial (n - 1)
      end if
 end factorial
 
 var n: int
 loop
      put "Please input an integer: " ..
      get n
      exit when n >= 0
      put "Input must be a non-negative integer."
 end loop
 
 put "The factorial of ", n, " is ", factorial (n)

Open implementations[edit]

Currently, there are two open source alternative implementations of Turing: Open Turing, an open source version of the original interpreter, and TPlus, a native compiler for the concurrent system programming language variant Turing Plus. OpenT, a project to develop a Turing compiler, was discontinued.

Open Turing[edit]

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

TPlus[edit]

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, Solaris, and Mac OS X at Queen's University in the late 1990s.[7] TPlus implements 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 language. Turing Plus extends original Turing with processes, 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+[edit]

Turing+
Paradigmmulti-paradigm: procedural, object-oriented, concurrent
Designed byRic Holt, James Cordy
DeveloperRic Holt, James Cordy
First appeared1987; 37 years ago (1987)
Typing disciplinestatic, manifest
Influenced by
Concurrent Euclid, Turing
Influenced
Object-Oriented Turing

Turing+ (Turing Plus) is a concurrent systems 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. Turing+ extended original Turing with processes and monitors (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.

Object-Oriented Turing[edit]

Object-Oriented Turing
Paradigmmulti-paradigm: procedural, object-oriented, concurrent
Designed byRic Holt
DeveloperRic Holt
First appeared1991; 33 years ago (1991)
Typing disciplinestatic, manifest
OSCross-platform: Sun-4, MIPS, RS-6000
Influenced by
Turing

Object-Oriented Turing is an extension of the Turing programming language and a replacement for Turing Plus created by Ric Holt[8][9] of the University of Toronto, Canada, in 1991. It is imperative, object-oriented, and concurrent. It has modules, classes, single inheritance, 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] Versions exist for Sun-4, MIPS, RS-6000, NeXTSTEP, Windows 95, and others.

References[edit]

  1. ^ Fluck, A.; Webb, M.; Cox, M.; Angeli, C.; Malyn-Smith, J.; Voogt, J.; Zagami, J. (2016). "Arguing for computer science in the school curriculum". Journal of Educational Technology & Society. 19 (3): 38–46.
  2. ^ info@compsci.ca. "Download Turing & RTP (Ready to Program)". compsci.ca. Retrieved 2018-08-21.
  3. ^ "Holt Software Associates". January 2008. Archived from the original on 2010-04-05. Retrieved 2010-04-10.
  4. ^ a b "Holt Software Associates (old)". 2007-11-25. Archived from the original on 2010-04-17. Retrieved 2010-04-10.
  5. ^ "Download Turing 4.1.1". compsci.ca Blog. 2007-11-28. Retrieved 2009-01-10.
  6. ^ Hume, Tristan. "Open Turing". Retrieved 6 May 2012.
  7. ^ Cordy, James. "Turing+ 6.1". Retrieved 11 December 2020.
  8. ^ Mancoridis, S; Holt, R C; Penny, D A (February 1993). "A Conceptual Framework for Software Development". ACM Annual Computer Science Conference (SIGCSE, Indianapolis): 74–80. ISSN 1041-4517. OCLC 194807519. BL Shelfmark 0578.623000.
  9. ^ Holt, RC (1992). Turing reference manual (3rd. ed.). Toronto: Holt Software Associates. ISBN 978-0-921598-15-2. OCLC 71476276.

Further reading[edit]

External links[edit]