I'd just go with Pharo. Pharo by Example is a good intro book, and it's still under development. Also, I would strongly suggest that you go with something like Pharo where you run the image on your desktop. Part of the reason I really, really like Smalltalk is how working in the image changes your workflow. As I understand it, GNU Smalltalk is still write file-compile-run, which is not at all how you work in Smalltalk (or at least not I or my colleagues do), instead I find that Smalltalk encourages a very iterative style since you're generally working directly on a running instance of your program.
It takes a bit of getting used to the development environment in the image (and setting breakpoints by inserting `self halt` directly into a method feels really dirty initially), but now that I've been working in Smalltalk for a while I find I prefer it to "normal" development, which is still very much "hand in your stack of punch cards and wait for the result to come back"-way of development.
It takes a bit of getting used to the development environment in the image (and setting breakpoints by inserting `self halt` directly into a method feels really dirty initially), but now that I've been working in Smalltalk for a while I find I prefer it to "normal" development, which is still very much "hand in your stack of punch cards and wait for the result to come back"-way of development.