How do you define "object-oriented"?
Alan Kay
Alan.Kay at squeakland.org
Wed May 1 16:00:06 UTC 2002
Slot inheritance was invented for AI and other reasoning systems --
and also for providing protection of polymorphic meanings. One of the
ways of looking at it is that for many objects, the contents of the
instance variables can be thought of as "parts". Thus, one could
imagine a lookup strategy that would search down through the instance
variables for ideas and info about the object.
An example might be to deal with the question "how heavy?" the
idea might be to look at the slot called "material" and ask the
actual value for help. It could in turn ask its variables for help,
etc. So this gives a dynamic way to enlarge the property space of an
object. If you include the static superclass chain in the mix of
searched variables, then you get regular inheritance. This is one of
the many inheritance strategies used in CYC.
Another view of this is to consider the polymorphic meaning of
"print" in Smalltalk. There is no protection of the generic meaning,
any programmer can write whatever they want in a method. However, we
could make a subclass of class Method called Print whose instances
are Print-Methods. These would not allow arbitrary code to be written
in them, but might have places where programmers could add useful
ideosyncratic information. All of these print methods would really
try to print something. So slot classes and slot inheritance allow
real definitions and protections of meanings. This idea also goes
back to the early 70s.
All these were easy to do in ST-72 because each
class/closure/instance really got passed control *before* the message
was received.
There were some suggestions that a "prereceive" method be
allowed in ST-76 and -80 -- if present, a flag would be set somewhere
efficient, and it would be called first with the actual message put
in a place where it could be received later. This would have allowed
all of these schemes, delegation, etc., to also be done in the later
versions of ST. Someone on the list might want to figure out good
ways to do these schemes in Squeak. Folks like Nathanial Scharli and
Stephane, who are playing with metasystems, should add these kinds of
considerations into their play.
Etc.
Cheers,
Alan
-------
At 3:32 PM +0200 5/1/02, Henrik Gedenryd wrote:
>stephane ducasse (home) wrote:
>
>> What was slot inheritance?
>>
>> Stef
>
>As I understand it that was a precursor of delegation a la Lieberman and
>then Self and so on: inheritance goes via the slots instead of via the
>class.
>
>But this understanding is based on very scarce information.
>
>Henrik
--
More information about the Squeak-dev
mailing list
|