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
References: 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. 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 in [ACM SIGPLAN] SIGPLAN Notices 28(03) March 1993 The second ACM SIGPLAN conference on History of programming languages (HOPL II) view details |