[Note: parts of this message were removed to make it a legal post.]
In spite of its flaws, I also recommend "Beginning Ruby". I have a copy and
am using it to learn Ruby after wandering off in left field with "why the
lucky stiff"s online introduction that was entertaining but left a lot of
explaining missing. Walk through your code, guys, as you are explaining how
things work!!!
There are several weaknesses to Peter Cooper's book. The book has a slight
bias for the UNIX environment. I work on Windows XP, so that was an issue
for me. The $stdin.gets is not explained. Because of the enormous number
of topics, you get a feeling of being rushed and that a lot is being left
out because of a need to scope in. I felt that in Chapter 12 that Peter
could have tied things together better than he did. What calls what and how
his Eliza look alike all hangs together. Important details are left out,
such as what is happening in "class TestWordPlay < Test::Unit::TestCase" on
p. 316. Yes, he mentions that you are establishing a hierarchy between a
new class TestWordPlay" and Ruby system classes Test::Unit, (to use the
assist methods), and TestCase in an earlier part of the book, but it would
be nice to have reminded the student of that. It would have been nice to
have some reference to "regulare expressions" outside of the book. If you
go to Wikipedia,
http://en.wikipedia.org/wiki/Regular_expression, you find
code characters such as the "^" that mean something entirely different than
how it is used in Ruby. Here is a web site to test any Ruby regular
expression you write,
http://www.rubyxp.com/ I felt that the chapter 8 on
Error Handling had poor examples. And I wish that authors could avoid "foo"
in every book they write as it is never clear to a beginner if that means
something special and the joke is dead. Catching and throwing are not
clearly explained on page 187. Too rushed. The author needs to walk the
reader through each line of code and explain what is happening, instruction
by instruction. The book talks about escapting out of a block but the
example is not IN a block with code outside of it to show the logic flow
properly. Would be nice to have a chapter on queues, heaps, stacks, and
dequeues. Maybe applied to searching a binary tree. While Part 3 is
interesting, I will be picking up a separate book on Ruby on Rails to learn
that. So 62 pages could have been saved there to make room for that
essential but missing chapter on Ruby data structures. Chapter 15 on
Networking, Sockets, and Daemons....scream!...overload! Put Chapters 13
through 16 in a separate book. And improve the index.
Today I also put in an oder for Algorithms in a Nutshell by George Heineman,
and Programming Ruby 1.9: The Pragmatic Programmers' Guide (Facets of Ruby)
by Dave Thomas, which is the latest edition of "the pickaxe book".
Learning a new language is always work. Even after my 127th language it is
work. (Actually I lost count after I went over 100 back in the 1980s.)
No Sam