Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Unusual? Certainly. Best? Not for me.

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?



Agreed. It takes maybe a half hour of experimenting to know enough of the syntax of a language to start being mildly productive, and the rest of the time is spent trying to learn the standard library and language specific idioms -- which can take years. This is one reason why I've always found the PHP.net website to be useful, despite the fact that PHP has a significant number of serious warts. Admittedly, it could use a lot of work, the comments are less than spectacular, and some of the things it suggests are downright dangerous, but it's an excellent reference for the list of functions, how to use a function, and often times when to use a function -- unlike many language intro and function reference works. Let's say I want to do a DNS lookup. The PHP docs for dns_get_record are overly complete, you're well on your way to starting to use that (the problem with PHP is deciding _which_ of the four or five functions that do the same thing you should use, not a walk in the park either, I know). At ruby-doc.org, the docs for Resolv::DNS don't appear to include any examples, and the method prototypes listed link to the code for the method. Why would I want to see that?! I'm using a library so I don't need to know how the code works. I learned perl and a lot of other languages from complete, working programs, not samples a handful of lines long that performed contrived actions just for the sake of having an example.


Poignant is fun. That's all.

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.


There is a second edition of The Ruby Way released last year(2008).


Yes, I meant mainly that it doesn't cover Ruby 1.9 or some newer libraries. While the Ruby landscape has changed a little since it came out, The Ruby Way still covers the core language and many still relevant libraries quite well.


Same. The first time i tried to read it I actually thought it was a joke.


I don't think I even realized what it was.


> You know what the "best" language book I've read is? K&R

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".


With all due respect, if you had such trouble with Poignant, the you probably also would have had a hard time with Ruby. Not to imply that you couldn't understand Ruby or write in Ruby, but just that Ruby has a very distinct character, a personality almost, and I suspect you and Ruby would not have gotten along.

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...


I don't believe I agree. Ruby is straightforward; I don't have any trouble at all understanding it. I enjoy _why's cartoons. That doesn't mean that reading _why's cartoons is in any way a good way (for me) to learn Ruby, which is a counterexample to your "probably".

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.)


I didn't mean to imply that Ruby was difficult (though I could see how you might read my reply that way). I merely meant that Ruby embodies a certain philosophy of programming and programming languages, and, while _why is an extreme example, he is still a very accurate embodiment of the Ruby philosophy.


Claims like this bother me, whether about Ruby or Python. a programming language is simply that -- a language used to program computers. It doesn't have a personality. It has a distinct syntax, methods, etc. It is the community which gives it a personality, if any.


Matz would disagree with you:

"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...


Honestly, I don't even agree with me. That comment came out wrong. What I meant to say was that I feel it is obtuse to say something like "you will probably have a hard time with Ruby if you have a hard time with this goofy book."


Distinct syntax creates a personality, similar to how haikus read differently from sestinas. The form is the function is the attitude is the personality. They're one and the same.


I enjoyed the unrelated sidebars in _why's Poignant Guide, but I don't think I really learned anything useful from it. The pickaxe book was more helpful for me. I've been using ruby for more than 3 years now and I really enjoy it, so I get along with it OK.

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.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: