Date: July 23, 2007
|Title||Ruby by Example: Concepts and Code|
|Author||Kevin C. Baird|
|Publisher||No Starch Press|
Audience:The book is aimed at being immediately accessible to all levels of Ruby programmers, however it has a very interesting slant towards the often overlooked functional programming strengths of Ruby. If you love your scripting languages served with a burst of lambdas and proc objects, or you're a fan of Haskell and Lisp, this book is for you. Anyone looking for a Rails or Web 2.0 tutorial should look elsewhere as this book concentrates on other natures of Ruby.
The book is divided into 10 chapters that increase in complexity as far as examples and paradigms go. The first five chapters will introduce the core concepts of Ruby's dynamic object oriented nature. Concepts such as variable assignment, booleans, methods, and constants are introduced with an interactive approach - the reader is encouraged to follow along with Ruby's IRB (Interactive Ruby) to type in the actual code and see feedback within a keystroke. Example scripts that readers could hack on include printing the lyrics to '99 Bottles of Beer on The Wall', detecting palindromes in strings, and dicing up text through a series of manipulation how-to's. These examples are a concise showcase of Ruby's scripting abilities as a language.
From chapter 6 on, you can clearly see the author's enthusiasm for functional programming - he confesses his love of writing the intro chapter for proc blocks! By utilizing proc blocks and anonymous lamda functions, Baird goes on to use these concepts to extract code from Moby Dick, and even walks the reader through setting up a DJ Song Sampler. Mathematically inclined programmers will be right at home in this section and will appreciate the simple abstract blocks used to solve the problems mentioned above.
Baird finishes out the book with a quick touch upon the Web abilities of Ruby, including a brief introduction of Ruby On Rails, a highly effective web development framework. Web developers and designers will be able to manipulate css style sheets, hack up some cgi scripts, and get a taste of Ruby's killer application, Ruby on Rails.
The book definitely provides great learning examples with some slick functional programming goodness thrown in for good measure. I've yet to see a Ruby book delve this far into the mathematical nature of Ruby. The author also leaves some tidbits about the history of how Ruby came about by citing other programming languages' strengths and weaknesses. Baird's honesty in this case helps round out your skill set by challenging you to not only Ruby, but to examples of related genres around.
Hardcore Rubyists will appreciate the heavier examples used to demonstrate the functional facets of Ruby, while others will make use of the highly applied examples for everyday programming problems. This book is great for all the mathematically inclined and will serve well in guiding them down the less beaten paths of Ruby.