One use of performance measurement techniques is in the study of operational characteristics of programs written in high-level programming languages. Information derived from such studies can be used to construct benchmark programs and synthetic workloads,<sup>1,2</sup>detect inefficiencies in programming language implementation, and suggest possible… (More)
Traditional compilers are usually sequential programs that serially process source programs through lexical analysis, syntax analysis, semantic analysis and code generation. The availability of multiprocessor computers has made it feasible to consider alternatives to this serial compilation process. The authors are currently engaged in a project to devise… (More)
The Software Hut (a small software house) is a course project designed for a graduate-level course in computer program engineering. This paper describes the Software Hut project and discusses the authors' experience using it in graduate courses at the University of Toronto. Suggestions for improvements in the project are given.
SP/k is a compatible subset of the PL/I language that has been designed for teaching programming. The features of the SP/k language were chosen to encourage structured problem solving by computers, to make the language easy to learn and use, to eliminate confusing and redundant constructs, and to make the language easy to compile. The resulting language is… (More)
This paper describes some simple programming language facilities for raising and handling exceptions, and demonstrates, with a number of examples, their effectiveness in a scientific computing environment. Only a small number of <italic>predefined</italic> exceptions need to be introduced into the language, but any number of <italic>user-defined</italic>… (More)
The design of the programming language Euclid requires that a compiler for the language produce legality assertions to aid in verification of programs written in the language. This paper analyzes the legality assertions that must be produced and discusses the impact that this requirement has on the implementation of the language.
Euclid is a programming language for writing verifiable system programs. A compiler for Euclid is being implemented by the authors. Since its definition , the language has evolved largely in response to problems discovered in the course of implementation. This paper gives a summary of language changes, the status of the implementation and some… (More)
In this paper we describe a collection of techniques for the design and implementation of concurrent compilers. We begin by describing a technique for dividing a source program into many <italic>streams</italic> so that each stream can be compiled concurrently. We discuss several compiler design issues unique to concurrent compilers including source program… (More)
The "software hut" is a course project that is used in conjunction with a graduate-level course in software engineering. The purpose of this project is to give the students some "real world" experience with the design and implementation of software. This paper describes the author's experience in using such a project and presents some suggestions on how a… (More)