Author: David Flanagan & Yukihiro Matsumoto
Publisher: O'Reilly, 2009
Aimed at: Ruby enthusiasts
Pros: The best book available on Ruby
Cons: Not suitable for beginners
Reviewed by: Mike James
This is clearly an important book as it's written by the creator of the Ruby programming language, and an experienced and well regarded author. If you check the Amazon reviews you will also find that the book scores a straight 5 from everyone and the reviews are slightly in awe of the volume. However, if you read carefully what people say you might come to the conclusion that the comments don't really justify the "perfect" rating.
This is without doubt a good book on Ruby but it has some shortcomings. The most important is that this isn't a book for the beginner because it tackles topics in an order that reveals the structure of Ruby rather than provides a good and easy introductory pathway into the language. It also doesn't make a good technical reference because it simply isn’t exhaustive and it isn't a good cookbook because that's not what it sets out to do.
What it does set out to do is explain some of the more unusual approaches of Ruby to programming methodology. In this it succeeds in explaining ideas such as Ruby's approach to functional programming, objects, the use of iterators, blocks and meta programming in general. It often fails to explain the differences between Ruby 1.8 and 1.9 and never mentions other dialects such as IronRuby. Even when it does draw your attention to differences between 1.8 and 1.9 it rarely comments on how to get around the lack of some feature.
As you might expect from a team that includes the creator of the language, the authors tend to be rather too uncritical of Ruby and its place in the wider world of programming languages. It would have been nice to read more comments that laid bare the problems with the language and how its philosophy fitted in with other modern approaches to programming.
Even with these criticisms I enjoyed reading it. It's well written, full of interest and rewarding. It's currently the best book on Ruby but it's not perfect and there is room for improvement.
For now this is the de facto standard text on Ruby and if you want to know about the language you need to buy a copy.