Gypsy: A language for specification and implementation of verifiable programs
- Allen L. Ambler,
- Donald I. Good,
- James C. Browne,
- Wilhelm F. Burger,
- Richard M. Cohen,
- Charles G. Hoch,
- Robert E. Wells
An introduction to the Gypsy programming and specification language is given. Gypsy is a high-level programming language with facilities for general programming and also for systems programming that is oriented toward communications processing. This ...
Notes on the design of Euclid
Euclid is a language for writing system programs that are to be verified. We believe that verification and reliability are closely related, because if it is hard to reason about programs using a language feature, it will be difficult to write programs ...
Efficient implementation and optimization of run-time checking in PASCAL
Complete run-time checking of programs is an essential tool for the development of reliable software. A number of features of the programming language PASCAL (arrays, subranges, pointers, record variants (discriminated type unions), formal procedures, ...
A study of protection in programming languages
The concept of “protection” in programming languages refers to the ability to express directly in the language the desired access control relationships for all objects defined in the language. The use of such mechanisms as data types, scope, parameter ...
Aspects of applicative programming for file systems (Preliminary Version)
This paper develops the implications of recent results in semantics for applicative programming. Applying suspended evaluation (call-by-need) to the arguments of file construction functions results in an implicit synchronization of computation and ...
Towards the ideal programming language
A programming language with good features and notation can help the programmer represent his abstractions in the programming language, and can also help someone else understand the original abstraction. There have been numerous proposals for better ...
Some extensions to algebraic specifications
Algebraic specifications of abstract data types are beginning to gain wide currency. In this paper we discuss an extension to this specification technique which allows the specification of procedures which alter their parameters, and various ways of ...
Restricted data types, specification and enforcement of invariant properties of variables
When defining a data type, it is often useful to specify restrictions on the permitted values of that type.
Pascal's subrange type declaration, a special case of this kind of constraint definition, has already proved itself to be quite useful. ...
Static determination of dynamic properties of generalized type unions
The classical programming languages such as PASCAL or ALGOL 68 do not provide full data type security. Run-time errors are not precluded on basic operations. Type safety necessitates a refinement of the data type notion which allows subtypes. The ...
Software reliability: The role of programmed exception handling
The paper discusses the basic concepts underlying the issue of software reliability, and argues that programmed exception handling is inappropriate for dealing with suspected software errors. Instead it is shown, using an example program, how exception ...
Exception handling in PL/I
The PL/I language's facilities for handling exceptional conditions are analyzed. The description is based on the new PL/I standard. Special attention is given to fine points which are not well known. The analysis is generally critical. It emphasizes ...
An experimental investigation of the effect of program structure on program understanding
A within-subjects experimental design was used to test the effect of two variables on program understanding. The independent variables were complexity of control flow and paragraphing of the source code. Understanding was measured by having the subjects ...
Language features for process interaction
Languages for parallel programming should meet four goals: expressiveness, data integrity, security, and verifiability. This paper presents a set of language features for describing processes and process interaction, gives examples of their use, and ...
Process structuring, synchronization, and recovery using atomic actions
This paper explores the notion of an atomic action as a method of process structuring. This notion, first introduced explicitly by Eswaren et al [6] in the context of data base systems, reduces the problem of coping with many processes to that of coping ...
Early experience with Mesa
The experiences of Mesa's first users—primarily its implementers—are discussed, and some implications for Mesa and similar programming languages are suggested. The specific topics addressed are:
module structure and its use in defining abstractions,
...
Abstraction and verification in Alphard: Defining and specifying iteration and generators
The Alphard form provides the programmer with a great deal of control over the implementation of abstract data types. In this paper we extend the abstraction techniques from simple data representation and function definition to the iteration statement, ...
Abstraction mechanisms in CLU
CLU is a new programming language designed to support the use of abstractions in program construction. Work in programming methodology has led to the realization that three kinds of abstractions, procedural, control, and especially data abstractions, ...
An experimental evaluation of data types on programming reliability
The language in which programs are written can have a substantial effect on the reliability of the resulting programs. This paper discusses an experiment that compares the programming reliability of subjects using a statically-typed language and a “...
Towards a discipline of real-time programming
Programming is divided into three major categories with increasing complexity of reasoning in program validation: sequential programming, multi-programming, and real-time programming. By adhering to a strict programming discipline and by using a ...