What we want with Squeak?

Tim Rowledge tim at sumeru.stanford.edu
Wed May 7 16:34:51 UTC 2003


Sean Charles <bibbers at onetel.net.uk> wrote:

> >
> > One day I imagine we will be able to unload packages as well but I
> > personally find it a little harder to work out how to
> > remove-without-breaking than load-without-breaking.
> >
> As my old woodwork teacher used to say: "You can always take away (wood) 
> but you can't put it back!" when making a dove-tailed box for a project.
Whilst I (as a forty year experienced woodworker) can appreciate that,
I also (as a thirty year experienced programmer and ~twenty year
Smalltalker) would point out that it doesn't really apply terribly well
to the issue of intertwinglements within an image.

One of the problems we have let creep up on us is that in an image one
can get references to all sorts of objects that perhaps we shouldn't
have. Removing sections of the system leaves dangling refernces and
messes up life, not least wrt garbage collection. At least we have been
smarter than the c++#/java people and it rarely explodes the image...
I think part of the problem has been a (possibly misguided) effort to
'improve performance' rather than really relying upon message sending.
Remeber Alan's canonical talk about the origins of OOP as being like
biology? We should consider being a little more like cells with
messenger proteins doing our communicating. And no, I don't have any
magical proposal how to do that, sadly.

One big advantage of having a system explicitly built upon packages that
accrete is that people will be forced to think a little about issues
like 'what if this is not here?', 'how do I find out is this stuff is
present?' and so on. Since we are a lazy but creative bunch, I posit
that this pressure will lead to some useful tools to help make it all
happen semi-automagically. At first I suspect there will be a rapid
spread of the infection of
  Smalltalk classAt: #Foo
     ifAbsent:[^self damnitError: 'Foo not installed']
until somebody finds some patterns that serve as phages.

tim
-- 
Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Strange OpCodes: DNPG: Do Not Pass Go



More information about the Squeak-dev mailing list