Design Principles Behind Smalltalk, Revisited

Jecel Assumpcao Jr jecel at merlintec.com
Tue Dec 26 20:30:44 UTC 2006


Paul D. Fernhout wrote:
> Jecel Assumpcao Jr wrote:
> > [Us paper]
> > http://citeseer.ist.psu.edu/5049.html
> 
> Thanks for the link. I'm not sure how this differs from regular Self? And 
> the paper is not online that I could find.

Clicking on the "PDF" link in the upper right corner of that page worked
for me just now. Self is an objective language, which means that the
code to be executed depends on the type of the receiver and on the
message selector. Us is a subjective language where the code to be
executed also depends on the context from which the message was sent.
This is an extension of the work on "layers" done in Smalltalk in the
PIE project.

An idea closely related to the "viewpoints" introduced in Us is "roles"
where the code also depends on the context. The difference is that when
you change viewpoints all objects change at the same time (like moving
your head in a 3D environment) while when you change a role only a
single object is affected (like rotating an object in a 3D environment).
Both of these features address some of your complaints about using
objects exclusively for everything.
 
> [patapata and documenting intent]

I think the issue is unrelated to class vs prototypes and is actually
about having a global catalog vs allowing loose objects. Even in
Smalltalk-80 you have loose objects (like "Set class"), of course, by
they are so closely coupled with cataloged objects that they don't
matter. As always, there are tradeoffs. Doing things one way will make
some stuff easier and others worse (without loose objects there is a
strong temptation to use block where you should really be defining new
objects, for example). We have a lot to learn about how to best organize
systems, specially when they are modular.

> [Squeak-on-JVM and licenses]

I think the extra step of getting Squeak 1.1 relicensed as Apache after
Apple had already agreed to relicense it as APSL 2 was more than we
could have hoped for. All code written after that is in the process of
being relicensed using the old X11 (often called "MIT") license. The
latter is GPL compatible, so as long as you are willing to do your own
replacement for Squeak 1.1 your legal needs would be met.

> > Note that some people were interested in getting Squeak to run on top of
> > Strongtalk's VM and that would match your request for a non Smalltalk
> > syntax (it is written in C++).
> 
> Again, I don't care if the VM is written in Smalltalk. I think it is 
> clever to make a VM in an abstract way, especially as it is already done 
> (even though there are some disadvantages). I'd much rather work in 
> Smalltalk syntax than other syntaxes (even Python). I was using it more as 
> an example of Squeak applying a design principle which may be obsolete in 
> the internet and free software age.

The whole point of the Slang trick was to be able to debug using all the
nice Squeak tools instead of gdb. Some people don't want that while for
others it makes all the difference in the world.

-- Jecel



More information about the Squeak-dev mailing list