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

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.

Adding classes to the C language: An exercise in language evolution

The class concept described here has benefitted from the experience gained through a year's use, and is now in use at close to a hundred installations.



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.

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.

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

Protection in programming languages

Linguistic mechanisms which can be used to protect one subprogram from another's malfunctioning are described and an attempt is made to distinguish between access limitation and authentication.

Notes on structured programming

The final author version and the galley proof are versions of the publication after peer review that features the final layout of the paper including the volume, issue and page numbers.

The art of computer programming: sorting and searching (volume 3)

Apparatus for supporting different nets for various sporting purposes including interengaging tubular rods which are arranged to interconnect and have ground engaging portions suitable to be useful