Self

Henrik Gedenryd Henrik.Gedenryd at lucs.lu.se
Mon Nov 8 15:47:41 UTC 1999


Everyone, I find this Self discussion very interesting. Personally, I was
greatly impressed and inspired by the work on Self. It was the first thing I
have seen that was a substantial step forward since Smalltalk. However,
ultimately it is still "a better old thing" rather than "a completely new
thing" (which is a lot to ask for, I know). In other words, I often thought
"yeah, that's a very neat way to solve issue X with Smalltalk" (such as
prototypes, unifying instvars and methods into slots, or the alternative to
primitives, etc.).

.... Alladin calling Genie ...

on 99-11-07 18.52, Alan Kay wrote:

> Your wish is my command ...

OK, I have one another wish... Some parts of your reply were very
interesting, but its not clear to me what you are thinking of--might you be
more specific about exactly what you mean?


> The aspects of Self I found
> less appealing were those that dealt with meta-issues like "classness",
> inheritance, underlying frameworks, reflection, etc. Here I felt that Self
> was too LISP-like, and didn't do a great job of either protecting its
> metasystem or of representing it.


What do you mean by too LISP-like, etc.., and what features are you
referring to?

> Just as
> assigning to a variable is one metalevel deeper than getting a value from a
> variable or a function (and should therefore be protected by some metafence
> like an encapsulation abstraction), it is also the case that getting
> instances from another structure is a metalevel deeper than just copying,
> and it needs to be protected and aided by an abstraction.

> This is not to say that these deep ideas shouldn't be maleable at some
> level of the system, it's that they shouldn't be gratuitously visible to
> the vagaries of programmers who are in a debugging frenzy.

Again I am not sure what features you are referring to. Is it the automatic
provision of access messages for every slot? If so, and if I might play the
devil's advocate here for the sake of argument, this feature might be
described as late-binding of encapsulation: ie. the choice of encapsulation
is left to the programmer (well, you are the advocate of late-binding, so I
shouldn't need to make the case for this...). Personally, I think that
encapsulation, like type declarations, becomes valuable a bit into the
process when a piece is to interact with other ones, safely. Before that,
when getting the piece to work at all, and when the structure is more in
flux, this can get in the way.

> In sum, I believe that anything that can be changed in one place, but
> felt later at many places is "meta" and needs to be carefully handled,
> otherwise a mockery is made of the attempt to look at a piece of code and
> unambiguously understand what it says.

Good point again, but I don't see exactly what features of Self you are
thinking of. 

In general, there has been a lot of talk about reflection but I am still
awaiting a clean, elegant, practical, etc. solution to it. Especially if we
think of reflection/meta-object facilities beyond those that have been
present in Smalltalk all along, long before the term reflection was even
coined.

The general problem with Self may be that there was no single, underlying,
unifying idea, whereas the one in Smalltalk was exceptionally powerful.
Hence the sum of the improvements was divergence, and a dilution of the
initial clarity and elegance of Smalltalk's conceptual model. Creativity
goes through both divergence and convergence phases--the latter for example
when you get to the point when you realize that you can delete a great deal
of your new code, because you have attained a better understanding of what
you are doing. The result is greater simplicity; maybe not everyone has an
affinity for such convergent creativity, I don't know.

Still, both phases are obviously needed; its much like science, where a new
theory creates a new paradigm that feels very coherent and so on. Then,
various ad hoc extensions "fix" various details of the initial theory,
causing a beginning divergence and eventually the breakdown of the paradigm.
This yields the need for a new convergence, in the form of an entirely new
theory that creates a new coherent conceptual model out of the seemingly
divergent detail facts that have piled up.

Self has made interesting developments in many directions, also eg. Chang's
and Smith's work on the object-focused UI. Others have developed aspects,
reflection, perspectives/subjectivity, etc. But what we would need is the
convergence that would yield the deep blue, truly "new thing". A big
question is how much this will have to break with the OO paradigm.


And my third wish is for three more wishes...

Henrik


< = > .





More information about the Squeak-dev mailing list