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

Michael S. Klein mklein at alumni.caltech.edu
Tue Dec 15 02:19:57 UTC 1998


On Mon, 14 Dec 1998, Bruce Cohen wrote:

> Patrick Logan writes:
> >> 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.
> 
> Stop me if I'm going to far here, but wouldn't it make sense to make a
> first class notion of relationships be a fundamental component out of
> which you build things like classes & prototypes?

It would make much sense. As has been noted over and over again,
the key principle in all of this OOP stuff is messaging.

Yet, Smalltalk has no first-class representation of messages.
Smalltalk has only the minimal meta-objects to support execution: selectors.
In fact, the implementing class, Symbol, is often pressed into many other
usages. Is the fact that Smalltalk smooshes it's meta-level objects in
with other "ordinary" objects a strength or weakness?  I've often viewed
it both ways.

Of course one could view relationships from the inside of an object 
(instance variables) instead of from the outside of an object (messages),
and the same comments apply: no meta-object corresponding to an instance 
variable.

Is it any wonder that people are distracted from the messages by the classes?

What is meta-programming in Smalltalk?

	Writing a new root class?
	Adding methods to Behavior?
	Overriding #doesNotUnderstand?
	Writing class-side methods?
	Sending to 'thisContext'?

CLOS draws a line, even if it is fuzzy in places.

-- Mike

"You can't write a program that writes a program without
	writing a program that writes a program that does something"





More information about the Squeak-dev mailing list