The Most Unusual (and Best) Computer Language Book I've Ever Seen.
poignantguide.net
poignantguide.net
I had some time this past summer and decided that I wanted to experiment a bit with Ruby. I tried Poignant three or four times, and each time I would put it down after half an hour, with the same thought - "Why is this book, widely regarded as the One True Way to learn Ruby, fucking around so much? I don't want foxes and cartoons, I want syntax, rules, conventions, and information."
Maybe it's just me, but the way I tend to learn a new language is with a bunch of docs on one screen, and an IDE/REPL on the other. I read some stuff from the doc, try it out on the other screen, and move one. After a few units of time doing that, I'll write up a trivial project to try and make the various bits I've learned work together. Once that's done, I'll have a sufficient grasp of the syntax and general themes of the language that I can dig deeper into various parts of it to learn what I need to keep going.
You know what the "best" language book I've read is? K&R, ore more precisely, K&R2. It gets to the point, and tells you exactly what you need to know about what you looked up in very clear and exact language. It doesn't hold your hand, and it doesn't make you read about foxes.
Poignant always seemed like it was designed for someone who had no idea what programming was and wanted to end up being somewhat fluent in Ruby. That's good and all - there's certainly a market for that - but not what I look for when I'm in the market for a book on a programming language.
EDIT: Why the downmod - casual use of the f-bomb or contravention of established orthodoxy?
For me, it's that way with Python. Honestly, Python is not fundamentally different from Ruby except this: In Python, there is "one right way". For some programmers that's a saving grace, for others it's akin to a death sentence. To each his/her own...
Ruby is hardly difficult.
(For the sake of anecdotes: I find Python to be stultifyingly simplistic, with a number of negative features, and generally poor libraries. I find Ruby to be the wrong balance between dynamism and performance. I find both of them to lack syntactic abstraction.)
To this day I still sometimes think that I should trudge through all of the poignant guide, but then I remember what a tedious time I had and decide not to.
"I believe people want to express themselves when they program. They don't want to fight with the language. Programming languages must feel natural to programmers. I tried to make people enjoy programming and concentrate on the fun and creative part of programming when they use Ruby."
http://www.linuxdevcenter.com/pub/a/linux/2001/11/29/ruby.ht...
Probably the best book for really learning Ruby is The Ruby Way by Hal Fulton. Hal clearly gets Ruby.
The book is thorough (although possibly a little out of date now), introduces a lot of idiomatic Ruby, and has just the right amount of geeky inside jokes.
I also loved K&R. I like concise and precise books about languages. For me the fun part is the ability to make you "feel" the language by practice. I like when I can do something, and do it in a new way in a project of my own.
Recently, the best language learning book I read was "Real World Haskell".
It's great because you read it because you enjoy it, and then you happen to learn Ruby in the process.
It also has some interesting analogies, examples, and ways to remember things. When talking about how block variables go inside |pipes|, he says:
I like to think of the pipe characters as representing a tunnel. They give the appearance of a chute that the variables are sliding down.
Much better at helping you remember the syntax than "block variables go in a comma-separated list which is enclosed by pipes" like you'd find in a normal book.
I remember picking up 'The Ruby Programming Language' written by Matz, got to the 2nd chapter before I hopped online and found the poignant guide. Made for a much more interesting time learning Ruby.
As I said about this product then, taking 3 tabs of LSD should not be required before reading a “how to program in this language“ book. The cartoons are great, but if they had some bearing on the content e.g.
3.times{ puts 'chunky bacon' }
then I wouldn't feel so much like I was sitting through some performance from the gifted kid class which is sort of boring and semi-insulting: Why yes, imagining what it would be like to be a butterfly at Valley Forge is very creative, but is neither dramatic nor historically enlightening (cf. Beavis and Butthead watching Beck's “Pay no Mind”).
I'm not somebody who lives in the world of programming, and this is the only guide to coding that I've ever read and learned from. _why phrases things in ways that make their concepts easy to grasp and he makes for a compelling read. People who insult that or call it drugged-up miss that he's not writing a technical guide. He's writing a poignant guide, and that means that the larger goal is getting people really emotionally invested in the language. You learn the bare minimum to the language, which is enough so that then you can go on and find technical manuals, understanding enough to not be instantly turned away.
I hate tech manuals. I use a few reference books, but I can't pick up a "Guide To X Language" and get very much from it. A guide that makes coding fun is exactly what I need.
I had an HR friend of mine trying to make sense out of some data, and wanted to contract me to write a really simple script to make some sense out of his flat file data.
I didn't have time, and since he wasn't an idiot, I figured he could take it on himself, and gave him a link to the poignant guide, which he claims worked like a charm.
Now he's making me justify my salary to him.
For people who already know programming concepts, and just need to know syntax and what's different about Ruby from what they already know, I think the poignant guide is the long way there.
For this crowd, I understand the bitter reception.
If you want an example of excellent technical writing, consider Paul Graham's 'On Lisp' or 'ANSI Common Lisp'.