A history of CLU

The idea of a data abstraction has had a significant impact on the development of programming languages and on programming methodology. CLU was the first implemented programming language to provide direct linguistic support for data abstraction. This paper provides a history of data abstraction and CLU. CLU contains a number of other interesting and influential features, including its exception handling mechanism, its iterators, and its parameterized types.

[1]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[2]  V. A. Berzins,et al.  Abstract model specifications for data abstractions , 1979 .

[3]  Douglas T. Ross,et al.  Uniform Referents: An Essential Property for a Software Engineering Language , 1970 .

[4]  Barbara Liskov,et al.  Aspects Of Implementing CLU , 1978, ACM Annual Conference.

[5]  Barbara Liskov,et al.  Guardians and Actions: Linguistic Support for Robust, Distributed Programs , 1983, TOPL.

[6]  Mary Shaw,et al.  Global variable considered harmful , 1973, SIGP.

[7]  John B. Goodenough,et al.  Structured exception handling , 1975, POPL '75.

[8]  James H. Morris,et al.  Types are not sets , 1973, POPL.

[9]  Jean Bacon,et al.  Distributed Computing with a Processor Bank , 1989, Process in Distributed Operating Systems and Distributed Systems Management.

[10]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[11]  Mary Shaw,et al.  An introduction to the construction and verification of Alphard programs , 1976, ICSE '76.

[12]  Barbara Liskov,et al.  Distributed programming in Argus , 1988, CACM.

[13]  Barbara Liskov,et al.  Report of session on structured programming , 1973 .

[14]  Stephen N. Zilles Procedural encapsulation: A linguistic protection technique , 1973 .

[15]  David Clark The structuring of systems using upcalls , 1985, SOSP 1985.

[16]  Mary Shaw,et al.  Abstraction and verification in Alphard : iteration and generators , 1981 .

[17]  Jack B. Dennis,et al.  First version of a data flow procedure language , 1974, Symposium on Programming.

[18]  Daniel H. Craft,et al.  Resource management in a decentralized system , 1983, SOSP '83.

[19]  John V. Guttag,et al.  Notes on Type Abstraction (Version 2) , 1980, IEEE Transactions on Software Engineering.

[20]  Mary Shaw,et al.  Abstraction and verification in Alphard: Defining and specifying iteration and generators , 1977 .

[21]  Jean Bacon,et al.  Distributed computing with RPC: the Cambridge approach , 1987 .

[22]  David Lorge Parnas,et al.  Information Distribution Aspects of Design Methodology , 1971, IFIP Congress.

[23]  R. M. McKeag Programming languages for operating systems. , 1973 .

[24]  J. C. Heliard,et al.  The two-level approach to data definition and space management in the LIS system implementation language , 1973 .

[25]  Craig Schaffert,et al.  CLU Reference Manual , 1984, Lecture Notes in Computer Science.

[26]  Barbara Liskov,et al.  Abstraction and Specification in Program Development , 1986 .

[27]  R. Scheifler A DENOTATIONAL SEMANTICS OF CLU , 1978 .

[28]  Alan Snyder,et al.  Exception Handling in CLU , 1979, IEEE Transactions on Software Engineering.

[29]  Maurice Herlihy,et al.  A Value Transmission Method for Abstract Data Types , 1982, TOPL.

[30]  Barbara Liskov,et al.  A design methodology for reliable software systems , 1972, AFIPS '72 (Fall, part I).

[31]  James H. Morris Protection in programming languages , 1973, CACM.

[32]  John V. Guttag Abstract data types and the development of data structures , 1976, SIGMOD 1976.

[33]  Edsger W. Dijkstra,et al.  The structure of the “THE”-multiprogramming system , 1968, CACM.

[34]  Barbara Liskov,et al.  Modular Program Construction Using Abstractions , 1979, Abstract Software Specifications.

[35]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

[36]  Jay Earley,et al.  Toward an understanding of data structures , 1971, SIGFIDET '70.

[37]  Edsger W. Dijkstra,et al.  Letters to the editor: go to statement considered harmful , 1968, CACM.

[38]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Information and Computation.

[39]  David Lorge Parnas,et al.  A technique for software module specification with examples , 1972, CACM.

[40]  Roy Levin Program structures for exceptional condition handling , 1977 .

[41]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[42]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[43]  Craig Schaffert,et al.  Abstraction mechanisms in CLU , 1977, Commun. ACM.

[44]  R. Cooper Pilgrim: A Debugger for Distributed Systems , 1987, ICDCS.

[45]  Robin Milner,et al.  Definition of standard ML , 1990 .

[46]  Craig Chambers,et al.  Iterative type analysis and extended message splitting; optimizing dynamically-typed object-oriented programs , 1990, PLDI '90.

[47]  Stephen J. Garland,et al.  Debugging Larch Shared Language Specifications , 1990, IEEE Trans. Software Eng..

[48]  Robert Scheifler,et al.  An analysis of inline substitution for a structured programming language , 1977, CACM.

[49]  John V. Guttag,et al.  The specification and application to programming of abstract data types. , 1975 .

[50]  Butler W. Lampson,et al.  On the transfer of control between contexts , 1974, Symposium on Programming.