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]  John B. Goodenough,et al.  Exception handling: issues and a proposed notation , 1975, CACM.

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

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

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

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

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

[7]  V. Stavridou,et al.  Abstraction and specification in program development , 1988 .

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

[9]  Michael D. Schroeder,et al.  Proceeding of ACM SIGPLAN - SIGOPS interface meeting on Programming languages - operating systems , 1973 .

[10]  Edsger W. Dijkstra,et al.  Go To Statement Considered Harmful , 2022, Software Pioneers.

[11]  Ben Wegbreit,et al.  The treatment of data types in EL1 , 1974, CACM.

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

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

[14]  Mary Shaw Alphard: Form and Content , 1981, Springer New York.

[15]  John V. Guttag,et al.  Notes on Type Abstraction , 1978, Program Construction.

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

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

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

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

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

[21]  John V. Guttag,et al.  Abstract data types and the development of data structures , 1976, Software Pioneers.

[22]  Stephen N. Zilles,et al.  Programming with abstract data types , 1974, SIGPLAN Symposium on Very High Level Languages.

[23]  Barbara Liskov The design of the Venus operating system , 1972, CACM.

[24]  David D. Clark,et al.  The structuring of systems using upcalls , 1985, SOSP '85.

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

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

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

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

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

[30]  Edsger W. Dijkstra,et al.  Notes on structured programming , 1970 .

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

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

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

[34]  David R. Cheriton,et al.  Proceedings of the tenth ACM symposium on Operating systems principles , 1985, SIGCOMM 1985.

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

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

[37]  R. Tibshirani,et al.  An introduction to the bootstrap , 1993 .

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

[39]  Jieh Hsiang,et al.  SbReve2: A Term Rewriting Laboratory with (AC-) Unfailing Completion , 1989, RTA.

[40]  N. Falconer Structured Programming , 1973, Nature.

[41]  E. B. Moss ABSTRACT DATA TYPES IN STACK BASED LANGUAGES , 1978 .

[42]  Jacob Palme Protected program modules in simula 67 , 1973 .

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

[44]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPLSA '86.

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

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

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

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

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

[50]  G. K. Smelser The structure of the eye , 1961 .

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

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

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

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

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

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

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

[58]  Verzekeren Naar Sparen,et al.  Cambridge , 1969, Humphrey Burton: In My Own Time.

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

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

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

[62]  Edwin D. Mares,et al.  On S , 1994, Stud Logica.

[63]  M. Anand “1984” , 1962 .

[64]  Robert Balzer Dataless programming , 1967, AFIPS '67 (Fall).

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

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

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

[68]  David Gries,et al.  On Structured Programming , 1978 .

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