mendell@turing.toronto.edu (Mark Mendell) (01/12/89)
Availability of Turing Language Software and Documentation January 1989 The Turing programming language includes all of Pascal's features and more. Its extension, Turing Plus, includes concurrency, exception handling, and systems programming language features; it is an alternative to languages like C and Modula. The December 1988 issue of the Communications of the ACM features Turing and Turing Plus. These languages, which were developed at the University of Toronto, are in use in a number of universities and high schools in the US and Canada. FEATURES OF TURING AND TURING PLUS Besides the features of Pascal, Turing includes convenient strings and input/output, if statements with elsif clauses, case statements with otherwise clauses, loop statements with exits, modules with import and export, dynamic arrays and parameters, assertions (assert, pre, post and invari- ant), type transfer functions (such as string to real), random number generation, exponentiation, and run-time con- stants. Here is a complete Turing program that repeatedly picks a random number from 1 to 6 until it picks a 6: % Roll a die until you get 6. (This line is a comment) var die : int loop randint (die, 1, 6) exit when die = 6 put "This roll is ", die end loop put "Stopping with roll of 6" The syntax is easy to learn, especially for the beginner who might otherwise use Basic or Logo. Semicolons are not required. Declarations can appear wherever statements can appear. The features that Turing Plus adds to Turing include natural (unsigned) numbers, sized numbers (e.g., nat1 is a one-byte natural number), bit manipulation, subprograms as variables, characters and fixed length character strings, explicit type cheats (e.g., #c treats any value c as a nat1), indirection (e.g., int@(16#8ab36) is a peek or poke to hex location 8ab36), concurrency with dynamic forking and monitors, interrupt handling procedures, completely checked separate compilation, linkage to C and assembler, exception handlers, binary and random access input/output, assembly language inserts, and conditional compilation. For example, here is a complete Turing Plus program that runs two concurrent processes, one outputting Hi's and the other Ho's. % This program outputs Hi's and Ho's in an unknown order process speak (word : string) % Template for concurrent processes loop put word end loop end speak fork speak ("Hi") % Start concurrently outputting Hi Hi Hi fork speak ("Ho") % Start concurrently outputting Ho Ho Ho AVAILABLE TURING SOFTWARE An IBM PC compatible Turing demo disk is available free of charge to educators interested in teaching with Turing. Here is a chart of available Turing software. COMPUTER SOFTWARE ARRANGEMENT SYSTEM [See notes] IBM PC turing [1] Individual copy compatible or School licence Sun/3 OS 3.x turing [1], All three on one tape tplus [2], and tpc [3] Sun/3 OS 4.0 turing [1], All three on one tape tplus [2], and tpc [3] Sun/4 OS 4.0 turing [1], All three on one tape tplus [2], and tpc [3] Vax BSD 4.2 turing [1], All three on one tape tplus [2], and tpc [3] Notes: [1] "turing" is the Turing Student System (editor integrated with high speed pseudo code compiler). The IBM PC version for schools comes with documentation, electronic lessons for Turing and technical support. [2] "tplus" is the Turing Plus Student System (editor integrated with high speed pseudo code compiler). [3] "tpc" is the portable, self-compiling, production qual- ity Turing Plus compiler. This compiler generates 680x0 assembler, VAX assembler or C. The distribution includes the source for tpc (in Turing Plus), but not the source for turing or tplus. The distribution includes the source of MiniTunis, a highly simplified implementation of Unix in Turing Plus. MiniTunis is the basis of University of Toronto operating system course projects. "tpc" does not yet run on a PC. The PC software ("turing", the Student Turing System) is available to individuals for $69; this is a floppy with a book. The SUN and VAX software is currently available to schools, but not to commercial establishments. A university or col- lege instructor can apply for free trial usage of the Tur- ing and Turing Plus software for a school term. Licenses are on a yearly basis and the price depends on the configuration; contact Chris Stephenson (see below) for details. TURING SOFTWARE UNDER DEVELOPMENT A Macintosh version of Turing [1], supported by Apple, is currently in beta testing. A Unisys Icon version is in testing. A symbolic debugger is being tested in the lab. A high speed compiler for Turing Plus is under development. There is a Numerical Turing compiler developed by Tom Hull, running on SUN/3s, that supports dynamically selectable precision of real numbers. J.R. Cordy and colleagues at Queen's University, Kingston, Canada, are developing TuringTool, a visual system for management of Turing and Turing Plus programs. The Tunis implementation of secure Unix is written in Turing Plus. The Polyx implementation of multi-threaded Unix for shared memory multiprocessors is being written in Turing Plus. BOOKS AND REPORTS ON TURING Introduction to Computer Science using the Turing Program- ming Language. R.C. Holt and J.N.P. Hume. 1984, 404 pages (includes the Turing Report). This is an introductory textbook used in universities. Available from Prentice- Hall publishers (formerly Reston publishers). The Turing Programming Language: Design and Definition. R.C. Holt, P.A. Matthews, J.A. Rosselet, J.R. Cordy. 1988, 325 pages. This book explains the design goals of the language. The language's formal definition is given. Available from Prentice-Hall publishers. Turing Tutorial Guide. J.N.P. Hume. 1988, 213 pages. This is an introductory text used in high schools and col- leges. It is available to schools using the Turing Student System. Available from Holt Software Associates (contact Chris Stephenson, see below). Concurrent Programming using Turing Plus Language. R.C. Holt and D. Penny. These course notes introduce concurrent programming concepts and Turing Plus. When used with the "tplus" software, this provides an easy to learn introduc- tion to concurrent programming. 1988, 108 Pages. Available by special arrangement; contact Chris Stephenson, see below. The Concurrent Programming of Operating Systems Using the Turing Plus Language. R.C. Holt and D. Penny. This is a draft of a book that includes "Concurrent Programming Using Turing Plus" as well the description and source of Mini- Tunis, a highly simplified version of Unix written in Tur- ing Plus that runs under Unix. MiniTunis is the basis of student projects in the operating systems course at the University of Toronto. 1988, 400 pages. Available by special arrangement; contact Chris Stephenson, see below. The Turing Report and the Turing Plus Report. These techn- ical reports define the Turing and Turing Plus languages. Free to researchers. Contact Chris Stephenson, see below. The Turing Newsletter. This is a quarterly publication for educators. It contains ideas, examples, news and views on Turing of interest to the teacher. Chris Stephenson (see below) is editor. Distributed free to selected parties. MORE INFORMATION For distribution info: Ms. Chris Stephenson (distrib@turing.toronto.edu) (416) 978-6985 Holt Software Associates Inc. 203 College Street, Suite 305 Toronto, Canada M5T 1P9 For technical info: Mr. Mark Mendell (mendell@turing.toronto.edu) Computer Systems Research Institute Sandford Fleming Bldg, Rm 4101 University of Toronto Toronto, Canada M5S 1A4 For research info: Prof. Ric Holt (holt@turing.toronto.edu) Computer Systems Research Institute Sandford Fleming Bldg, Rm 2001 University of Toronto Toronto, Canada M5S 1A -- Mark Mendell Computer Systems Research Institute University of Toronto Usenet: {linus, ihnp4, allegra, decvax, floyd}!utcsri!mendell Internet: mendell@turing.toronto.edu mendell@turing.utoronto.ca -- Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU Plausible paths are { decvax | harvard | yale | bbn}!ima Please send responses to the originator of the message -- I cannot forward mail accidentally sent back to compilers. Meta-mail to ima!compilers-request