Book feedback!
Ethan Glasser-Camp
glasse at rpi.edu
Wed May 25 12:29:23 EDT 2005
Hey!
I may be out of line in offering these my thoughts, which are mostly critical. I
may be criticizing because I am too lame to create anything of my own. I may be
criticizing work too incredible for me to comprehend. Perhaps I am too
inexperienced, and my criticism is simple hubris. Why has stated (in an email
posted only today, I think) that he is not making sweeping changes to the early
part of the work (although I don't know if this is permanent) -- if my
suggestions are taken to heart, he may become discouraged and abandon the whole
affair, which would be disastrous. If for these or other reasons my feedback is
not desired, I apologize thoroughly in advance. My honest feeling is that the
Poignant Guide is brilliant, and I will probably be calling people "Smotchkkiss"
for a long time (how do you pronounce that?). I debated about whether to write
this email when I do not feel qualified to write it, but I decided that if those
of you on the list can accept this email as a genuine attempt to express my
feelings, it will at least be data, even if the advice is crap. I know that if I
wrote something like this, I'd want feedback, no matter what flavor.
Background:
I am a programmer, an undergraduate in computer science and psychology at RPI,
which is a technical school in New York state. I have been programming for a few
years, including a few years in high school, originally in C++ and then C but
recently in Python. I like to write sometimes. I hate the outdoors.
Factual:
Chapter 5 states that Paij-ree reuses his LotteryDraw class -- but LotteryDraw
explicitly draws a LotteryTicket rather than an AnimalLotteryTicket. If you call
AnimalLotteryTicket.score on a LotteryTicket, you'll always get zero, which
means Paij-ree is cheating Merphy out of his money. Maybe you should state that
Paij-ree reuses the code with modifications?
In Chapter 6: "He was airborned and yelled, “Tallyho!” But he held too tightly
and the cloud evaporated under his arm and sent him back down with a short hop."
-- airborned should be airborne? "Airborne" is an adjective, and technically
speaking can't be put in past tense, though this is what artistic judgement is for.
"# The class_eval method runs code is if inside a class definition." -- I think
"is if" should be "as if".
A regular expression to match 'truck' case insensitively is introduced:
puts line if line.match( /[Tt][Rr][Uu][Cc][Kk]/i )
/i on this regular expression, though safe and probably wise, may be unnecessary
-- more to the point, this is the paragraph before introducing the /i option, so
a reader may get confused.
Philosophical:
I think this book is brilliantly written and very entertaining. As for learning
Ruby, I'm not sure I got too much out of it. Part of this was that I wasn't sure
at what level to be reading this book at -- the light writing style makes it
very tempting to think of this as an introductory programming book. On the other
hand, concepts are introduced very briefly (for example, metaprogramming in
Chapter 6) and the ability to consider parts of a program outside of its context
is assumed (see chapter 5 and the use of Endertromb::make( wish ) without any
explanation of what it does or how it works).
I think the comics are hysterical, and I especially liked the way the text is
drawn differently for each character. The use of colorful mnemonics to explain
syntax is inspired (for instance, the caterpillar analogy in chapter 2) -- this
is one of the reasons I assumed this book was targeted at those who had never
programmed before.
When reading this book, the comparison that leapt to mind was between this and
Dive Into Python. Clearly this book does not set out to be another Dive Into
Python; instead it forsakes dry program analysis in favor of epic and meandering
storytelling. On the other hand, Dive Into Python does a very good job at
analyzing entire digestable programs in a fashion that teaches those already
familiar with programming, a new language. W(P)GtR does not have numerous
examples of each language feature at work, which would have been helpful to a
journeyman code-monkey trying to learn Ruby, nor does it follow step-by-step the
progress of the code on solving the problems posed. While I wanted to read more
of the story being told, I needed to spend more time with the code to understand
it and become comfortable with it.
I finished chapter 6 wondering: Who was this book meant for? Is it for
beginners? If so, perhaps narrowing the focus and explaining the concepts more
would be helpful. I would suggest this route because I worry that not many
experienced programmers are going to read a novel in order to learn a
programming language -- and, as I have stated, I think the prose is of the
highest caliber. In any case, I think more time spent with the pieces involved
and doing more detailed analysis of the programs listed would help those trying
to learn Ruby to piece together the pieces, remember that not all function calls
have parentheses, and so forth.
I look forward to reading the rest of the book. Best of luck!
Ethan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 256 bytes
Desc: OpenPGP digital signature
Url : http://rubyforge.org/pipermail/poignant-stiffs/attachments/20050525/1952d517/signature-0001.bin
More information about the poignant-stiffs
mailing list