Paragon: Novel uses of type hierarchies for data abstraction

* Multiple implementations of an abstract data type may be de qlared in a program. S e v e r a l imp lemen ta t i ons o f an a b s t r a c t d a t a t ype may be used s i m u l t a n e o u s l y in a program (one i m p l e m e n t a t i o n pe r v a r i a b l e ) . If several implementations of an abstract data type are used for different variables, t h o s e variables may i n t e r a c t . * A si__ng!e__im~.nt.a_ti.on may be written for several separaLe S/~_£i_ficati.ons, Automatic-Processing Goals * Static .t_ypa ..c.hecking of all variable declarations (object creations ) and procedure calls should be supported. * C_o..mp~le-time checkinq should ensure that al.l r_epXgsentation-selection decisions result in a program that can execute without run-time errors. Although many languages a r e d e s i g n e d to meet some of t h e s e g o a l s , no language known t o me can meet a l l o f theN. A f t e r a r ev i ew o f how o t h e r languages only paritally meet these goals, a description of Paragon i s g i v e n a l o n g wi th examples o f how a programmer can use Paragon t o a c h i e v e t h e s e g o a l s . The abstract data type specification goals are partially met by the object-oriented language d e s i g n s i n Simula [Dah168 ] and S m a l l t a l k [GoldbergS1, I n g a l l s 7 8 , I n g a l l s 8 l , Morgan81, Xerox81] , the T r a i t s a d d i t i o n s to Mesa [Curry82] and t h e F l a v o r s f a c i l i t y f o r L i s p [WeinrebS1] . An

[1]  Diane C. P. Smith,et al.  Database abstractions: aggregation and generalization , 1977, TODS.

[2]  James R. Low,et al.  Chess , 1975, SGAR.

[3]  Jacob Katzenelson Introduction to enhanced C (EC) , 1983, Softw. Pract. Exp..

[4]  James B. Morris,et al.  Abstract data types in the Model programming language , 1976, Conference on Data: Abstraction, Definition and Structure.

[5]  Jacob Katzenelson Higher level programming and data abstractions—a case study using enhanced C , 1983, Softw. Pract. Exp..

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

[7]  W. Wulf,et al.  Fundamental Structures of Computer Science , 1980 .

[8]  Burt M. Leavenworth,et al.  Abstract Design and Program Translator: New Tools for Software Design , 1983, IBM Syst. J..

[9]  Jean D. etc. Ichbiah Reference Manual for the ADA Programming Language , 1983 .

[10]  Thomas E. Cheatham,et al.  A System for Program Refinement , 1979, ICSE.

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

[12]  David A. Moon,et al.  The Lisp Machine manual , 1981, SGAR.

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

[14]  Daniel E. Lipkie,et al.  Traits: An approach to multiple-inheritance subclassing , 1982, COCS.

[15]  Daniel E. Lipkie,et al.  Traits: An approach to multiple-inheritance subclassing , 1982 .

[16]  John Mylopoulos,et al.  A language facility for designing database-intensive applications , 1980, TODS.

[17]  James B. Morris,et al.  Abstract data types in the Model programming language , 1976, SIGMOD 1976.

[18]  Daniel H. H. Ingalls,et al.  The Smalltalk-76 programming system design and implementation , 1978, POPL.

[19]  Edmond Schonberg,et al.  Programming by Refinement, as Exemplified by the SETL Representation Sublanguage , 1979, TOPL.

[20]  M. P. Herlihy TRANSMITTING ABSTRACT VALUES IN MESSAGES , 1980 .