Polyglot 10: Smalltalk
13 November 2004
Tenth is Smalltalk. It takes a little while to 'get' Smalltalk, but once one does it is an utterly beautiful language. Simple and pure. Too bad every implementation I've seen of it is awful. The one I'm using at the moment is VisualWorks 5i.1. For some reason they've decided that the native widget set isn't good enough for them and have built their own version. Which means everything behaves very differently from the way one expects. Open menus need to be clicked closed or else their hotspots lurk on top of the code, copy and paste don't use the usual keys, the mouse wheel isn't supported, context menus appear on the wrong monitor, text selection behaves like a Mac, load/save dialogs are text boxes that don't let one browse the disk. And my favourite: the dialog box asking if you want to discard your code changes where both 'Yes' and 'No' wipe out your code. These are little things, but there are an awful lot of them. It makes using Smalltalk an unpleasant experience. It's very reminiscent of using Komodo; a slow, buggy environment which multiplies the programming time and sucks the fun out of a project.
Having said all that, it is just the environment I'm criticising, not the language. Smalltalk itself is great. I hope that someday someone will write a decent Smalltalk implementation. One that is written for the real world and isn't just an academic sandbox.
Here's the Smalltalk source code for the standard colour program.