How does GNU Smalltalk compare to Python or Ruby?
Both Python and Ruby are object oriented languages meant to provide a smooth transition from procedural to OO programming styles. Smalltalk, by contrast, is object only—you can't do anything serious without understanding objects and inheritance. By providing procedural training wheels, Python and Ruby meant to ‘fix’ one of the features that may have kept Smalltalk out of the mainstream.
However, it is actually not clear whether this is true, because the two families of scripting and object-oriented languages were strongly separated until recently. On one hand, object-oriented programming skills are (luckily) widespread nowadays, but were not when Perl and other scripting languages were introduced. On the other hand, the idea of powerful scripting languages merging advanced features (such functional and object-oriented programming) and emphasizing rapid prototyping was nowhere in sight when Smalltalk was created. In fact, most Smalltalk environments are not designed with scripting in mind.
Smalltalk (and GNU Smalltalk in particular) is much more similar to Ruby than it is to Python. Both are pure OO languages, though Ruby can masquerade as a procedural one; both have no functions, only method calls. Both have always had many features that were only recently retrofitted in Python: a unified type/class hierarchy, metaclasses, the ability to subclass everything, uniform method invocation, transparent arithmetic on large integers, and a powerful set of collection classes and iterators.
Like Python, and unlike Ruby, GNU Smalltalk's syntax and design philosophy are meant to have as few as possible syntactic variabilities. Shortly put, it was not influenced by Perl. No optional syntax elements (including keywords, since Smalltalk has only a couple of operators and five reserved variables—the only keyword could be said to be super). This also means a little fewer commodities (here documents, for example), but in general means cleaner code.
If you like Perl, you will like Ruby and be right at home with its syntax. If you like Python, you may like Smalltalk more than Ruby and be right at home with its semantics.
