Abstraction mechanisms in CLU

  title={Abstraction mechanisms in CLU},
  author={Barbara H. Liskov and Alan Snyder and Russell R. Atkinson and Craig Schaffert},
  journal={Communications of The ACM},
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—are useful in the programming process. Of these, only the procedural abstraction is supported well by conventional languages, through the procedure or subroutine. CLU provides, in addition to procedures, novel linguistic mechanisms that support the… 

Figures from this paper

Types in Programming Languages, Between Modelling, Abstraction, and Correctness - Extended Abstract

The central part of alanguage is made by the abstraction mechanisms it provides to model its application domain(s), all issues the language theorist may well group together in the type chapter of a language definition.

On the unification of data and program abstraction in Ada

It is suggested in the conclusion that the understanding of abstraction for object-oriented languages and of other language design, implementation, and environment issues will have progressed sufficiently by 1985 to warrant the design of a successor to Ada by the late 1980s.

Writing Larch interface language specifications

This paper gives an example of writing an interface specification following the two-tiered approach to writing specifications and discusses in detail issues involved in writing interface specifications and their interaction with their Shared Language components.

The distributed programming language SR—Mechanisms, design and implementation

An overview of the language mechanisms is given, some of the major design decisions are discussed and one implementation of SR is described.

Integrating library modules into Pascal programs

The system performs the symbolic linking of source language modules producing a single Pascal text ready for compilation; performing the link phase before compilation anticipates interface consistency checks, and suggests a possible improvement of program development systems.

Debugging programs that use macro‐oriented data abstractions

Enhanced C is a set‐oriented, extensible, C‐like language that uses data abstractions to define new types, called clusters, that are macro‐like devices that perform substitution on the typed syntax tree.

A survey of systems programming languages: Concepts and facilities

In this paper, systems programming languages are surveyed to find common characteristics and individual differences and limitations of a number of current languages, including Ada, Concurrent Pascal, CLU, Pascal‐Plus, Modula‐2, Mesa, Edison, PLZ/SYS and C.

Improving the structure of large Pascal programs

This paper describes an extension to Pascal in the form of an encapsulation mechanism aimed at improving the structure of large Pascal programs. It is based upon the module structure of Modula but

The Impact of Modelling and Abstraction Concerns on Modern Programming Languages

  • M. Shaw
  • Computer Science
    On Conceptual Modelling
  • 1982
This chapter traces the important ideas of modern programming languages to their roots in the problems and languages of the past decade and shows how these modern languages respond to contemporary problems in software development.

VLSI Simulation and Data Abstractions

  • J. KatzenelsonE. Weitz
  • Computer Science
    IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems
  • 1986
This paper compares three methods of implementingMultilevel simulation and concludes that the use of data abstractions offers structure, hierarchy and simplicity.

Programming with abstract data types

An approach which allows the set of built-in abstractions to be augmented when the need for a new data abstraction is discovered and is an outgrowth of work on designing a language for structured programming.

An introduction to the construction and verification of Alphard programs

This paper introduces Alphard by developing and verifying a data structure definition and a program that uses it and shows how each language construct contributes to the development of the abstraction and discusses the way the language design and the verification methodology were tailored to each other.

Abstraction and Verification in Alphard: Introduction to Language and Methodology

This paper attempts to capture the symbiotic influence of these two goals on the design of Alphard by interleaving the language description with the presentation of a proof technique and discussion of programming methodology.

Abstract data types and software validation

The major thrust of the paper is shown how the use of algebraic axiomatizations can simplify the process of proving the correctness of an implementation of an abstract data type.

Specification techniques for data abstractions

The role of formal specifications both in proofs of program correctness and in programming methodologies leading to programs which are correct by construction, is explained and some criteria are established for evaluating the practical potential of specification techniques.

Information Distribution Aspects of Design Methodology

The role of documentation in the design and implementation of complex systems is explored, resulting in suggestions in sharp contrast with current practice, and the thesis that such information "broadcasting is harmful, that it is helpful if most system information is hidden from most programmers, is supported.

The programming language PASCAL

  • J. Wakerly
  • Computer Science
    Microprocess. Microsystems
  • 1979

A program data flow analysis procedure

The global data relationships in a program can be exposed and codified by the static analysis methods described in this paper. A procedure is given which determines all the definitions which can

Programming-in-the-Large Versus Programming-in-the-Small

The activity of writing large programs is distinguished from that of writing small ones, which means systems consisting of many small programs (modules), usually written by different people.

A note on the for statement

This note discusses methods of defining the for statement in high level languages and suggests a proof rule intended to reflect the proper role of a for statement in computer programming. It