Which programming book you just couldn’t stop reading from start to end?

184 points by umenline ↗ HN
This question is something that I really like to know... did any one have /can tell me about Programming book related that he/she just couldn’t stop reading from start to end. My self I was reading a lot of programming books but never as “book” from start to end Always like reference always half of the book I never opened.

155 comments

[ 3.1 ms ] story [ 195 ms ] thread
With programming that can be tough. But when I as growing up read Beginning C by Ivor Horton cover to cover.
When I first decided to learn my first programming language, I bought a Wrox PHP for Beginners books and literally read every word (and practiced every example) over a weekend.

I learned two things from doing this: 1) PHP is a great language for beginners and 2) The details you read in a book like that won't stick with you forever, and you'll have to use the book as a reference anyways...

"Numerical Recipes in C"

This was the first programming book that actually made me laugh at times. The writer's style is wry and very accessible. His strong opinions and commentary kept me glued. Admittedly I didn't read every word but IMHO this is one of the classics.

Ditto for Sedgewick's "Algorithms" book.

I have chill running down my spine from thinking that someone read Numerical Recipes from cover to cover without putting it down. No offense - but it's an incredibly dense book. In particular the code samples take a lot of effort to really chew through, at least for me.
I treat Numerical Recipes like a bank robbery: get in and get out.

I look up the ONE solution I need, read the associated 2-3 pages, and put it away for another few months.

JavaScript: The Good Parts.
I had a high school student who fell in love with this book!
This book was terrific and restored my faith in Javascript.
(comment deleted)
_The Little Schemer_, _The Seasoned Schemer_, _The Little MLer_. Those are made to be burned through, though. Probably not one sitting (many ideas need time to sink in), but only a couple sessions each.

More recently, _Land of Lisp_. I already knew much of the material, but a very fun read. (Nice stickers, too!) I'd suggest this as a starting point for people new to Lisp, maybe even before _The Little Schemer_ (!).

I read most of chapters 3, 4, and 5 of SICP in one night and the following morning. (I'm on the second pass, doing most of the exercises, and nearly done with chapter 2. I'm taking a break, though.)

_Thinking Forth_, by Leo Brodie et al.

_The Awk Programming Language_ by Aho, Weinberger, and Kernighan.

_Programming Pearls_ and _More Programming Pearls_ by Jon Bentley.

I couldn't put _CTM_ (http://www.info.ucl.ac.be/~pvr/book.html) down, either. It took a while to get through, though - It's quite large. I tend to read two or three books in tandem and switch between them, but I was on that sucker 100% cover to cover. What a wonderful book!

I'm currently reading _Erlang and OTP in Action_ by Logan, Merritt, and Carlsson. I just got it in the mail yesterday, but quite good so far.

Also: When you're reading hard programming books, do the exercises! You don't have to do them all, though at least half is a good idea. It reinforces what you've read, and shows you what you actually know vs. what you just think you do. I tend to read the book first, then do exercises on the second pass.

I definitely agree with the Schemer series. I wouldn't leave off the The Reasoned Schemer, I've been working on that book for over a month now. Better than coffee. Might actually finally understand monads.

SICP is astounding. Thoroughly worked through the first three chapters years ago. I'm constantly revisiting the later chapters.

I haven't worked through CTMCP, but that book is written in a lovely, compelling style with eye-opening statements on nearly every page. I'm also also finding that it's the ultimate Clojure book.

We've already talked about _The Reasoned Schemer_ in another thread. :) I may give it a try again eventually. Clocksin's _Clause and Effect_ is a similar book, in Prolog.

Monads aren't that hard, they're just one step too general - at first, it's not clear what their examples have in common. It helped when I realized I'd already written "monadic" code in OCaml and Scheme, and with pipelines in shell scripts. (Getting away from the avalanche of category theory terminology mixed with nonsense about burritos and space suits also helped. The epiphany itself matters, not the stepping stone!) Also, starting with a simpler monad (e.g. Maybe) makes the plumbing clearer.

For interpreters / compilers, I prefer the treatment in EoPL to SICP's. There's an awesome "converting an interpreter to a continuation-passing-style interpreter to a CPS-based compiler" section in (only) the first edition of EoPL.

What really impresses me about CTM is how much deep material it ties together, from all over the place, yet the book is still extremely easy to follow. Somebody just starting in CS could benefit tremendously from reading its take on concepts when their other textbooks stump them. It's one of the most readable textbooks I've seen. (PAIP is another.)

To understand monads in a context where they are both useful and necessary (Haskell) I highly recommend the later chapters of Learn You a Haskell for Great Good (http://learnyouahaskell.com/). I'd read through all the different analogies (burritos, space suits, etc) and it didn't click until LYAHFGG showed how they are a logical way of attaching some extra context to a bit of data (or more generally a computation).
CTM is fascinating to me. It was my first real exposure to the ideas of including different paradigms in a single language as appropriate.

I seriously considered quitting my job or taking a leave so that I could spend a couple of months with CTM and SICP without being distracted by work.

Glad to hear Land of Lisp is fun. It's on my TBR list.

The Little/Seasoned Schemer books where the first programming/technical books that when I finished them I had that same feeling you get when you finish a good novel. Land of Lisp is the first book I've picked up since then that's given me the same feeling so far.

Since the first 2 schemer books can each be read in about a week (they shouldn't be read faster) it's a shame for anyone not to read them.

N.B. Use asterisks in place of underscores and you'll get actual italics, like this.
I know, but I had "underlines for books, quotes for shorter works" hammered into me.

Incidentally, "NB." is the comment marker in J (http://jsoftware.com/). That makes me smirk.

Earlier in my development as a programmer, skimming books and hacking was standard. But, as programming became ingrained, reading on the topic became more and more enjoyable. Appreciating the intellectual approach, holding the ideas in my brain without needing a computer to figure out the concepts upped my appreciation of good writing rather than tutorials.

Books that I've really read and enjoyed:

JavaScript the Good Parts http://oreilly.com/catalog/9780596517748

Coders at Work http://www.codersatwork.com/

Programming Erlang: Software for a Concurrent World http://www.pragprog.com/titles/jaerlang/programming-erlang

On Lisp http://www.paulgraham.com/onlisp.html

The common theme: the authors reflect on the wyhs not just the hows. Programmer personality matters.

Not exactly.a programming book, but I just read "Design with the mind in mind" and could not put it down. More about usability, but it has contributed to my programmimg in that it helps me think more about the overall feel and flow of a process, and how the brain comprehends things such as large dara sets and procedures.
Why's (Poignant) Guide to Ruby.

You may already have heard of it, as it's a classic in the Ruby community. It feels more like a work of art than a mere programming book, but you'll learn an awful lot while reading it. :)

As somebody who knows several other languages but not Ruby, I didn't learn that much about Ruby from that book. It's a fun read, but I felt like I mainly came away with in-jokes and minor details about syntax. I wonder if it has a bigger impact on people new to programming.

_Land of Lisp_, for example, teaches quite a bit about the language while still being fun.

It was entertaining and I found some of the clever ways he described syntax useful for remembering, i.e. the pipes form a chute which slides the variable into the block.
I have seen a couple "cookbooks" that pulled me through pretty quickly. I like to see things that are neat, or tough to do layed out and in the process, find new toys to play with. It feels like reading a good magazine.
Effective Java was, for me, one of the programming books that was simply unputdownable! I've always been a fan of Joshua Bloch's work and this book is a real gem for any practicing Java pro!
Programming books are rarely page turners. I cannot think of one book to add to the (currently empty) list here. I find most programming books to be boring and discursive. Far too many fall into a pattern not too far removed from romance novels where, inevitably, the alpha male hero beds the heroine by chapter three. And if software engineering is considered programming, many of those books seem to be anchored in the occult where certain spells produce magical results for arcane reasons.

Personally I dislike tutorials and the pedagogy that comes along with that style. Even when well done they seem wordy presentation of the trivial and obvious.

Serious computer science books (e.g., Knuth's Art of Computer Programming, Hank Warren's Hackers Delight) take careful reading and study; I read them for pleasure, but it is a different pleasure that I get from, say, a Lee Child's Jack Reacher novel.

I think there are good reasons for this situation. The interesting aspects of programming are complex, involve a deep understanding of multiple levels of abstraction, and require considerable background knowledge. This is incompatible with a mindless read.

The average programming book is pretty awful - many seem to be sold by weight. If you skew towards those recently published, there's a very high concentration of instantly obsolete books that cover surface details of the current incarnation of rapidly changing technology. There are real incentives for the programming book publishing industry to churn out tedious garbage: People buy 'em, instant obsolescence means the same people replace 'em.

Older books aren't necessarily better, but those remaining have been through a generation or two of garbage collection already, making it easier to find the good ones. Excellent books have been published recently, of course (http://www1.idc.ac.il/tecs/, http://landoflisp.com/), it's just easier to find them in hindsight.

Books about parsing techniques* rather than ANTLR (or whatever) specifically, language semantics and implementation techniques rather than an awful 200 lb. Wrox book with a mug shot on the cover, etc. tend to stay relevant for much longer. Rather than reading yet another API guide, check out _The Art of the Interpreter_ (http://repository.readscheme.org/ftp/papers/ai-lab-pubs/AIM-...). Also, CiteSeer (http://citeseerx.ist.psu.edu/) is a gold mine.

I haven't gotten _Hackers Delight_ yet, but it's on my list.

* Recommended: Dick Grune's _Parsing Techniques, a Practical Guide_. Lots of deep content, but would still be worth it for the bibliography alone.

I laughed out loud at the attribution asterisks in _The Art of the Interpreter_. Excellent to see humor in an academic paper.
I always crack up at GLS's joke whenever I see the word "fellow".

There is something like "Gerry Susman is a research fellow at MIT. Guy Steele is a jolly good fellow".

All the "HUNOZ" etc. variables make me smile, too.
> I find most programming books to be boring and discursive.

I was of the same opinion until I read "Programming Pearls" by Jon bentley. The way it opens up a problem statement, thereby making you think is truly fascinating. If you haven't read it, please do.

The sequel (_More Programming Pearls_) is good, too. Judging by the discrepancy between the used prices of PP (~$20) and MPP (<$5), I'd guess most people don't even know it has a sequel.
Jon Bentley's books are outstanding but don't fall into the quick read category in my opinion. They are complex and need careful study (and working the exercises) to get all you can from them.

His 1982 book, Writing Efficient Programs, and the 1981 precursor, Writing Efficient Code, ought to be read by every C programmer. Sadly, they are now out of print and hard to find. Writing Efficient Programs is a breezy tour of the tricks of the trade, but it is a serious list of hints (some subtle, some not) for making efficient programs.

I left _WEP_ out of my list just because it lacks the requested I-want-to-read-it-osity -- it's a very fine book. (IWTRIosity is sort of orthogonal to whether a book rewards careful study. Knuth and SICP have both.)
This may not be a programming book but I could not put "The Elements of Computing Systems" down for the first 5 chapters. They are just brilliant, it wasn't a tutorial type of book. The authors don't give you anything actually. Just a bunch of specs and some background knowledge. But when I got down to it, that was all that mattered when presented in a structured way (and of course some reading and questions on the forum).
ANSI Common Lisp.

1st time: WTF? 2nd time: the light went on.

I read Gallmeister's POSIX.4 with great zeal.
This had more to do with me just having gotten hooked to programming than the book. Still, the book VB 6 Step by Step totally rocked and contributed to me pulling all nighters programming random stuff in middle school.
"Coders at Work" is very well written and flows like a good novel. You must be a real hardcore hacker to enjoy it, though :)

[Edit: I've actually posted a short review of it after I finished reading it - http://eli.thegreenplace.net/2010/01/09/book-review-coders-a...]

The interviews are thought-provoking, particularly the ones with Peter Norvig and Joe Armstrong. Seibel expands on some recurring themes on his blog (http://gigamonkeys.wordpress.com/category/books/coders-at-wo...). My wife also liked _Coders at Work_, though she has a lot of experience doing interviews for documentaries, and there were a couple times she was frustrated about comments Seibel should have pursued further.

_Masterminds of Programming_ wasn't very good, though I enjoyed the Chuck Moore interview.

I wish Arthur Whitney had been in _Coders at Work_.

Personally I enjoyed the interviews with Brad Fitzpatrick and Donald Knuth the most, although Norvig was also pretty good.
I wish Arthur Whitney had been in _Coders at Work_.

I nominated him but he fell through the cracks. I think the book is weaker for it.

There's a wonderful story (which you probably know but it's worth repeating) that Roger Hui, the J guy, was asked who the best programmer was. He responded by saying that Peggy Lee was once asked who the best jazz singer was and she responded, "You mean besides Ella?" (By analogy, Roger's answer was "You mean besides Arthur?")

> You must be a real hardcore hacker to enjoy it, though

Why do you say this? I thought it was very accessible.

I finished reading this today, really enjoyable book, very insightful and often thought provoking - it's nice to hear topics from people who have differing perspectives.

Not sure what you mean by hardcore hacker though, unless you mean....most of the programmers in the book come from an era where assembly code and primitive machines were the only tools they had?

As books about programming go, it's pretty accessible to non-programmers. There's plenty of content about motivation, rewards, the relation between technology and culture, etc. It isn't just an avalanche of technical minutiae.

I found the part about L. Peter Deutsch (mostly) giving up programming for music particularly interesting.

Kernighan and Ritchie's C Programming Language, Second Edition (when it came out in the late 80s).

Expert C Programming, Peter van der Linden (a decade later).

Effective Java by Joshua Bloch.

I tend to get too distracted to give many books the cover-to-cover treatment. Some great ones that made the cut were:

1) Metaprogramming Ruby.

2) The Art of Rails.

3) Ruby Design Patterns

4) Services-Oriented Architecture in Ruby

These stick out for me. Even if the last one in the list felt a little "rushed to production", it still covered important topics you won't find anywhere else. Plus I find when a book has typos (either in the text or in the code), that just makes me engage with it a little bit more.

> Plus I find when a book has typos (either in the text or in the code), that just makes me engage with it a little bit more.

Really? I wasted almost an hour double-checking my code due to a typo in an algorithm in _Programming Collective Intelligence_ (pg. 35, should end in "return num/den", not "return 1.0-num/den".) That's just sloppy. I added it to the errata page (http://oreilly.com/catalog/errataunconfirmed.csp?isbn=978059...).

It makes me feel that while the author's explanations are pretty good, the code samples are rather dodgy. I've switched to looking up the relevant mathematical formulas and converting them to code myself.

that book is full of errors =/ I'm not a regular python user, but I've also heard that the code contained within the book is not very "pythonic" and is really meant as a pseudocode. still no excuse for it to be incorrect.

when a book has typos, it makes me want to throw it in the fire.

I'm a bit rusty on subtleties of standard Python style these days (I mostly switched to Lua around Python 2.5 or so), but I got the same impression. Still, the conceptual explanations in the book are pretty good.
Some typos are okay, but in some cases there obviously can be too many.
While mistaking e.g. "there" / "their" / "they're" annoys me, I acknowledge that I'm stubborn about that stuff. Messing up details in a big formula or algorithm that people are going to use as a reference is just sloppy, though. I really appreciate authors who write in a (possibly personal and ad hoc) literate programming system that automatically extracts and tests all code samples.

I don't understand your "makes me engage with it a little bit more" reaction, though. I really don't. Could you explain?

Hey, I wrote the Art of Rails. You just made my day putting it on your list. Thanks a lot, ludicast.
Sinclair ZX Spectrum BASIC Programming - the orange book with city in the skies.
C# in Depth by Jon Skeet.

Pro C# 2008 and the .NET 3.5 Platform by Andrew Troelsen (there's a newer edition about .NET 4 which I haven't managed to read yet)

You read that 1300+ page tome in the manner described in the OP? I doubt it :)
Anything by Bruce Eckel. Very clear and coherent.
programming c, javascrpt the good parts ... i recommend reading them more than once, both are a work of beauty
1) Code Complete

2) The Pragmatic Programmer