Adam Petersen - Software Development Pages, Book Reviews Section
Start News Articles Book Reviews

Book Review

Programming Ruby: The Pragmatic Programmers’ Guide, Second Edition
by Thomas, Fowler, Hunt

ISBN-13: 978-0974514055
Publisher: Pragmatic Bookshelf
Pages: 864

Ruby is well on its way to become mainstream, which is surprising in a good way; Ruby is an expressive, intuitive, and powerful high-level language with object-orientation done right. To succeed, Ruby needs a great companion book and Programming Ruby is one of the best introductory books I’ve read on a programming language (had it only been shorter, it could have been as good as classics like K&R and ANSI Common Lisp). The text is accurate, humorous, pedagogical and easily accessible. Besides covering the technical aspects of the Ruby language it also provides a historical background and introduces the philosophy behind Ruby.

The book starts with a guide on how to install Ruby and then takes up speed introducing features as needed. If you already know a few languages you’ll appreciate this approach. It’s very effective. After mere 30 pages I’ve learned enough to carve out some Ruby scripts for automating tedious everyday tasks. The Pragmatic Programmers then move on covering distinct features of Ruby in more details including regular expressions, the type system, and multithreading. All the time more and more details are added to the reader’s Ruby palette.

But this book is so much more than just a tour of the syntax and features; Programming Ruby promotes professional programming practices and I’m particularly pleased that a whole chapter on unit testing is included early on. In fact some topics like the enjoyable chapter on Duck Typing, which is one of the best discussions on dynamic typing I’ve read, transcend Ruby. Also, like all good introductory programming books, this one also includes a language reference at the end, perfect to keep on the desk during programming.

The only thing I felt missing was a deeper discussion of building domain specific languages, a task where Ruby leaves most of its competitors behind. Sure, there are a few pages devoted to Ruby’s meta-object protocol, but it’s not sufficient. Also, as this book was written before the huge rise of Rails, the Rails framework isn’t covered in the chapter on web programming. Still, if you’re interested in Ruby, this is the book you want. It’s hard to imagine a better introduction to this promising programming language.

Reviewed January 2008

©2005 Adam Petersen