Tuesday 2 September 2008

Five Programming Books I Couldn't Survive Without

There's roughly 400 programming books on my bookshelf.  If I had to reduce it to just five, here are the books I just couldn't live without.
  1. Introduction to Algorithms - Cormen, Leiserson, Rivest & Stein.  This programming book provides in depth yet accessible coverage of many algorithms.  If I want to get the job done as quickly and painfree as possible, I reach for Introduction to Algorithms before Knuth's The Art of Computer Programming every time.
  2. Compilers: Principles, Techniques and Tools - Aho, Sethi & Ullman.  "The Dragon Book" provides an excellent introduction to compiling before getting stuck into the inner workings of analysis, translation, code generation and optimisation.
  3. The New Turing Omnibus - Dewdney.  Sitting atop the fun programming books category, Dewdney's book offers 66 articles covering a variety of computer science topics and recreational computing problems.
  4. Fundamentals of Operating Systems - Lister.  The way the structure of this book mirrors the structure of an operating system makes it an easier point of reference than books such as Krakowiak's Principles of Operating Systems.
  5. Advanced Spectrum FORTH - Thomasson.  Depite being written for a sadly obsolete platform, Advanced Spectrum FORTH remains one of the best FORTH programming books.  The source code for the dictionary provides a valuable resource.
Disagree?  Think I've missed out a classic programming book?  Drop me a comment below.

16 comments:

  1. Great books, indeed!

    ReplyDelete
  2. You left out OSDI and SICP, and I disagree that CLRS is a substitute for TAOCP--they are two different beasts.

    ReplyDelete
  3. Alice's Adventures in Wonderland, written for a slightly obsolete plateform (the brain), but still very good.

    X+

    ReplyDelete
  4. For those who aren’t desperately trying to look smart here’s a little key for the previous comment:

    OSDI: Operating Systems Design and Implementation by Andrew S. Tanenbaum
    SICP: Structure and Interpretation of Computer Programs by Harold Abelson and Gerald Sussman
    TAOCP: The Art of Computer Programming by Donald Knuth

    Oh, and CLRS is Introduction to Algorithms – C ormen, L eiserson, R ivest & S tein

    ReplyDelete
  5. Some of mine:

    K&R

    Bentley's "Programming Pearls"

    Meyers' "Effective C++"

    Wall's "Programming Perl" (the original camel book, not the perl v5. one.)

    ReplyDelete
  6. Thanks for the comments.

    Tanenbaum is not currently on my bookshelf. Perhaps it's time to invest in a copy.

    Abelson & Sussman. I confess I've never seen it. I'll check it out on Amazon in a mo.

    CLRS vs Knuth - as you said two different books. CLRS is great for implementing algorithms with minimum fuss. Knuth is best if you need a deeper analysis.

    The Brain - considering the current state of AI, I wouldn't say it's obsolete yet ;-)

    ReplyDelete
  7. I have to second SICP. It's the most mind-blowing programming book I've read.

    ReplyDelete
  8. I find it quite strange that the books everyone claims they "could not do without" are probably the least likely to be used in any given month. Yeah, I have TAOCP on my shelf too, and the last time I actually blew the dust off and read a few pages was over a decade ago when I was writing crypto code and needed some tight math loops in the days before crypto/math libraries were widely available and trustworthy.

    No, you are not digging into SICP for new insights this month, you are not referring to CLRS (because you are using the same algorithms you always use), and anyone claiming that they are writing their own compiler is either a bad liar or deluded.

    These may be classics, and everyone should read them at least once, but these are books whose location at the library you should know; these are not books that should be on your bookshelf. The only reason they are on your bookshelf is so that you can do some subtle bragging to others who might see them there...

    ReplyDelete
  9. The text of SICP is available free from MIT Press, there are also sets of downloadable course-lecture videos (along with course notes, etc.). Various people have blogged about going through SICP and some people have done the problems in other languages.

    Links to some of this stuff below:

    The text of SICP is available for free online from MIT Press:

    mitpress.mit.edu/sicp/

    Free SICP lecture video by the authors (in MPEG and DivX formats, via download or torrent):
    groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/

    Free SICP lecture videos from Ars Digita University (.rm (Real Player) files; downloadable): www.aduni.org/courses/sicp/index.php?view=cw

    Free SICP lecture videos from the current version of the course at Berkeley (in streaming Flash video and audio formats):
    www-inst.eecs.berkeley.edu/~cs61a/

    Blogging SICP (he got through the whole book):
    eli.thegreenplace.net/2008/04/18/sicp-conclusion/

    SICP in other languages:
    www.codepoetics.com/wiki/index.php?title=Topics:SICP_in_other_languages

    Enjoy.

    ReplyDelete
  10. @anonymous 14:02 - good point there. If I'm honest, these are the books I've actually used this month:

    Introduction to Algorithms

    Fundamentals of Operating Systems

    JavaScript Pocket Reference

    Mastering the 8088 Microprocessor

    Cheers,

    John

    ReplyDelete
  11. Hennessy and Patterson?

    ReplyDelete
  12. Seconding K&R. I wish that more language-specific books took a cue from the greatness of K&R and kept things as concise and elegant. So much, in so few pages.

    ReplyDelete
  13. ANSI Common Lisp - Paul Graham

    ReplyDelete
  14. Nice selection!. The Little Schemer is another fantastic book. It has the particularity of being writen in a very pedagogical style. Incredible fun book.

    ReplyDelete
  15. Code Complete by Steve McConnell :)

    ReplyDelete
  16. Starting Forth and Thinking Forth by Leo Brodie
    The Elements of Computing Systems By Noam Nisan, Shimon Schocken (must read)

    ReplyDelete

Note: only a member of this blog may post a comment.