On Sunday 20 January 2002 09:33, Ted Wright wrote:
I have a question about Self that I have anxious to post to the Squeak mailing list (because I know there are people here with the right experience to answer it). I've been wondering: what is wrong with Self? Why hasn't it taken over the world? :)
It was explicitly killed by Sun to make room for Java, just as SpringOS was killed around the same time in order to not bother Solaris. While I was not happy with either decision, I am the first to admit that there was good business sense behind them.
In many ways, Self seems like an improvement over Smalltalk,
Smalltalk means different things to different people. To some of us, it does indeed seem more Smalltalkish than Smalltalk-80. Other people don't like that direction at all.
and I get the impression that the "Programming as Experience" inspiration for Self has a lot to do with the direction Squeak is headed. But, other than Morphic and "HotSpot(tm)", it looks like many of the Self concepts have been ignored. Is it because it turns out to be hard to organize a big system without classes?
No - you can simulate classes whenever you need them. I am not sure if I understood John Maloney's objections in the great interview that Tansel pointed out to you, but I got the impression that he missed the global and centralized system view that the browser gives you. Self's outliners are like the Object Inspector in Squeak and are better for giving you local views. Note that Squeak-like browsers could be built in Self in an hour or so (as Mario Wolczko did in his Smalltalk emulator).
Is it because implementations exist for only a few types of computers, so many people have never experienced it?
This is a major factor. Until December 1999 it only ran on Sparc machines. Then it was released for the PowerMac. And now it is available (still early alpha) for PCs running Linux.
Or is there something else?
The virtual machine is large and very complex, much like commercial Smalltalks. That is the main reason why ports have been slow and few. And don't expect to see Self running on (existing) PDAs.
This problem was not lost on Squeak's creators, and the simple "self hosted", interpreter based VM has enabled it to spread everywhere. As always, there are tradeoffs. While I can write some complex code in Self and let the compilers do their magic, to get something usable in Squeak I will have to restrict myself to a subset of the language (Slang) and after debugging the logic the code must be translated into C and externally compiled into a plugin.
On the language design front, Alan Kay has complained in this list about the "mixing of levels" in Self due to parent slots. Program structure, which should be a meta-level issue (handled by mirror objects, perhaps) becomes visible and changeable at the base-level. This was actually a design goal for Self's creators, but it has little impact in practice - if it were eliminated the code would only have to be changed in about a dozen places in the image, half of which are there mostly to demonstrate this feature.
-- Jecel