Dimensions of object-based language design

The design space of object-based languages is characterized in terms of objects, classes, inheritance, data abstraction, strong typing, concurrency, and persistence. Language classes (paradigms) associated with interesting subsets of these features are identified and language design issues for selected paradigms are examined. Orthogonal dimensions that span the object-oriented design space are related to non-orthogonal features of real languages. The self-referential application of object-oriented methodology to the development of object-based language paradigms is demonstrated. Delegation is defined as a generalization of inheritance and design alternatives such as non-strict, multiple, and abstract inheritance are considered. Actors and prototypes are presented as examples of classless (delegation based) languages. Processes are classified by their degree of internal concurrency. The potential inconsistency of object-oriented sharing and distributed autonomy is discussed, suggesting that compromises between sharing and autonomy will be necessary in designing strongly typed object-oriented distributed database languages.

[1]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

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

[3]  Peter Wegner,et al.  Viewing Ada from a process model perspective , 1985 .

[4]  Per Brinch Hansen,et al.  Distributed processes: a concurrent programming concept , 1978, CACM.

[5]  Peter Wegner,et al.  The Object-Oriented Classification Paradigm , 1987, Research Directions in Object-Oriented Programming.

[6]  Linda G. DeMichiel,et al.  The Common Lisp Object System: An Overview , 1987, ECOOP.

[7]  Philip A. Bernstein,et al.  Concurrency Control in Distributed Database Systems , 1986, CSUR.

[8]  Henry Lieberman,et al.  Using Prototypical Objects to Implement Shared Behavior in Object Oriented Systems , 1986, OOPSLA.

[9]  Rob Strom,et al.  A comparison of the object-oriented and process paradigms , 1986, OOPWORK '86.

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

[11]  Dave Thomas,et al.  An exemplar based Smalltalk , 1986, OOPSLA 1986.

[12]  Stanley B. Zdonik,et al.  Language and Methodology for Object-Oriented Database Environments , 1985, Data Types and Persistence.

[13]  Mario Tokoro,et al.  Orient84/K: an object-oriented concurrent programming language for knowledge representation , 1987 .

[14]  Robert E. Strom,et al.  NIL: An integrated language and system for distributed programming , 1983, ACM SIGPLAN Notices.

[15]  Niklaus Wirth,et al.  Programming in Modula-2 , 1985, Texts and Monographs in Computer Science.

[16]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPSLA 1986.

[17]  C. A. R. Hoare,et al.  Monitors: an operating system structuring concept , 1974, CACM.

[18]  William E. Weihl,et al.  SPECIFICATION AND IMPLEMENTATION OF ATOMIC DATA TYPES , 1984 .

[19]  Nancy A. Lynch,et al.  Introduction to the Theory of Nested Transactions , 1986, Theor. Comput. Sci..

[20]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.