For better or worse the vast majority of my work life journey has been travelled with Java as my vehicle of expression. However, by nature I have a burning desire to learn new languages and at one point or another I discovered Russ Olsen's (also the author of Eloquent Ruby) "Design Patterns in Ruby". Having at one time counted myself as a true-believer in everything pattern-esque, I was excited for the opportunity to learn Ruby under the aegis of The Gang of Four. However, what I found was something else entirely. I absolutely loved "Design Patterns in Ruby" for reasons that I was not expecting. That is, what I found was an extremely interesting book that was playful and as a nice side-effect *actually taught me how Ruby's powerful features make many design patterns unnecessary*.
Olsen, with his latest effort has mastered the art of writing a book that is extremely interesting, fun, and informative. As an author myself, I greatly admire the ability in other authors to take what many would consider dry and bland, a programming language book, and create something that is truly special. Let me not give the impression that "Eloquent Ruby" is filled with fluff however; on the contrary, of any Ruby book that I've read I have learn the most from Mr. Olsen's masterpiece.
"Eloquent Ruby" is written for the programmer like me: someone with previous programming experience, but with only a passing understanding of Ruby itself. The structure of the book will help guide the Ruby neophyte toward a stronger understanding of not only the language constructs and idioms, but also the Ruby culture. As an outsider to said culture, I've always viewed the Ruby community as merely a collection of characters, but Olsen's book helps to illustrate that (almost universally) Ruby practitioners first and foremost strive to create correct and robust solutions. As a proponent of the Lisp family of languages, I tend to look askance at languages falling into the ALGOL family, but "Eloquent Ruby" has succeeded in convincing me that with the right approach and mindset then Ruby can be a stunningly beautiful language. And this is really the key point to take away from Mr. Olsen's book. That is, he guides the reader through the Ruby mindset to drive home the point that Ruby's features -- from its powerful and fluent blocks and modules, to the mind-bending metaprogramming facilities, to its to its humble symbol, and through its philosophy of "Objects all the way down" -- play together in such a way as to foster ... well, elegance.
The highlight of the book is of course its dénouement that succeeds in pulling together all of the lessons presented throughout the book into explaining the role that Domain-Specific Languages (DSL) serve in solving programming problems with Ruby. I can't possibly do justice in summarizing this important technique, but the punch-line is that Ruby's features foster the creation of powerful and expressive DSLs used to simplify the development of complex solutions by allowing the language itself to be molded into a form that is highly expressive to said solution! It takes a while to see the power in this technique, but "Eloquent Ruby" makes a compelling case indeed.
Russ Olsen has helped me to gain more experience points in Ruby, and I must say that I am excited to learn more. If you too wish to learn more about Ruby, then you would be hard-pressed to find a better book than "Eloquent Ruby" in helping you to do so.