I'm reading through Squeak By Example because I've got some ideas rumbling around in my head that might be nice to do in Smalltalk. Having an integrated visual environment where everything is an object opens a lot of data visualization possibilities. Anyway, it has been probably two years since I've touched Smalltalk, and even then it was pretty brief. So I needed a refresher course.
I've been flipping through it looking for random bits of information I was interested in and found them all. Then, I went back and started from the beginning, following all the instructions, doing all the examples.... They've done a great job explaining things, it's really easy to follow, and gives you an excellent step-by-step introduction to Squeak's IDE, and that's a very good thing if you're not familiar with Smalltalk.
And then I hit section 1.10 and my jaw dropped. Test Driven Development...right there, at the start of things too. Many of my friends know how annoyed I am by the fact that books don't teach about writing unit tests as part of the language. Most language books teach you how to program in some new language and then, if you're lucky, at the end go "oh yeah, and you should write unit tests." Which, I feel, results in a very similar attitude amongst the developers who use the language. Code code code, "oh yeah, unit tests are 'good' but, whatever..." code code code.
But, here I am (in a book from the land where unit tests were invented (sUnit)) and for the first time in my life I'm seeing unit tests being treated as first class citizens in a language. And they've already mentioned version control in passing.
Holy, fucking, shit.
So, 22 pages in (plus however many random pages I read while skipping around over the past couple days) and I have to say I am really impressed. Well written, easy to follow, good example graphics. It's still pretty preliminary of course but... If you're interested in learning Smalltalk I recommend checking out Squeak By Example. I'll be grabbing the soft-cover version shortly but you can download the PDF version for free and check it out.
And, please, don't be turned off by the cutesey iconography Squeak uses. A lot of the development that's gone into Squeak has been to make it approachable and easy to use by children, but that doesn't mean it isn't still a powerful development platform. If you're not convinced just check out DabbleDB. It's written in Smalltalk with the very cool Seaside web framework.
P.S. Many have heard me say there's no joy in Java, but there's much joy to be found in Perl, Ruby, and Python. Well, there is in Smalltalk too. In all my Smalltalk excursions so far I'd say that Smalltalk is "nice". I don't know if I'll personally come to find it joyous (I certainly don't find Python joyous but I understand how others can), but it is, at the very least, nice. :)