skip to main content
article
Free access

Abstraction mechanisms in CLU

Published: 01 August 1977 Publication History

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

[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]
DeRemer, F., and Kron, H. Programming-in-the-large versus programming-in-the-small. Proc. Int. Conf. on Reliable Software, SIGPLAN Notices 10, 6 (June 1975), 114-121.]]
[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]
Knuth, D. The Art of Computer Programming, Vol. 3: Sorting and Searching. Addison Wesley, Reading, Mass., 1973. 576]]
[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]
Liskov, B .H., and Zilles, S .N. Programming with abstract data types. Proc. ACM SIGPLAN Conf. on Very High Level Languages, SIGPLAN Notices 9, 4 (April 1974), 50-59.]]
[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]
McCarthy, J., et al. LISP 1.5 Programmer's Manual. M.I.T. Press, Cambridge, Mass., 1962.]]
[16]
Morris, J.H. Protection in programming languages. Comm. ACM 16, 1 (Jan. 1973), 15-21.]]
[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]
Wirth, N. Program development by stepwise refinement. Comm. ACM 14, 4 (1971), 221-227.]]
[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

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Communications of the ACM
Communications of the ACM  Volume 20, Issue 8
Aug. 1977
74 pages
ISSN:0001-0782
EISSN:1557-7317
DOI:10.1145/359763
Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 01 August 1977
Published in CACM Volume 20, Issue 8

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. control abstractions
  2. data abstractions
  3. data types
  4. programming languages
  5. programming methodology
  6. separate compilation

Qualifiers

  • Article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)274
  • Downloads (Last 6 weeks)44
Reflects downloads up to 03 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media