On Tuesday, July 16, 2002, at 07:49 Uhr, Dan Ingalls wrote:
Ever since talking with Gilad & Co. about it, there has been this little plex in the back of my mind along the lines of "Squeak meets StrongTalk".
Why does that make me thing of the wonderful litttle cartoon "Bambi meets Godzilla"? :-) [And no, I don't know, I don't even think I could say which is which...]
The first component in this gestalt is that I think type annotations are useful as documentation, and I have always felt (and often said) that a Smalltalk with optional types would be an ideal computing environment. It really fills a hole in the metasystem.
Agreed. In my experience, optional typing definitely helps with documenting both system-wide communication patterns and mono- or only slightly polymorphic local/instance variables.
The second component is a sort of BOBW (best of both worlds) notion that with the cool aspects of Squeak and its numerous multimedia facilities, together with what is arguably the fastest execution engine going, we could at least have a lot of fun.
YES! Down with Slang! (with apologies to the creators of that wonderful hack!)
The third component has to do with applying the Squeak philosophy to what otherwise appears to me as a daunting project. The Animorphics VM is (I would suggest) a programming tour de force. I have always been paralyzed when considering such projects (and this goes for, eg, the SELF compiler, too), by the thought that I would burn out simply dealing with so much complexity all in C or worse (if you can imagine that ;-). The whole idea behind Squeak (well, not the whole of it, but the implementation approach) was that we could write it in the language we already knew, and it would be easy to understand and test. I don't see why we couldn't do the same thing for an engine similar to the Animorphics VM (Ian and I have also talked about doing the same kind of thing for Jitter).
And wouldn't we be able to go even better with an Animorphic-style system? Couldn't we eliminate of gnarly, hand-tuned system/slang/plugin code and replace it with *real* Smalltalk and let the optimizer make it good?
Some questions are:
Would the system benefit from being cast into StrongTalk?
Good question. My experience with Objective-C's optional typing has been mixed. While I *think* it would be useful to slowly solidify interfaces as code settles near the core, my practical experience has been that by the time code was settled, there wasn't much of a point in typing it. Also, the type-system seemed to get in the way at times where it wasn't able to express idioms that I had found useful. Of course, Strongtalk is probably more powerful, and a Smalltalk type-system would be able to grow with the system.
and how much work would this be?
Aren't we doing some of this work for modules, making dependency structures visible?
Would anyone care if it ran 10 times faster?
Yes, I think that would make a significant difference. Having more speed to burn enables greater levels of abstraction to be used. Especially with a system that seems to be able to "burn through" layers of abstraction to always arrive at a very similar and nearly optimal executable code.
It seems to me that a lot of code is still implemented in a fairly low-level, gnarly/procedural sort of fashion. I am almost sure this is related to implementors avoiding higher levels of abstraction for performance reasons, maybe even without thinking. I certainly know that coding in Objective-C frees me from some of the performance worries I have when coding in Squeak, a liberating effect.
and how much work would this be?
A lot? I've never done a real VM, so all this seems very daunting to me.
Would it be fun to do?
:-)))
Marcel
-- Marcel Weiher Metaobject Software Technologies marcel@metaobject.com www.metaobject.com Metaprogramming for the Graphic Arts. HOM, IDEAs, MetaAd etc.