(ref.doc)OOPSLA87

Next spn28/8 Prev: oopsla86 Up: ACM SIG PLAN

Object-oriented programming systems, languages and applications '87
Proceedings

pp 227-242
Self: The Power of Simplicity
by David Ungar and Randall B. Smith

Self is a new object-oriented language for exploratory programming
[...]
[...] no type declaration. Self includes neither classes nor
variables.
Creation metaphor: cloning prototypes.
Instead of a class pointer, a Self object contains named slots. If an
object receives a message and it has no matching slot, the search
continues via its parent pointer.
To visualize the way objects behave in a class-based languages, one
must grasp two relationships: the "is a" relationship, that indicates
that an object is an instance of some class, and the "kind of"
relationship, that indicates that an object's class is a subclass of
some other object's class.
Prototypes are more concrete than classes because they are examples of
objects rather than descriptions.
Class-based systems are designed for situations where there are many
objects with the same behavior.
The Scheme community has obtained excellent results with closures (or
lambda expressions) as a basis for control structures. [...] closures
provide a powerful metaphor for users to define their own control
structures. Furthermore this ability is crucial to any language the
supports user-defined abstract data types. However, we believe that it
is unwise to design a language that makes separate provision for both
objects and closures.
In Self, objects that play the role of subroutines and closures
(methods and blocks) are prototypes of activation records; they are
copied and invoked to run the subroutine or block.
Behaviorism: In most object languages, an object is what it is. In
Self, an object is what it does.
Computation viewed as refinement.
Multiple inheritance permit[s] a better factorization of behavior.
Encapsulation is lacking in the current design.

Related work:

Trellis/Owl, an oo language incorporating static type-checking and
encapsulation [Schaffert & al in OOPSLA '86]

Exemplars [Lieberman in OOPSLA '86]

Actors also rejects classes, replaces inheritance with delegation
[Hewitt & Agha MIT AI Lab unpublished 87]

automatically generated by info2www version 1.2.2.8