Ian Bicking: the old part of his blog


Sorry, but I think the comments on your last posting still stand: you never really lived in Smalltalk. Programming in Smalltalk isn't enough: you need to really dive into the interactive system. Maybe it's the fact that I love Lisp Machines and their highly integrated world view that I am rather fond of Smalltalk systems. The first problem you have is what people often have: there is no program. Yep, that's right in a weird way: you usually don't build standalone programs (although there are options on how to do this - Cincom has it, or use Smalltalk/X if you want a classic standalone batch compiler), but work in the interactive environment. For me the Smalltalk environment became my desktop. Everything I wrote lived there, everything I wrote was instantly reachable from there and so it was very easy to integrate those parts. This isn't a problem or a bug, it's a feature!

What you do to deliver your application is to strip the image from what isn't needed any more (standard stuff with Lisp environments, too, so not really an obscure feature) and bind it with the virtual machine to form the application. This usually is a builtin tool. The reason you do it this way is that Smalltalk - same as good lisp environments - allows you to make much more use of what is already there in the image. You decide how much of the standard environment you need. Need a scripting language? Use smalltalk, deliver parts of the development environment with your application. Need a hierarchical browser for in-image structures? Use the available ones as a starting point. Need a simple attribute panel? Use the inspector. Sure, there are solutions that give you much of this flexibility in more classic environments - Ruby, Perl and Python for example. The power of already installed tools is what makes me use Python ;-)

But Smalltalk really dominates if you want a feature rich environment. Due to the demise of Lisp Machines, Smalltalk is actually the only option if you want such rich and well integrated environments. None of Eclipse or XCode or any other integrated development environment comes even close to what Smalltalk offers.

The comparison with Zope is actually quite good. Only problem is, Zope is far too much centered around the content management and web application meme. Ok, newer versions become much better in that area. Tools in Zope are still a bit crude. Especially in-Zope development (ZClasses are the only way to develop your own products inside Zope) isn't as sophisticated - you don't have hierarchie browsers or even simple class browsers in Zope, you only have the rather flat view of products in the control panel. But yes, one could see Zope as the Pythonic Smalltalk for Web development. It just needs to grow up in some areas.

Oh, regarding free resources: Cincom makes their smalltalk free (as in beer) available and since that is a rater grownup Smalltalk, it includes everything and the kitchen sink. And since it is built in the good stand of Smalltalk environments, it includes the source for everything including the kitchen sink.

Squeak is the other option with free (as in speech). To say that Squeak is a small environment or a limited environment or just to say "only programmed in Squeak" shows that you didn't really dive into Squeak, as you missed about 95% of the nice features and tools in Squea. For example the whole virtual machine abstraction is available in Squeak in Smalltalk.

So if you really want to build yourself a usefull Smalltalk background, you can jump into Sqeak again, you will get most standard Smalltalk tools and then some more (Morph is quite cool - wish other GUI libs would be as modern and usefull). Or jump into Cincom to see what big Smalltalk systems are alike, what additional tools they provide (many tools for Cincom are free in both senses - there is a quite vivid Smalltalk Free Software world!).

So why didn't Smalltalk really take off? Complicated question. First anser is: it _did_ take off. It was in high regard for many years before Java really took off. It's just that it became a smaller area in the world of programming due to the high visibility (and actually Hype) of Java. It's the same with Delphi vs. Visual Basic in Windows: Delphi is much cleaner and much more powerfull, still people jump the Visual Basic train. I think that market movements (and programming language choices in the world often don't have to do with technical choices, but much more with marketing than we would like to!) just pushed Smalltalk to it's side, as much as they did with Lisp systems. There still are several Smalltalks out there and there still are several Lisps out there. They fit their job very good. Free implementations are available in both languages, and there are free implementations with quite complete toolsets (although Smalltalk wins over Lisp here - there are only rudimentary development environments for free Lisp). But I won't say they didn't take off - they were just damped by bad marketing of the companies and by the Java stuff.

There _is_ the fact that people often don't "get" the idea behind the Smalltalk environment. But that's mostly because people try to see Smalltalk from the typical batch compiler point of view and think they miss stuff in Smalltalk. Actually it's the other way around: if you ever really _worked_ with Smalltalk, lived in the environment, you will miss many tools in the outside world.

So I think the really interesting question would be to ask why other languages didn't take up those ideas and why they don't deliver as sophisticated tools. Why is idle so crude? Even DrPython is primitive in comparison with a Smalltalk environment.

Damn. Now I have to boot my lisp machine to feel better again ;-)
Comment on Where Smalltalk Went Wrong 2
by Georg Bauer