but also for polymorphic messages and object-oriented programs in general. The book is worth it for not only the short, succinct code examples, where Smalltalk really shines, but also for the preface and introduction, which goes straight to the point, how perception of programming and its role shapes how you think about and approach the activity of programming. I have found its examples useful not only in the context of other object-oriented programming languages, but even for programming languages in other paradigms, and programming in general. It is not just about "low-level design" or programming idioms, but how you think about your day-to-day activities in programming. It does this without becoming philosophical, and instead does it by showing code examples with just enough explanation to get an understanding of the rest.
I have found it much better the later book "Implementation Patterns" by the same author, which is just a lexicon of low-level idioms, which any programmer knows by heart, i.e. by doing, and doesn't stir the reflexions of the art of programming that this book does. It is difficult to pin-point the significant difference between the two books, but this one seems more pure hearted, not afraid, neither conventional nor industrial or dry, more fun, and coherent like a hard diamond in language, style, and examples. It is simply beautiful without being fashionable or flashy. While being a lexicon, it is more like a great disposition of small articles where the organization is as important as the content, and it has some of that flavor that the old Basic introductions of the 1980'ies had, the flavor of curiosity, fun, inspiration, and it leads by example and encouragement rather than dictating and advising in a misguided professional tone that so many other books do.
It reminded why programming is enjoyable when you leave out everything else that doesn't add to its fullfillment and satisfaction.