Tech Report CS-88-15
A Shared View of Sharing: The Treaty of Orlando
Lynn Andrea Stein
For the past few years, researchers have been debating the relative merits of object-oriented programming languages (OOPLs) with classes and inheritance as opposed to those with prototypes and delegation. It has become clear that the OOPL design space is not a dichotomy. Instead, we have identified two fundamental mechanisms, templates and empathy, and several different independent degrees of freedom for each. Templates create new objects in their own image, providing guarantees about the similarity of group members. Empathy allows an object to act as if it were some other object, providing sharing of state and behavior. Smalltalk, Actors, Lieberman's delegation system, Self, and Hybrid each take differing stands on the forms of templates and empathy.
Some varieties of template and empathy mechanisms are appropriate for building well-understood programs that must be extremely reliable; others are better suited for rapidly prototyping solutions to difficult problems. The differences between languages designed for each of these application domains can be recast as the differences between support for anticipated vs. unanticipated sharing. One can even ascribe the ascent of object-oriented programming to its strong support for extension instead of modification. However, many kinds of extension still remain difficult. The decomposition of an object-oriented language into template and empathy mechanisms and the degree of support for extension provided by the forms of these mechanisms provide a solid framework for studying language design.
Order hardcopy report from firstname.lastname@example.org