Turing Plus(ID:1373/tur008)


Systems programming language, a concurrent descendant of Turing.

Available from Holt Software Assocs, Toronto.

From the documentation
"TURING PLUS extends TURING with concurrency, exception
handling, conditional compilation, generalized input/output, and a set of
dirty tricks for accessing details of the underlying implementation. With
these tirty tricks, TURING PLUS strives to be as flexible as C for systems
programming, while retaining security for its core language features.
TURING PLUS is an alternative to languages like C, Modula 2 and Ada."

and

"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., > 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."



People:
Related languages
Turing => Turing Plus   Evolution of
Turing Plus => Object-Oriented Turing   Replacement for

References:
  • Holt, R.C. & Cordy, J.R. "The Turing Plus Report", CSRI, U Toronto, Feb 1987. view details
  • Holt, R.C. "Device Management in TURING PLUS" CSRI Tech Report July 1987 view details Abstract: TURING PLUS is a general purpose programming language
    that is well suited to systems applications such as operating systems,
    network controllers and embedded software. This note briefly explains
    how device management is efficiently handled in TURING PLUS using a
    specialize version of monitors.
  • Holt, R. CDevice management in Turing Plus. Operating System Review 22: 1988 January, pp33-41 view details
  • S. Perelgut and James R. Cordy "Turing Plus: a comparison with C and Pascal" pp137-143 view details Abstract: It is desirable to do systems programming in a high-level language. C is attractive since it yields efficient machine code without placing many restrictions on the programmer. This lack of restrictions and language-supported checking, however, can make C code unreadable and unmaintainable. Pascal is attractive since it provides strong type checking in a relatively elegant package but Pascal compilers don't produce efficient code. Turing Plus offers the advantages of both these languages, including efficient machine code and strong type checking. It also has a number of other features that make it a very attractive alternative. For example, Turing Plus offers controlled access to machine-dependencies, type checked separate compilation, linkage to external routines, language-specified concurrency and exception handling. Portable compilers with replaceable code generators (allowing easy access to cross-compilation) are available and a Turing Plus to C translator is under construction to allow fast portability to all systems supporting C compilers.

    External link: Online copy Extract: Introduction
    INTRODUCTION
    Turing Plus was developed to add features for developing systems
    software to the Turing programming language . The design goals for
    Turing Plus include convenient features, suitability for small,
    fast, portable compilers that are self-compiling and high-quality
    code . These design goals are similar to those of the C and Pascal
    programming languages . Turing Plus diverges from C and Pascal,
    however, by enforcing a programming discipline that improves
    reliability and decreases maintenance costs . One example of Turing
    Plus' programming discipline is the way in which strict visibility
    rules control interaction among modules.

    Turing Plus extends the standard language features of C and Pascal
    with absolute address variables, type converters, checked separate
    compilation, concurrency with monitors to protect shared data and
    exception handling . It allows for optional runtime checks of case
    selectors and subscripts, pointer de-referencing, potential
    aliasing, user-specified assert and invariant checks and
    mathematical violations such as division by zero . When checking is
    selected, Turing Plus also makes available the line number and file
    name to ensure that error messages are as informative as possible.
    A pluggable code generator is now available for 68000's (based on
    the SUN Microsystems workstation and ISI multiprocessor workstation)
    and a VAX code generator is under development. There is also a
    Turing Plus to C translator under development to allow fast
    portability to systems already supporting a C compiler. Extract: Evolution of Turing Plus
    Evolution of Turing Plus
    Turing Plus should be seen on a developmental continuum extending
    from Pascal through Concurrent Euclid and Turing to Turing Plus.
    Concurrent Euclid was developed at the University of Toronto in 1980
    to provide a language with concurrency for operating system
    development . Turing was developed in 1983 as a new teaching language
    to fill the void perceived during the University of Toronto's switch
    from batch to interactive programming environments for teaching
    computer science.
    Concurrent Euclid and then Turing improved on Pascal with : explicit
    control of name visibility (i .e . importing and exporting identifiers
    across closed scopes such as modules and procedures), partitioning
    of pointers into distinct collections, modules for data abstraction,
    generalization of Pascal constants to allow values to be calculated
    at run-time, machine dependent features to allow immediate access to
    underlying hardware, assert statements, concurrent processes and
    monitors to provide data abstraction and limit access to a single
    active process within a monitor's scope at any time.
    Turing provides all of Pascal's features and most of the Concurrent
    Euclid extensions except for concurrency . Turing improves on C,
    Pascal and Concurrent Euclid by adding convenient input/output,
    uninitialized variable checking, type-safe variant records, checked
    separate compilation, dynamic arrays, parametric procedures, and
    dynamic arrays.
    Turing Plus extends Turing by adding dynamic concurrent processes,
    monitors with immediate and deferred condition queues, inline
    assembly code, type conversion, convenient access to underlying
    hardware, and exception handling . Thus, Turing Plus has the
    convenience and efficiency of Turing with a full range of systems
    features.
          in SIGPLAN Notices 23(01) January 1988 view details
  • Brinch Hansen, Per "Monitors and concurrent Pascal: a personal history" pp1-35 view details
          in [ACM SIGPLAN] SIGPLAN Notices 28(03) March 1993 The second ACM SIGPLAN conference on History of programming languages (HOPL II) view details