Concurrent Euclid (programming language)
Encyclopedia
Concurrent Euclid is a concurrent descendant of the Euclid programming language
designed by James Cordy
and Ric Holt
, then at the University of Toronto
, in 1980. ConEuc was designed for concurrent, high performance, highly reliable system software
, such as operating systems, compilers and embedded microprocessor systems. The TUNIS
operating system, a Unix
variant, was implemented entirely in Concurrent Euclid. ConEuc extends a core subset of Euclid with processes
and monitors
(as specified by C.A.R. Hoare) as well as language constructs needed for systems programming including separate compilation, variables at absolute addresses, type converters, long integers and other features.
ConEuc was implemented by a small (50k bytes), fast, portable compiler that was self-compiling and had replaceable code generators. High quality code generators for several computers, including the PDP-11
, VAX-11
, Motorola 68000
and Motorola 6809
were developed that produced code comparable to the best C
compilers. Concurrent Euclid programs that used concurrency could be run on a bare machine
(supported by a small assembly language kernel), or in simulated mode as an ordinary process running under an operating system.
The Turing programming language
is a direct descendant of Concurrent Euclid and its Turing Plus
variant eventually replaced ConEuc in most applications.
Euclid programming language
Euclid is an imperative programming language for writing verifiable programs. It was designed by Butler Lampson and associates at the Xerox PARC lab in the mid 1970s. The implementation was led by Ric Holt at the University of Toronto and James Cordy was the principal programmer for the first...
designed by James Cordy
James Cordy
James Reginald Cordy, born , is a Canadian computer scientist and educator who is a Professor in the School of Computing at Queen's University. As a researcher he is currently active in the fields of source code analysis and manipulation, software reverse and re-engineering, and pattern analysis...
and Ric Holt
Ric Holt
Richard C. "Ric" Holt is a computer science professor.Ric Holt was one of the original developers of the Turing programming language, , Euclid programming language, SP/k, and of the S/SL programming language...
, then at the University of Toronto
University of Toronto
The University of Toronto is a public research university in Toronto, Ontario, Canada, situated on the grounds that surround Queen's Park. It was founded by royal charter in 1827 as King's College, the first institution of higher learning in Upper Canada...
, in 1980. ConEuc was designed for concurrent, high performance, highly reliable system software
System software
System software is computer software designed to operate the computer hardware and to provide a platform for running application software.The most basic types of system software are:...
, such as operating systems, compilers and embedded microprocessor systems. The TUNIS
TUNIS
TUNIS was a Unix-like operating system, developed at the University of Toronto in the early 1980s. TUNIS was a portable operating system compatible with Unix V7, but with a completely redesigned kernel, written in Concurrent Euclid...
operating system, a Unix
Unix
Unix is a multitasking, multi-user computer operating system originally developed in 1969 by a group of AT&T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Brian Kernighan, Douglas McIlroy, and Joe Ossanna...
variant, was implemented entirely in Concurrent Euclid. ConEuc extends a core subset of Euclid with processes
Process (computing)
In computing, a process is an instance of a computer program that is being executed. It contains the program code and its current activity. Depending on the operating system , a process may be made up of multiple threads of execution that execute instructions concurrently.A computer program is a...
and monitors
Monitor (synchronization)
In concurrent programming, a monitor is an object or module intended to be used safely by more than one thread. The defining characteristic of a monitor is that its methods are executed with mutual exclusion. That is, at each point in time, at most one thread may be executing any of its methods...
(as specified by C.A.R. Hoare) as well as language constructs needed for systems programming including separate compilation, variables at absolute addresses, type converters, long integers and other features.
ConEuc was implemented by a small (50k bytes), fast, portable compiler that was self-compiling and had replaceable code generators. High quality code generators for several computers, including the PDP-11
PDP-11
The PDP-11 was a series of 16-bit minicomputers sold by Digital Equipment Corporation from 1970 into the 1990s, one of a succession of products in the PDP series. The PDP-11 replaced the PDP-8 in many real-time applications, although both product lines lived in parallel for more than 10 years...
, VAX-11
VAX-11
The VAX-11 was a family of minicomputers developed and manufactured by Digital Equipment Corporation using processors implementing the VAX instruction set architecture . The VAX-11/780 was the first VAX computer.- VAX-11/780 :...
, Motorola 68000
Motorola 68000
The Motorola 68000 is a 16/32-bit CISC microprocessor core designed and marketed by Freescale Semiconductor...
and Motorola 6809
Motorola 6809
The Motorola 6809 is an 8-bit microprocessor CPU from Motorola, designed by Terry Ritter and Joel Boney and introduced 1978...
were developed that produced code comparable to the best C
C (programming language)
C is a general-purpose computer programming language developed between 1969 and 1973 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system....
compilers. Concurrent Euclid programs that used concurrency could be run on a bare machine
Bare machine
Bare Machine, in computer parlance, means a computer without its operating system. Modern operating systems evolved through various stages, from elementary to the present day complex, highly sensitive real-time systems. In the very first stage of computing there was nothing like an Operating System...
(supported by a small assembly language kernel), or in simulated mode as an ordinary process running under an operating system.
The Turing programming language
Turing programming language
Turing is a Pascal-like programming language developed in 1982 by Ric Holt and James Cordy, then of University of Toronto, Canada. Turing is a descendant of Euclid, Pascal and SP/k that features a clean syntax and precise machine-independent semantics....
is a direct descendant of Concurrent Euclid and its Turing Plus
Turing Plus (programming language)
Turing+ is a concurrent systems programming language based the Turing programming language designed by James Cordy and Ric Holt, then at the University of Toronto, in 1987. Some, but not all, of the features of Turing+ were eventually subsumed into Object-Oriented Turing. Turing+ extended...
variant eventually replaced ConEuc in most applications.