This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
<pre>Author/s : Chris Pine Publisher : The Pragmatic Programmers Category :Other Review by : Jason Menard Rating : 7 horseshoes</pre> As a relative newcomer to Ruby, one of the first things that struck me was the overall simplicity and clarity of the language. I couldn't help thinking that Ruby could serve as an excellent language to teach programming fundamentals. Chris Pine's "Learning to Program" tackles that very task. The latest title in the Pragmatic Programmers Facets of Ruby series, "Learn to Program" arms the reader with the basic skills and concepts required to write their own computer programs using the Ruby language.
The book begins with downloading and installing Ruby and then quickly gets the reader writing their first program - and it's not "Hello World". Pine instructs the reader on the basics covering everything you'd expect: numbers, strings, variables, type conversion, basic IO, methods, flow control, classes, and more. The author does a fine job making the material easy to read and easy to understand through his clear presentation and conversational tone. "Learn to Program" is chock full of simple examples, and this book is very well suited to sitting down with at your keyboard and working your way through each chapter. The chapters are short and can be absorbed quickly without bogging the reader down unnecessarily. Several of the chapters conclude with short programming assignments for the reader to attempt in order to apply the concepts just learned.
"Learn to Program" is written for those who have little to no experience programming. It is a fine introduction for the person who has never written a single line of code. It's no Dummies book though, and a certain degree of comfort and familiarity with computers is a prerequisite for getting the most out of the book. Pine never tells us exactly who his audience is, but it would certainly be suitable for the college student, technically minded adult or gifted high school student.
As much as I like this book, and I do like this book, there are a few things that could serve to complement it. First off, I'm surprised to find that there's no index. It's not a huge book and the chapters are well laid out, but it's hard to imagine the rationale for not including an index. Also, the book could stand to have some more assignments for the reader to try. They are there, but there aren't enough of them in my opinion. It would be nice to see a companion workbook to provide more problems to work through and to provide sample solutions for those problems. While "Learn to Program" doesn't read like a textbook, add the workbook and some lesson plans and I suspect you'd have the basis for a nice course in introductory programming.
While I suspect an argument could be made as to whether or not every vital Ruby feature was covered. I would conclude that every feature required to get the beginner writing code was presented. It's important when evaluating this book to keep in mind that its purpose is to teach programming and not to teach the reader how to become a master with the Ruby language. "Learn to Program" is a fine introduction to programming and demonstrates that Ruby is well suited for this task.