mirror of
https://github.com/PDP-10/its.git
synced 2026-01-11 23:53:12 +00:00
294 lines
6.6 KiB
Plaintext
294 lines
6.6 KiB
Plaintext
.nd started 0
|
||
.nr do_refs 0
|
||
.if ~started
|
||
.nr do_refs 1
|
||
.en
|
||
.so clu/clupap.header
|
||
.so r/ref3.rmac
|
||
.if csg_memo==0
|
||
.ls 1
|
||
.if narrow
|
||
.new_font 1
|
||
.ef
|
||
.new_font 3
|
||
.en
|
||
.nf c
|
||
.vp 2i
|
||
Abstraction Mechanisms in CLU
|
||
.if narrow
|
||
.new_font 0
|
||
.ef
|
||
.new_font 1
|
||
.en
|
||
.sp .5i
|
||
Barbara Liskov
|
||
Alan Snyder
|
||
Russell Atkinson
|
||
Craig Schaffert
|
||
.sp .3i
|
||
Laboratory for Computer Science
|
||
Massachusetts Institute of Technology
|
||
545 Technology Square
|
||
Cambridge, MA 02139
|
||
.sp 2
|
||
.if ~narrow
|
||
.vp 8.5i
|
||
.en
|
||
.nf l
|
||
.fi
|
||
.new_font 0
|
||
This research was supported in part by the Advanced Research
|
||
Projects Agency of the Department of Defense, monitored by the
|
||
Office of Naval Research under contract N00014-75-C-0661, and
|
||
in part by the National Science Foundation under grant DCR74-21892.
|
||
.ls
|
||
.end
|
||
.if csg_memo>0
|
||
.ls 1
|
||
.nf c
|
||
.new_font 3
|
||
Massachusetts Institute of Technology
|
||
Laboratory for Computer Science
|
||
.new_font 0
|
||
(formerly Project MAC)
|
||
.sp 1.25i
|
||
Computation Structures Group Memo csg_memo-1
|
||
.sp 1.25i
|
||
.new_font 4
|
||
Abstraction Mechanisms in CLU
|
||
.new_font 1
|
||
.sp
|
||
by
|
||
.sp
|
||
Barbara Liskov
|
||
Alan Snyder
|
||
Russell Atkinson
|
||
Craig Schaffert
|
||
.new_font 0
|
||
.nf l
|
||
.vp 8.25i
|
||
.fi
|
||
.new_font 0
|
||
This research was supported in part by the Advanced Research
|
||
Projects Agency of the Department of Defense, monitored by the
|
||
Office of Naval Research under contract N00014-75-C-0661, and
|
||
in part by the National Science Foundation under grant DCR74-21892.
|
||
.nf c
|
||
.sp .5i
|
||
January 1977
|
||
.nf l
|
||
.fi
|
||
.ls
|
||
.end
|
||
.
|
||
.
|
||
.if narrow
|
||
.sp 2
|
||
.new_font 1
|
||
.ll 7i
|
||
.ef
|
||
.bp
|
||
.rs
|
||
.vp 3i
|
||
.new_font 3
|
||
.en
|
||
ABSTRACT
|
||
.new_font 0
|
||
.sp
|
||
.ns
|
||
.para
|
||
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.
|
||
.para
|
||
This paper provides an introduction to the abstraction mechanisms
|
||
in CLU.
|
||
By means of programming examples, we illustrate the utility of
|
||
the three kinds of abstractions in program construction
|
||
and show how CLU programs may be written to use
|
||
and implement abstractions.
|
||
We also discuss the CLU library, which permits
|
||
incremental program development with complete
|
||
type-checking performed at compile-time.
|
||
.sp
|
||
.fi l
|
||
Key words and phrases: programming languages, data types,
|
||
data abstractions, control abstractions, programming
|
||
methodology, separate compilation.
|
||
.sp
|
||
CR categories: 4.0, 4.12, 4.20, 4.22.
|
||
.br
|
||
.fi b
|
||
.if narrow
|
||
.ll
|
||
.en
|
||
.
|
||
.ref All71
|
||
Allen, F. E. and Cocke, J.
|
||
A catalogue of optimizing transformations.
|
||
Rep. RC 3548,
|
||
IBM Thomas J. Watson Research Center,
|
||
Yorktown Heights, N.@Y., 1971.
|
||
.em
|
||
.ref All75
|
||
Allen, F. E.
|
||
A program data flow analysis procedure.
|
||
Rep. RC 5278,
|
||
IBM Thomas J. Watson Research Center,
|
||
Yorktown Heights, N.@Y., 1975.
|
||
.em
|
||
.ref Atk76
|
||
Atkinson, R. R.
|
||
Optimization techniques for a structured programming language.
|
||
S.M. Thesis,
|
||
Dept. of Electrical Engineering and Computer Science,
|
||
M.@I.@T., Cambridge, Mass., June 1976.
|
||
.em
|
||
.ref Dah70
|
||
Dahl, O. J., Myhrhaug, B., and Nygaard, K.
|
||
The SIMULA 67 common base language.
|
||
Publication S-22, Norwegian Computing Center, Oslo, 1970.
|
||
.em
|
||
.ref DK75
|
||
DeRemer, F. and Kron, H.
|
||
Programming-in-the-large versus programming-in-the-small.
|
||
2Proceedings of International Conference on Reliable Software*,
|
||
2SIGPLAN Notices 10*, 6 (June 1975), 114-121.
|
||
.em
|
||
.ref Dij72
|
||
Dijkstra, E. W.
|
||
Notes on structured programming.
|
||
2Structured Programming,
|
||
A.P.I.C. Studies in Data Processing No. 8*,
|
||
Academic Press, New York 1972, 1-81.
|
||
.em
|
||
.ref Guttag
|
||
Guttag, J. V., Horowitz, E., and Musser, D. R.
|
||
Abstract data types and software validation.
|
||
Rep. ISI/RR-76-48, Information Sciences Institute,
|
||
University of Southern California, Marina del Rey,
|
||
Calif., August 1976.
|
||
.em
|
||
.ref Hoare72
|
||
Hoare, C. A. R.
|
||
Proof of correctness of data representations.
|
||
2Acta Informatica*, 4 (1972), 271-281.
|
||
.em
|
||
.ref Knu73
|
||
Knuth, D.
|
||
2The Art of Computer Programming*, vol. 3.
|
||
Addison Wesley, Reading, Mass., 1973.
|
||
.em
|
||
.ref LCS75
|
||
2Laboratory for Computer Science Progress Report 1974-1975*,
|
||
Computation Structures Group.
|
||
Rep. PR-XII,
|
||
Laboratory for Computer Science, M.@I.@T.,
|
||
to be published.
|
||
.em
|
||
.ref Lam71
|
||
Lampson, B. W.
|
||
Protection.
|
||
Proc. Fifth Annual Princeton Conference on Information
|
||
Sciences and Systems, Princeton University, 1971, 437-443.
|
||
.em
|
||
.ref Lis74
|
||
Liskov, B. H. and Zilles, S. N.
|
||
Programming with abstract data types.
|
||
Proc. ACM SIGPLAN Conference on Very High Level Languages,
|
||
2SIGPLAN Notices 9*, 4 (April 1974), 50-59.
|
||
.em
|
||
.ref Lis75
|
||
Liskov, B. H. and Zilles, S. N.
|
||
Specification techniques for data abstractions.
|
||
2IEEE Trans. on Software Engineering*, 2SE-1*,
|
||
(1975), 7-19.
|
||
.em
|
||
.ref Lis76
|
||
Liskov, B. H. and Berzins, V.
|
||
An appraisal of program specifications.
|
||
Computation Structures Group Memo 141,
|
||
Laboratory for Computer Science,
|
||
M.@I.@T., Cambridge, Mass., July 1976.
|
||
.em
|
||
.ref McC62
|
||
McCarthy, J., et al.
|
||
2LISP 1.5 Programmer's Manual*, MIT Press, 1962.
|
||
.em
|
||
.ref Mor73
|
||
Morris, J. H.
|
||
Protection in programming languages.
|
||
2Comm. ACM 16*, 1 (Jan 1973), 15-21.
|
||
.em
|
||
.ref Mor74
|
||
Morris, J. H.
|
||
Toward more flexible type systems.
|
||
Proceedings of the Programming Symposium, Paris, April 9-11, 1974,
|
||
2Lecture Notes in Computer Science 19*, Springer-Verlag, New York,
|
||
377-384.
|
||
..
|
||
.ref Par71
|
||
Parnas, D. L.
|
||
Information distribution aspects of design methodology.
|
||
Proc. IFIP 1971.
|
||
.em
|
||
.ref Sch76
|
||
Scheifler, R. W.
|
||
An analysis of inline substitution for the CLU programming language.
|
||
Computation Structures Group Memo 139,
|
||
Laboratory for Computer Science,
|
||
M.@I.@T., Cambridge, Mass., June 1976.
|
||
.em
|
||
.ref Spitzen
|
||
Spitzen, J. and Wegbreit, B.
|
||
The verification and synthesis of data structures.
|
||
2Acta Informatica*, 4 (1975), 127-144.
|
||
.em
|
||
.ref Standish
|
||
Standish, T. A.
|
||
2Data structures: an axiomatic approach*.
|
||
Rep. 2639, Bolt Beranek and Newman, Cambridge,
|
||
Mass., 1973.
|
||
.em
|
||
.ref Thomas
|
||
Thomas, J. W.
|
||
Module interconnection in programming systems supporting
|
||
abstraction.
|
||
Rep. CS-16, Computer Science Program, Brown University,
|
||
Providence, R.@I., 1976.
|
||
.em
|
||
.ref Wir71a
|
||
Wirth, N.
|
||
Program development by stepwise refinement.
|
||
2Comm. ACM 14*, 4 (1971), 221-227.
|
||
.em
|
||
.ref Wir71b
|
||
Wirth, N.
|
||
The programming language PASCAL.
|
||
2Acta Informatica*, 1 (1971), 35-63.
|
||
.em
|
||
.ref Wul84
|
||
Wulf, W. A., London, R., and Shaw, M.
|
||
An introduction to the construction and verification
|
||
of Alphard programs.
|
||
2IEEE Transactions on Software Engineering SE-2*,
|
||
(1976), 253-264.
|
||
.em
|
||
.bp
|
||
.if do_refs
|
||
.insert_refs
|
||
.en
|
||
.if narrow
|
||
.rs
|
||
.sp 3i
|
||
.en
|