Author: Larry Ullman
Publisher: Peachpit Press, 2008
Aimed at: Beginners to Ruby
Pros: Well written, clear presentation of the workings of the Ruby language
Cons: Insufficient explanation or motivation for key ideas
Reviewed by: Mike James
If you know any of Larry Ullman's other introduction to programming books then you will recognise the style of this book. It claims to be aimed at even complete beginners but the pace is too fast, the material not organised well enough and there are too many advanced asides for this to be the case.
The book approaches many of the core ideas of programming very slowy and spends a great deal of time on material that would be best left until the basics were mastered. For example we have chapters on types, arrays, ranges and hashes before we reach Chapter Five on control structures.
Another problem is the way the book deals with a topic in its entirety in one go and then never returns to it. What this means is that everything that has to be said on a topic has to be presented even if it confuses a beginner. It may be nice to know how to concatenate two strings but do we need to go into the details of the difference between + and << while the complete beginner is still wondering how to say the word "concatenate".
The are lots of other places were there is insufficient explanation or motivation for ideas that are key to Ruby and why it's different from other languages. For example right in the middle of explaining the for loop we have a forward reference to iterators and how these might be better. When we get to iterators the mechanism of creating and using an iterator is introduced well enough but without any explanations of why you might want to do things in this way rather than a good old fashioned for loop. If you are a bright and well educated reader you might not need such discussion but what else is a book on programming for. A good book on programming should discuss the underlying ideas and motivations and not just present the mechanisms.
The book ramps up the pace fairly quickly and soon we are on to regular expressions, debugging, Ruby Gems, file handling, database, networking, Ruby on Rails and Dynamic Programming. These later sections are all more suited to the experienced programmer rather than the beginner.
Despite the criticisms this is a well written and clear presentation of the workings of the Ruby language. It isn't particularly suited to the complete beginner but then few books aimed at this market are. It certainly isn't an authoritative or complete guide to Ruby nor is it a guide to what makes Ruby an interesting language - more general discussion and explanation would be welcome. If you want a quick introduction to the language and its environments and like the overall style of the QuickStart books then this might meet your requirements.