Single page programs (Re: Configuring a Dynabook) (long)

Alan Kay alank at wdi.disney.com
Sun Dec 13 18:36:37 UTC 1998


Patrick --

Yes, a good idea. The original inventor of this idea as far as I know was
none other than Pat Winston in the late sixties in his really interesting
thesis that attempted to find universal abstractions for the Thomas Evans
"Geometric Analogy Solver". This is one of the "two most interesting theses
that no-one has heard of". I mentioned this very briefly in the History of
Early Smalltalk HOPL chapteras "something I should have paid a lot more
attention to".
     Pat didn't know about OOP then but he had created a relational network
representation system that had the equivalent of classes and instances (and
only really lacked the message sending idea). The key powerful idea that he
added was the notion of "arcs" as first class representations. So if the
system used a relation like "BLOCK-A RIGHT-OF BLOCK-B" (thought of as a
directed labeled arc from BLOCK-A to BLOCK-B,  then "RIGHT-OF" and
"LEFT-OF" had their own class defs (which included the relation "INVERSE"
(or some such), and this allowed one to ask the question "BLOCK-B LEFT-OF
BLOCK-A" and get the right answer which was derived from finding inverses
of "LEFT-OF" and researching.
    We used a similar logic in the early days of Smalltalk for coercions --
but didn't follow up on the idea of having classes for selectors and their
methods. This general technique is called "slot objects" in AI, and is
useful in many different areas in AI and in OOP (e.g. for a different kind
of inheritance, and for controlling the meaning of polymorphisms -- like
print, +, etc.).

One of these days ........

Cheers,

Alan

------

At 5:35 PM -0000 12/13/98, Patrick Logan wrote:
>    This is a nice job for metaprogramming, and I'm hoping we can
>    exhibit some real improvements in this area in calendar '99. I
>    would like to solicit ideas about this that can help the
>    design. One of the most interesting "algebraic" areas parallels
>    that of the problems of multiple inheritance: what *kind* of
>    object is an instance that is being used as a composer? The
>    instance (at least in Squeak) belongs to a class by definition,
>    but one might want to derive some additional "classness" from the
>    objects in the instance, etc. (Please folks, rise above the
>    tendency to start debating "prototypes vs classes" again -- this
>    is a red herring in almost all areas and has almost nothing to do
>    with the current discussion ...).
>
>This may or may not be in the ballpark, but I was reminded of an
>experience from ten years ago...
>
>I used an interesting language for about a year called the Carnegie
>Representation Language, CRL, (which came with the KnowledgeCraft
>product from Carnegie Group for Common Lisp, and was based on the
>Knowledge Representation Language, KRL, from the same people at
>Carnegie Mellon.)
>
>A useful thing about this language is that "relationships" are first
>class objects. When two objects become related by some relationship
>the presence of that relationship cn bring out new things about those
>two objects, or anything else for that matter, because you get to
>define what happens when relationships come and go.
>
>To take a very simple example, let's say there is a person and a
>company. The person has a home phone, the company has a phone as
>well. When the person goes to work for the company, a new relationship
>is established, say, EMPLOYED-BY and EMPLOYS (relationships can be one
>or two or N ways). By virtue of this relationship, the person now has
>a "work phone". The relationship may define this to be the company
>phone or it may define it to be the company phone plus some extension
>that gets assigned.
>
>Many relationships can be described declaratively, but when the steam
>runs out of that, you can go even more meta and describe it using
>Common Lisp (which can also access Prolog, OPS5, etc.)
>
>It was kind of a kitchen sink product, but had some interesting
>capabilities.
>
>Another capability of the relationships was that they could become
>segments of paths. So it may be significant not just that a person is
>employed at a company but that the company is located in some region
>and so on.
>
>--
>Patrick Logan                 mailto:patrickl at gemstone.com
>Voice 503-533-3365            Fax   503-629-8556
>Gemstone Systems, Inc         http://www.gemstone.com





More information about the Squeak-dev mailing list