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"!
C++: The Complete Reference by Herbert Schildt & Thinking in C++: by Bruce Eckel.
In my opinion, the best c++ books out there.
My mother never saw the irony in calling me a son-of-a-bitch.
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.
This book is on my shelf and is a must read for anybody working in tech.
It is not a technical book. It is a non-fiction novel about a team of engineers building a mini-computer back in the early 1980s. The book might be 25 years out of date from the technical point of view, but few books capture the essence of the engineer's mind and commitment as well as this one does.
Life is like a web application. Sometime you need cookies just to get by.
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.
As an aside my [older] translation begins with "I am a sick man... an angry man... an unattractive man. For whatever reason the newer translation substitutes wicked for angry. Perhaps someone who understands more Russian would know why.
The Russian word is zloy, which can be translated both as wicked and angry among others. Dostoevsky uses zloy a lot, so the choice is quite significant. I don't know English enough to advise the best choice though.