Pick one ... STORY 1: ======== What I like most is that I do not rely on IDE vendors or tools to do measure things like: TestCase allSubclasses size inspect things like: Account allInstances collect: [:each | each value > 10 ] or script my environment: TestCase allSubclasses do: [:each | each removeFromSystem ] Try all this in any of the other "static" environments. And yes - one can shoot itself in the foot: true become: false but I like the freedom. STORY 2: ======= In any program environment you have to use a debugger. In Smalltalk you can just save the image and continue the next work day on exactly the same point you left. In other environments you usually close the IDE in the evening and start to debug the program the next day again until you are at this point, have the stack and variables in the same state. Lots of wasted time and developer resources in static world... STORY 3: ======== "Rethinking the typing" as you can see http://astares.blogspot.de/2006/08/rethinking-typing.html STORY 4: ======== When I tell people that Smalltalk is not a language - just a dynamic object system with a language built on top of it. A method, a class ... anything is an object. So if you need additions you just implement them without waiting for the next language spec or vendors. Need traits, interfaces, namespaces, ... just add them. Embed other languages: just add them (see Helvetica) http://astares.blogspot.de/2009/11/helvetia-embedding-languages.html) New control structures? Just implement them. An example: Pascal hat a REPEAT UNTIL. C/C++/Java language family and Smalltalk does not have such a construct. The difference: in Smalltalk I can just add a new method #repeatUntil: to BlockClosure if I really need it. STORY X: ======== ...