Solving the Inheritance Anomaly in Concurrent Object-Oriented Programming

The inheritance anomaly [23] refers to the serious difficulty in combining inheritance and concurrency in a simple and satisfactory way within a concurrent object-oriented language. The problem is closely connected with the need to impose synchronization constraints on the acceptance of a message by an object. In most concurrent object-oriented languages this synchronization is achieved by synchronization code controlling the acceptance of messages by objects. Synchronization code is often hard to inherit and tends to require extensive redefinitions. The solutions that have appeared so far in the literature to alleviate this problem seem to implicitly assume that better, more reusable, mechanisms are needed to create and structure synchronization code. The approach taken in this paper is to consider the inheritance anomaly as a problem caused by the very presence of synchronization code. The goal is then to completely eliminate synchronization code. This is achieved by using order-sorted rewriting logic, an abstract model of concurrent computation that is machine-independent and extremely fine grain, and that can be used directly to program concurrent object-oriented systems. Our proposed solution involves a distinction between two different notions of inheritance, a type-theoretic one called class inheritance, and a notion called module inheritance that supports reuse and modification of code. These two different notions address two different ways in which the inheritance anomaly can appear; for each of them we propose declarative solutions in which no explicit synchronization code is ever used.

[1]  C. Tomlinson,et al.  Inheritance and Synchronization with Enabled Sets , 1989, OOPSLA.

[2]  José Meseguer,et al.  Concurrent term rewriting as a model of computation , 1986, Graph Reduction.

[3]  José Meseguer,et al.  Order-Sorted Algebra I: Equational Deduction for Multiple Inheritance, Overloading, Exceptions and Partial Operations , 1992, Theor. Comput. Sci..

[4]  Daniel Le Métayer,et al.  Reasearch Directions in High-Level Parallel Programming Languages , 1991, Lecture Notes in Computer Science.

[5]  José Meseguer,et al.  Equality, Types, Modules, and (Why not ?) Generics for Logic Programming , 1984, J. Log. Program..

[6]  Akinori Yonezawa,et al.  Object-oriented concurrent programming in ABCL/1 , 1986, OOPSLA 1986.

[7]  David A. Wolfram,et al.  On Types and FOOPS , 1990, DS-4.

[8]  Akinori Yonezawa,et al.  Linguistic supports for development of distributed organizational information systems in object-oriented concurrent computation frameworks , 1991, COCS '91.

[9]  José Meseguer,et al.  Conditioned Rewriting Logic as a United Model of Concurrency , 1992, Theor. Comput. Sci..

[10]  Yutaka Ishikawa Communication mechanism on autonomous objects , 1992, OOPSLA 1992.

[11]  J. Meseguer,et al.  Order-Sorted Algebra Solves the Constructor-Selector, Multiple Representation, and Coercion Problems , 1993, Inf. Comput..

[12]  José Meseguer,et al.  Software for the Rewrite Rule Machine , 1988, Fifth Generation Computer Systems.

[13]  José Meseguer,et al.  Petri nets are monoids: a new algebraic foundation for net theory , 1988, [1988] Proceedings. Third Annual Information Symposium on Logic in Computer Science.

[14]  Svend Frølund,et al.  Inheritance of Synchronization Constraints in Concurrent Object-Oriented Programming Languages , 1992, ECOOP.

[15]  José Meseguer,et al.  Petri Nets Are Monoids , 1990, Inf. Comput..

[16]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[17]  Daniel G. Bobrow,et al.  Book review: The Art of the MetaObject Protocol By Gregor Kiczales, Jim des Rivieres, Daniel G. and Bobrow(MIT Press, 1991) , 1991, SGAR.

[18]  Gul Agha,et al.  Concurrent programming using actors , 1987 .

[19]  José Meseguer,et al.  Compiling Concurrent Rewriting onto the Rewrite Rule Machine , 1990, CTRS.

[20]  José Meseguer,et al.  Unifying Functional, Object-Oriented and Relational Programming with Logical Semantics , 1987, Research Directions in Object-Oriented Programming.

[21]  José Meseguer,et al.  Architectural Design of the Rewrite Rule Machine Ensemble , 1991 .

[22]  Denis Caromel Concurrency and reusability: from sequential to parallel , 1990 .

[23]  Dennis G. Kafura,et al.  Inheritance in Actor Based Concurrent Object-Oriented Languages , 1989, Comput. J..

[24]  Henry Lieberman,et al.  Concurrent object-oriented programming in Act 1 , 1987 .

[25]  José Meseguer,et al.  Parallel Programmming in Maude , 1991, Research Directions in High-Level Parallel Programming Languages.

[26]  José Meseguer,et al.  Extensions and foundations of object-oriented programming , 1986, OOPWORK '86.

[27]  Etsuya Shibayama,et al.  Reuse of Concurrent Object Descriptions , 1991, Concurrency: Theory, Language, And Architecture.

[28]  José Meseguer,et al.  A logical theory of concurrent objects , 1990, OOPSLA/ECOOP '90.

[29]  Satoshi Matsuoka,et al.  Analysis of inheritance anomaly in object-oriented concurrent programming languages , 1993 .

[30]  José Meseguer,et al.  A logical theory of concurrent objects and its realization in the Maude language , 1993 .

[31]  Gérard P. Huet,et al.  Confluent Reductions: Abstract Properties and Applications to Term Rewriting Systems , 1980, J. ACM.

[32]  Joseph A. Goguen,et al.  Simulation and performance estimation for the Rewrite Rule Machine , 1992, [Proceedings 1992] The Fourth Symposium on the Frontiers of Massively Parallel Computation.

[33]  José Meseguer,et al.  EQLOG: Equality, Types, and Generic Modules For Logic Programming , 1986, Logic Programming: Functions, Relations, and Equations.

[34]  Christian Neusius,et al.  Synchronizing Actions , 1991, ECOOP.

[35]  Pierre America,et al.  Inheritance and Subtyping in a Parallel Object-Oriented Language , 1987, ECOOP.