|
ABSTRACT
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 use of data and control abstractions. This paper provides an introduction to the abstraction mechanisms in CLU. By means of programming examples, the utility of the three kinds of abstractions in program construction is illustrated, and it is shown how CLU programs may be written to use and implement abstractions. The CLU library, which permits incremental program development with complete type checking performed at compile time, is also discussed.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
Allen, F.E., and Cocke, J. A catalogue of optimizing transformations. Rep. RC 3548. IBM Thomas J. Watson Res. Ctr., Yorktown Heights, N.Y., 1971.
|
| |
2
|
Allen, F.E. A program data flow analysis procedure. Rep. RC 5278, IBM Thomas J. Watson Res. Ctr., Yorktown Heights, N.Y., 1975.
|
| |
3
|
Atkinson, R.R. Optimization techniques for a structured programming language. S.M. Th., Dept. of Electr. Eng. and Comptr. Sci., M.I.T., Cambridge, Mass., June 1976.
|
| |
4
|
Dahl, O.J., Myhrhaug, B., and Nygaard, K. The SIMULA 67 common base language. Pub. S-22, Norwegian Comptng. Ctr., Oslo, 1970.
|
 |
5
|
|
| |
6
|
Dijkstra, E.W. Notes on structured programming. Structured Programming, A .P.I.C. Studies in Data Processing No. 8, Academic Press, New York, 1972, pp. 1-81.
|
| |
7
|
Gunag, J.V., Horowitz, E., and Mussel D.R. Abstract data types and software validation. Rep ISI/RR-76-48, Inform. Sci. Inst., U. of Southern California, Marina del Rey, Calif., Aug. 1976.
|
| |
8
|
Hoare, C.A.R. Proof of correctness of data representations. Acta Informatica 4 (1972), 271-281.
|
| |
9
|
|
| |
10
|
Laboratory for Computer Science Progress Report 1974-1975. Comput. Structures Group. Rep. PR-XII, Lab. for Comptr. Sci., M.I .T. To be published.
|
| |
11
|
Lampson, B.W. Protection. Proc. Fifth Annual Princeton Conf. on Inform. Sci. and Syst., Princeton U., Princeton, N.J., 1971, pp. 437-443.
|
 |
12
|
|
| |
13
|
Liskov, B.H., and Zilles, S.N. Specification techniques for data abstractions. IEEE Trans. Software Eng., SE-1 (1975), 7-19.
|
| |
14
|
Liskov, B.H., and Berzins, V. An appraisal of program specifications. Comput. Structures Group Memo 141, Lab. for Comptr. Sci., M.I.T., Cambridge, Mass., July 1976.
|
| |
15
|
|
 |
16
|
|
| |
17
|
Parnas, D.L. Information distribution aspects of design methodology. Information Processing 71, Vol. 1, North-Holland Pub. Co., Amsterdam, 1972, pp. 339-344.
|
| |
18
|
Scheifler, R.W. An analysis of inline substitution for the CLU programming language. Comput. Structures Group Memo 139, Lab. for Comptr. Sci., M.I.T., Cambridge, Mass., June 1976.
|
| |
19
|
Spitzen, J., and Wegbreit, B. The verification and synthesis of data structures. Acta Informatica 4 (1975), 127-144.
|
| |
20
|
Standish, T.A. Data structures: an axiomatic approach. Rep. 2639, Bolt, Beranek and Newman, Cambridge, Mass., 1973.
|
| |
21
|
Thomas, J.W. Module interconnection in programming systems supporting abstraction. Rep, CS-16, Comptr. Sci. Prog., Brown U., Providence, R. I., 1976.
|
 |
22
|
|
| |
23
|
Wirth, N. The programming language PASCAL. Acta Informatica 1 (1971), 35-63.
|
| |
24
|
Wulf, W.A., London, R., and Shaw, M. An introduction to the construction and verification of Alphard programs. IEEE Trans. Software Eng. SE-2 (1976), 253-264.
|
CITED BY 249
|
|
|
|
|
|
|
|
John Gannon , Paul McMullin , Richard Hamlet, Data Abstraction, Implementation, Specification, and Testing, ACM Transactions on Programming Languages and Systems (TOPLAS), v.3 n.3, p.211-223, July 1981
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Olaf Bachmann , Hans Schönemann , Simon Gray, A proposal for syntactic data integration math protocols, Proceedings of the second international symposium on Parallel symbolic computation, p.165-175, July 20-22, 1997, Maui, Hawaii, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
William Weihl , Barbara Liskov, Specification and implementation of resilient, atomic data types, Proceedings of the 1983 ACM SIGPLAN symposium on Programming language issues in software systems, p.53-64, June 27-29, 1983, San Francisco, California, United States
|
|
|
B. Liskov , A. Adya , M. Castro , S. Ghemawat , R. Gruber , U. Maheshwari , A. C. Myers , M. Day , L. Shrira, Safe and efficient sharing of persistent objects in Thor, ACM SIGMOD Record, v.25 n.2, p.318-329, June 1996
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Alan Demers , James Donahue , Glenn Skinner, Data types as values: polymorphism, type-checking, encapsulation, Proceedings of the 5th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, p.23-30, January 23-25, 1978, Tucson, Arizona
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Fred J. Pollack , George W. Cox , Dan W. Hammerstrom , Kevin C. Kahn , Konrad K. Lai , Justin R. Rattner, Supporting ada memory management in the iAPX-432, ACM SIGARCH Computer Architecture News, v.10 n.2, p.117-131, March 1982
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Edward D. Lazowska , Henry M. Levy , Guy T. Almes , Michael J. Fischer , Robert J. Fowler , Stephen C. Vestal, The architecture of the Eden system, ACM SIGOPS Operating Systems Review, v.15 n.5, p.148-159, December 1981
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Russell R. Atkinson , Barbara H. Liskov , Robert W. Scheifler, Aspects Of Implementing CLU, Proceedings of the 1978 annual conference, p.123-129, December 04-06, 1978, Washington, D.C., United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
John Guttag , James Horning , John Williams, FP with data abstraction and strong typing, Proceedings of the 1981 conference on Functional programming languages and computer architecture, p.11-24, October 18-22, 1981, Portsmouth, New Hampshire, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R. M. Burstall , D. B. MacQueen , D. T. Sannella, HOPE: An experimental applicative language, Proceedings of the 1980 ACM conference on LISP and functional programming, p.136-143, August 25-27, 1980, Stanford University, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Thomas E. Cheatham, Jr. , Glenn H. Holloway , Judy A. Townley, Program refinement by transformation, Proceedings of the 5th international conference on Software engineering, p.430-437, March 09-12, 1981, San Diego, California, United States
|
|
|
Mary Shaw , Gary Feldman , Robert Fitzgerald , Paul Hilfinger , Izumi Kimura , Ralph L. London , Jonathan Rosenberg , Wm. A. Wulf, Validating The Utility Of Abstraction Techniques, Proceedings of the 1978 annual conference, p.106-110, December 04-06, 1978, Washington, D.C., United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
S. Keller , J. Perkins , K. O'Leary, Layering and multiple views of data abstraction in Ada: techniques and experiences, Proceedings of the conference on Tri-Ada '89: Ada technology in context: application, development, and deployment, p.625-640, January 1989, Pittsburgh, Pennsylvania, United States
|
|
|
|
|
|
|
|
|
P. M. Cashin , M. L. Joliat , R. F. Kamel , D. M. Lasker, Experience with a modular typed language: PROTEL, Proceedings of the 5th international conference on Software engineering, p.136-143, March 09-12, 1981, San Diego, California, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
R. B. Kieburtz , W. Barabash , C. R. Hill, A type-checking program linkage system for pascal, Proceedings of the 3rd international conference on Software engineering, p.23-28, May 10-12, 1978, Atlanta, Georgia, United States
|
|
|
|
|
|
William E. Riddle , Jack C. Wileden , John H. Sayler , Alan R. Segal , Allan M. Stavely, Behavior modelling during software design, Proceedings of the 3rd international conference on Software engineering, p.13-22, May 10-12, 1978, Atlanta, Georgia, United States
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Bent Bruun Kristensen , Ole Lehrmann Madsen , Birger Møller-Pedersen , Kristen Nygaard, Abstraction mechanisms in the BETA programming language, Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages, p.285-298, January 24-26, 1983, Austin, Texas
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Douglas Gregor , Jaakko Järvi , Mayuresh Kulkarni , Andrew Lumsdaine , David Musser , Sibylle Schupp, Generic programming and high-performance libraries, International Journal of Parallel Programming, v.33 n.2, p.145-164, June 2005
|
|
|
|
|
|
|
|
|
|
|
|
Gary T. Leavens , Jean-Raymond Abrial , Don Batory , Michael Butler , Alessandro Coglio , Kathi Fisler , Eric Hehner , Cliff Jones , Dale Miller , Simon Peyton-Jones , Murali Sitaraman , Douglas R. Smith , Aaron Stump, Roadmap for enhanced languages and methods to aid verification, Proceedings of the 5th international conference on Generative programming and component engineering, October 22-26, 2006, Portland, Oregon, USA
|
|
|
Anya Helene Bagge , Valentin David , Magne Haveraaen , Karl Trygve Kalleberg, Stayin' alert:: moulding failure and exceptions to your needs, Proceedings of the 5th international conference on Generative programming and component engineering, October 22-26, 2006, Portland, Oregon, USA
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Andrew P. Black , Norman C. Hutchinson , Eric Jul , Henry M. Levy, The development of the Emerald programming language, Proceedings of the third ACM SIGPLAN conference on History of programming languages, p.11-1-11-51, June 09-10, 2007, San Diego, California
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Jean D. Ichbiah , Bernd Krieg-Brueckner , Brian A. Wichmann , John G. P. Barnes , Olivier Roubine , Jean-Claude Heliard, Rationale for the design of the Ada programming language, ACM SIGPLAN Notices, v.14 n.6b, p.1-261, June 1979
|
|
|
|
|
|
|
|
|
|
|
|
William T. Overman , Stephen D. Crocker , Vittal Kini, A multiprocessor description language, Proceedings of the May 4-7, 1981, national computer conference, May 04-07, 1981, Chicago, Illinois
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
E. Levinson , L. S. Levy , J. B. Salisbury, CARL: experience of an application using clusters, Proceedings of the May 4-7, 1981, national computer conference, May 04-07, 1981, Chicago, Illinois
|
|
|
Nola Donato , Robert Rocchetti , Janet Tom, A prototyping environment for real-time graphics, Proceedings of the July 9-12, 1984, national computer conference and exposition, July 09-12, 1984, Las Vegas, Nevada
|
|
|
|
|
|
|
|
|
|
|
|
|
|