A Programmer's Bookshelf
An anonymous reader writes "With christmas just round the corner I have been looking for gifts for my geek friends. But what book? I recently found a simple page with one person's bookshelf and explain what's good and what's not. What do you think? Whats on a programmer's bookshelf? (or what should be and is not!)"
goedel escher bach d:
GENERATION 26: The first time you see this, copy it into your sig on any forum and add 1 to the generation.
The Mythical Man-Month by Frederik Brooks (clicky) has some very good insights which still hold true (the book was originally published in 1975).
It's hard to be specific when "a programmer" could write in a number of languages. Regardless, just about anything from O'Reilly is well worth the shelf space. I still have my original copy of "The Whole Internet"!
Joel on Software posted a very useful book list, which extends more to the management of programming than to any specific language. This makes it more generally useful than yet another C book.
Sigs are like bumper stickers.
I can't believe that in all this discussion no one has even mentioned the site "Book Pool" http://www.bookpool.com/ . This site is one of the most extensive places to purchase any computer books. I'd highly sugest browsing around there if you want to buy new books for a geek.
Utinam me logica falsa tuam philosophiam totam suffodiant.
Code Complete by Steve McConnell
The Pragmatic Programmer by Andrew Hunt and Dave Thomas
Refactoring: Improving the Design of Existing Code by Martin Fowler
The Mythical Man Month by Fred Brooks
The are a few off the top of my head that any programmer should read. I'm sure there are a few others. Most things after that are probably specific to certain areas and interests.
I recommend a Safari subscription. It provides online access to everthing by O'Reilly and a number of other publishers. My subscription has saved me huge amounts of time, since I can search and find useful information on all sorts of topics without leaving my desk.
Neither of these I would recommend in general, but they are both excellent books if you are dealing with the subject matter they discuss. They are both enjoyable reads and extremely useful.
Inside the C++ Object Model by Stanley B. Lippman. Lippman is one of the original authors of CFront (along with Stroustrup), the original C++ compiler which worked by translating C++ into C. This book explains how every C++ feature is implmented by the compiler: virtual functions, multiple inheritence, in-memory object layout, etc. If you are working on projects where the overhead of a pointer de-reference or virtual function call may be too much, then this book is a must read. Even if that doesn't describe you, this is still a suprisingly enjoyable read and will almost certainly help you at any job interviews for C++ programming positions.
Hackers Delight by Henry S. Warren Jr. This deals entirely with efficient bit twiddling. It has chapters on counting the bits set in a word, finding the first set bit, quick integer square root approximations, etc. Unless you're working with embedded systems or otherwise need assembly-level optimizations, this book just serves to obfuscate your code. On the other hand, it's quite a fun challenge to try to figure out the algorithms without reading the explanations.