A Programmer's Bookshelf 362
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!)"
first post (Score:5, Informative)
PARENT NOT OFFTOPIC! (Score:5, Insightful)
Other favourites include Capital by Marx, Crime & Punishment by Dostoeyevsky, Also Spracht Zarathustra (Nietzsche), The Fountainhead (Rand), The heart of a dog (Bulgakov) and Dubliners (Joyce).
If you're a programmer, the last thing you're going to want to read are code books.
Re:PARENT NOT OFFTOPIC! (Score:5, Insightful)
Other favourites include Capital by Marx, Crime & Punishment by Dostoeyevsky, Also Spracht Zarathustra (Nietzsche), The Fountainhead (Rand), The heart of a dog (Bulgakov) and Dubliners (Joyce).
Those books are a little heavy to digest. I don't know about most people, but I would not want work as a gift, then to feel obligated to read 700 pages. I've read a few books by Dostoevsky, and they are not christmas books! Christmas should be about having fun, not getting a headache reading.
If you're a programmer, the last thing you're going to want to read are code books
I agree. It is like giving your mom a skillet for christmas because she cooks for you.
Picking the right gift requires knowing your friend. One of the BEST gifts I ever recieved was from a neighbors wife. She is an awesome baker. She filled up a tin with homemade cookies, her daughters helped decorate the tin. It was a gift they put their hearts into. They spent a few hours at my place, it was nice to talk, to listen about their year, and what they were planning for the new year. Fellowship is the best gift.
I also love getting christmas cards from friends who have moved away. It is a nice way to keep in touch with people.
Remember, it is the thought that counts. The gift is not important. What is important is someone cares about you.
Re:PARENT NOT OFFTOPIC! (Score:3, Insightful)
This is why I buy people books -- I buy them sometimes challenging, sometimes light books, but its an interesting effort to try and match a book with a person properly. There are people I know who would be insulted by a book of less than 500 pages. Others would be insulted by a book with more than 20.
hold that thought (that "counts") (Score:4, Insightful)
I wish people wouldn't waste money buying me gifts. If they spent five minutes talking to me about something they know I am really interested in, that would be worth far more. The "thought" that counts is a respect for a person. Giving wine to someone who never drinks it, giving lingerie to your wife (instead of asking for her wearing it as *your* present), giving a CD of music reflecting your religion to a couple of atheists, giving candles or "zen rock gardens" to people who aren't interested, checking off the names on a list, that ain't "the thought that counts"-- it's the thought that adds useless junk to an already crowded home!
I've made the mistake myself in the past. These days I beg people not to give me gifts and (because my wife loves Christmas so much) I put in effort getting stuff for her that reflects her interests, even when I don't like the stuff.
Everyone else, just give money to charity!
Re:PARENT NOT OFFTOPIC! (Score:3, Funny)
Had to read that one twice - missed the 'from' first time.
Re:Try "Notes from Underground" (Score:3, Informative)
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.
Fountainhead *shudder* (Score:3, Interesting)
I had to read The Fountainhead for English in high school and I have decidedly mixed feelings. On one hand, it was interesting to read from an architectural perspective. The characters, on the other hand, exist not as people but as archetypes. But then again, that's the case in almost all of Ayn Rand's literatur
And just as importantly... (Score:4, Funny)
Nice to see that he's got his Knuths... although, if he's like me, they get opened about twice a year.
Re:And just as importantly... (Score:3, Funny)
Eivind (Eek).
Re:And just as importantly... (Score:4, Funny)
Now here's a fine tome [pmdapplied.com]. I hear the author is a really cool guy, too.
Re:And just as importantly... (Score:3, Funny)
Re:And just as importantly... (Score:2)
One of my favourite authors at the moment is JM Coetzee. He just gets to the point when it comes to writing about life. Somewhat relevant to this
I think the book that has stuck in my mind the most in the last couple
Sadly... (Score:3, Funny)
Frederik Brooks (Score:5, Informative)
Re:Frederik Brooks (Score:2)
Re:Frederik Brooks (Score:3, Informative)
Re:Frederik Brooks (Score:3, Insightful)
I seriously walked away from it going "someone had to write a book on this?" because it really seems more like a book for managers who don't understand that people aren't all the same (so don't have the same abilities and/or skill levels) and that the more people you have, the greater the chance for them to get in the way of each other after a point.
There are so many options (Score:5, Informative)
Re:There are so many options (Score:3, Insightful)
Re:There are so many options (Score:5, Insightful)
the clear writing style and tidy code snippets are an example to all.
Exactly and I wish other writers could emulate that approach rather than trying to write as many pages as possible. Take any C++ book and compare the section about the basic datatypes to K&R, usually 5 to 10 times the number of pages and K&R are still easier to understand.
And it's not only programming books, you find the similar style in other fields of science too. And it's rather consistent, making me believe that most American publishers of technical books pays their authors at a per page ratio.
Re:There are so many options (Score:5, Insightful)
For those just tuning in, "K&R" is shorthand for Kernighan & Ritchie's "The C Programming Language," and it really is a great little book. However, part of the brevity and clarity comes from the C programming language itself. Try writing a similar book about C++, and even with the same eye for brevity, you'd end up with a book five or six times as long. Ten times if you threw in the STL.
Some people have claimed that this book should be required reading for programmers. Others have countered that the book should be required for authors of programming books. Let me take it one step further and suggest that it should be required reading for authors of programming languages. If the language you're designing cannot be effectively and similarly summarized given the K&R treatment, then it may be worth it to simplify things.
I've become a huge fan of Python recently. As proponents claim, it's one of a very small handful of languages where you can keep the entire syntax in your head. I'm not claiming that Python is the ideal language, but merely that other programming languages should strive for similar simplicity.
3 names, "Gödel, Escher, Bach" (Score:4, Interesting)
It's a very common book and can be acquired cheaply on amazon [amazon.com], ebay [ebay.com] and the wiki [wikipedia.org].
I also heavily recommend getting to know this site [hamiltonbook.com] if you're willing to search through lists of books for good deals.
Re:3 names, "Gödel, Escher, Bach" (Score:2)
Don't feel bad. I've read it about three times (the first time, for a college course devoted to it!), and I still don't get all of it. In fact, every once in a while I think that I've lost parts of it that I thought I'd understood before, like filling in a jigsaw puzzle while someone secretly sneaks up and removes pieces you've already placed.
Still worth the effort, though.
Gifts for Christmas (Score:5, Insightful)
Just because your friend is a geek does not mean a book is the best gift! Picking tech books can be difficult. You need to know what your friend is interested in. If your friend knows the topic a book covers, it won't be useful. If the book is outside the scope of what your friend does, the book won't get used. Even within a language, there are so many topics that just because you hit the right language, does not mean the book would be useful. If you want to get a book, but a cheap $7 trashy novel that will be filled with laughs, and add a $50 gift card at your local bookstore. That will probably be cheaper than some of the $70 books out there. The cool thing about giving the $7 novel is you're giving a piece of yourself. It should be a book that made you laugh and think. I'd suggest Catch-22. It will provide lots of laugh out loud moments. You should pick a book you liked and want to share with your friend.
Christmas is not about gifts or materialism. Christmas is about celebrating the birth of Christ. Spend time with your friends, listen to how their life is, their year. Celebrate with them. Be happy. That is the greatest gift you can give. People don't need more objects. People need to feel loved.
Re:Gifts for Christmas (Score:2)
Thanks the new 'War on Christmas' meme, Christmas is now about body armor and vitriol.
Buy your Christian geek an E-Tool. No, that's not a trendy electronic gadget, it is an 'entrenching tool' (folding shovel). Once they're firmly entrenched, no amount of logic or compassion can dislodge them.
Re:Gifts for Christmas (Score:2, Interesting)
Re:Gifts for Christmas (Score:4, Interesting)
I do understand your thought. For a good Christmas gift might I suggest a Salvation Army Angel next year. It is too late to get one for this year. You can find a child that isn't going to get much for Christmas and shop for them. My wife and I did three this year. After we finished the first one we noticed they had a lot left and with only two days to go she decided to get two more. For feeling the Christmas spirit I highly recommend it. For the typical poster on Slashdot may I recommend some of Knuth's other books. The Art of Computer Programing is great but his other books might be of more use to a lot of people on Slashdot.
Re:Gifts for Christmas (Score:3, Interesting)
Re:Gifts for Christmas (Score:4, Insightful)
Like it or not Christmas is more commercial than religious. Hell Dec 25th is just a propaganda date to coincide with a previously popular pagen celebration to make Christianity more popular. Christianity just had the best marketing team, why do you think Islam is popular? Same reason, good sell job.
If I had to chose a religion I'd probably be Buddist. They have some strange BS as well. It's sad that people cannot accept that they will never "understand" the meaning of life and just live without the "my religion is better than yours" mentality.
Re:Gifts for Christmas (Score:2)
Re:Gifts for Christmas (Score:3, Interesting)
Today, the economic impact of Christmas is far greater to America than the philosophical impact.
CLRS (Score:2, Interesting)
Aside from Knuth, which is more showing off than anything (not that the guy isn't a genius), one of the best algorithms books is Introduction to Algorithms, by Cormen, Leiserson, Rivest and Stein. I'd generally suggest algorithms over language-specific references, although modern class libraries tend to implement the best ones already.
Other than that, I suppose your favourite collection of O'Reilly titles. I find Java in a Nutshell useful, as I prefer the dead-tree version to the online documentation. M
Re:CLRS (Score:2)
Head First (Score:3, Insightful)
Those books are entertaining and educating at the same time. An ideal Christmas present for yourself
Re:Head First (Score:2)
I'm reading Head First Design Patterns [oreilly.com] now and it is a joy to read.
Where are the following? (Score:3, Informative)
In my opinion, the best c++ books out there.
Scott Meyers (Score:2)
Scott's books might be called "how to get around the deficiencies of C++".
Re:Scott Meyers (Score:2)
Re:Where are the following? (Score:2)
Haven't read Schildt's C++ book but his C Book used to be notorious.
Check Seeb's review [plethora.net]
Most of these errors must have been corrected by now, however.
Also check the ACCU reviews [accu.org]
MFC Programming from the GROUND UP 2nd Ed by Herbert Schildt [Not Recommended] (Reviewed Jul 1999)
C++ from the Ground Up (2nd ed) by Herbert Schildt [Not Recommended] (Reviewed Mar 1998)
Java Programmers Reference by Joe O'Neil & Herbert Schildt [Not Recommended] (Reviewed Mar 1998)
Re:Where are the following? (Score:2)
There are a ton of C/C++ books out, and half of them are decent reads. The other half seem to be written by Schildt.
I would steer clear of this particular "book machine."
Tim
Re:Where are the following? (Score:2)
Given your knowledge of C++ books, do you have any recommendations?
Stroustrup's 3rd Edition C++ PL is the best if you have already know some
C++. It's the absolute bible, like K & R's book for "C".
However, if you are a beginner at C++, then the book by
Accelerated C++ by Andrew Koenig & Barbara Moo is very good.
For just STL, Nicolai Josuttis's book is highly recommended.
For the latest C++ template tricks (the kind used in boost),
Andrei Alexandrescu's Modern C++ design is very good & detailed.
Re:Where are the following? (Score:4, Informative)
Also, read this excerpt of the alt.comp.lang.learn.c-c++ FAQ:
Missing: (Score:2, Funny)
What programmers really need. (Score:2, Funny)
U.S.S. [amazon.com]
Body Language Secrets: A Guide During Courtship & Dating [amazon.com]
The System: How to Get Laid Today! [amazon.com]
Everything else can be looked up on the internet.
What kind of geeks are they? (Score:3, Interesting)
If your friends are into 3D programming or game development, I recommend some books about OpenGL.
I know I want this one, "OpenGL Game Programming":
http://www.amazon.co.uk/exec/obidos/ASIN/07615333
http://www.amazon.co.uk/exec/obidos/ASIN/15845040
If your friends are into hardware hacking, I recommend "Apple I Replica Creation":
http://books.slashdot.org/article.pl?sid=05/03/03
I own this book myself and it's pretty cool, it covers almost all the DIY basics for building an 8-bit computer. How cool is that?
And ofcourse, for the gadget freaks you have ThinkGeek [thinkgeek.com] and Nerdorama [nerdorama.com]..
Re:What kind of geeks are they? (Score:3, Informative)
If your friends are serious about 3D programming, I recommend books about D3D instead. D3D is used in 99% of PC game development studios. An OGL-like API is used on the Gamecube, and the PS2 doesn't have a formal API for graphics, although lots of studios choose to emulate OGL with their own API. Finally, the XBox (obviously) uses a D3D API. That being said, it is much easier for a first-timer into the industry
Obviously missing is... (Score:3, Funny)
You learn most from others' mistakes ... (Score:2, Insightful)
Bookshelves (Score:5, Insightful)
I'm just a budding programmer, so my bookshelf is fairly skimpy (5-6 books -- mostly accumulated from class). However it seems to me that you're best to buy books that won't be dated as quickly, such as those that are more conceptual (e.g. design patterns, cookbooks, and Art of Programming type books). For everything else, O'Reilly Safari [oreilly.com] digital book collections are the way to go. I've found it has taken a little time to get used to not reading books on dead trees, but the convenience pays off.
Garfield (Score:5, Insightful)
I assume the article writer was asking a question. The answer is no.
Beginning Programming For Dummies, 3rd Edition? (Score:2)
http://www.wiley.com/WileyCDA/WileyTitle/productC
Other Books (Score:2)
This is a very nice collection. I think Cormen and Rivest's Algorithms Book would be a nice addition. It prefers pseudocode to Knuth's MIX and so it is easier to create implementations in high level languages. What is missing are: Books on X Windows Programming (assuming O'Reilly still publishes them), OpenGL (Programmer's Guide and Reference), Books on Lisp/Scheme (SICP, SAP, Common Lisp by Steele, Dyvbig). Numerical Recipies in C (one of the great books of all time).
Joel on Software's Book List (Score:5, Informative)
There is no such thing ... (Score:2)
Some other suggestions (Score:3, Informative)
Code Complete [amazon.com]
Software Project Survival Guide [amazon.com]
Society of Mind [amazon.com]
ACCU Reviews (Score:3, Informative)
Let them pick (Score:3, Interesting)
On the Edge - History of Commodore (Score:3, Interesting)
A lot more adventure and excitement than I had expected. Also gives a different (sometimes flattering sometimes not) of Apple, Atari and Radio Shack.
Depends if you want how-to or mind expansion (Score:2)
But if you want to expand your mind as a programmer, then go for books like:
Paradigms of Artificial Intelligence Programming (Norvig)
Structure and Interpretation of Computer Programs (Abelson & Sussman)
Thinking Forth (Brodie) - One of my favorites; read even if you don't care for Forth.
Re:Depends if you want how-to or mind expansion (Score:2)
Has anyone else read (Score:3, Interesting)
A collection of essays about computer science, not programming. Very interesting and highly reccomended.
Cool site. (Score:2)
Why do Programmers read books? (Score:2)
I'm not really a professional programmer but can put together quite a bit of C#, ASP.Net, ASP, VB, Javascript, Perl etc. Forgive me, I'm an Engineer.... Anyway, I'd much rather read online tutorials or MSDN help articles than programming books.
What am I missing?
Re:Why do Programmers read books? (Score:2)
I also have a nasty habit of reading less of a tech book when I have it in electronic format. I tend to want to try things right then instead of reading through a bit more.
It's
Re:Why do Programmers read books? (Score:3, Insightful)
Re:Why do Programmers read books? (Score:3, Insightful)
The Soul of a New Machine (Score:4, Informative)
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.
Re:The Soul of a New Machine (Score:2)
Another one in a similar vein is "Show stopper!" by G. Pascal Zachary, about the development of Windows NT.
Chip H.
Where to begin (Score:3, Informative)
D. Knuth, The Art of Computer Programming (Volumes 1-3)
D. Berlinski, A Tour of the Calculus
D. Berlinski, The Advent of the Algorithm
G. Polya, How to Solve It
P. Beckmann, A History of Pi
G. Lakoff & R. Nunez, Where Mathematics Comes From
Aho & Ullman, Principles of Compiler Design (1st Ed.)
Aho & Sethi & Ullman, Compilers: Principles, Techniques, and Tools
P. Freiberger & M. Swaine, Fire in the Valley: The Making of The Personal Computer
H. Sheldon, Boyd's Introduction to the Study of Disease
C. Petzold, Code: The Hidden Language of Computer Hardware and Software
Anyone of these would have made a good gift for me -- and I'm sure other geeks would appreciate these as well. That is, if they don't own them already.
On a related note: The conference proceedings from the ACM SIGCSE add quite a bit to my library every year. The membership is very affordable and makes an excellent gift (provided, of course, that the geek in question is not already a member of the ACM). I'm not sure about the other SIGs, but you certainly get your dues worth out of SIGCSE.
A History of Pi (Score:2)
Now, I took a class in college called "History of Math" - that WAS every bit as boring as the title suggests!
The Art of Computer Programming (Score:3, Interesting)
O'Reilly's Mastering Regular Expressions... (Score:2)
Second edition. A good general reference with specific implementation notes for Perl, Java, .NET, etc. It is by far the most thumbed-through book on my "shelf" (aka, "The pile of books on the corner of my desk"). Good for beginners or experts needing a handy reference.
You wouldn't think so, but it's also a good cover-to-cover read, provided you're interested in that kind of thing.
By Jeffrey Friedl [regex.info]
Books for Developers (Score:2)
Refactoring: Improving the Design of Existing Code, Fowler et al
Domain-driven Design: Tackling Complexity in the Heart of Software, Eric Evans
Test Driven Development: A Practical Guide, Dave Astels
Working Effectively with Legacy Code, Michael Feathers
And slightly off the wall...
Object Thinking, David West
Not to throw cold water on this or anything... (Score:5, Insightful)
So for a REAL bookshelf... probably some IT-angled fiction. This is tricky as most authors fail to research tech angles correctly (like Hollywood computers, but not quite as glaringly obvious). Douglas Copeland's Microserfs was OK, and quite entertaining.
For an intelligent recommended read though, I can't recommend the usual Zen and the Art of Motorcycle Maintenance highly enough. It really makes you think, which is nice. I've been meaning to check out Scott Adam's (of Dilbert fame) God's Debris too. That's free to download [andrewsmcmeel.com] by the way. So it might be worth reading a bit and if you like it, you could buy paper copies for your friends.
Oopsie (Score:2)
Book Pool (Score:4, Informative)
Re:Book Pool (Score:3, Informative)
A few must-haves... (Score:5, Informative)
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.
Safari (Score:5, Informative)
OpenGL Red and Orange Books (Score:2)
Computational Beauty of Nature (Score:3, Informative)
My personal favorites... (Score:5, Informative)
Inside the C++ Object Model [amazon.com] 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 [amazon.com] 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.
The Art of War and Machiavelli (Score:3, Interesting)
Both have the full texts available from the wikipedia links above.
Not a book, but a bookmark (Score:2)
A few more for the mix (Score:2)
The Dragon book
Some modern compiler book, like one of Appel's, or possibly the new Aho, Sethi, Lam, and Ullman book [aw.com] when it's released.
Purely Functional Data Structures by Chris Okasaki
possibly Algorithms : A Functional Programming Approach by A. R. Fethi, though it's a bit light
SICP [mit.edu], which has been mentioned a couple of times
and does anyone know if there's a book out there on how to get off your ass and write some good documentation to accompany your code
linux system administration (Score:3, Informative)
I think that buying a programming reference for a person who programs for a living would not be such a good idea. But buying something related to a person's out-of-work (or out-of-school) computer interests is a nice gift.
A Programmer's Bookshelf? (Score:3, Interesting)
Knuth.
Gerald Weinberg's The Psychology of Computer Programming.
George Polya, How to Solve It.
Gries, The Science of Programming.
Bentley, Programming Pearls.
Gamma, Helm, Johnson, and Vlissides, Design Patterns.
Abelson and Sussman, Structure and Interpretation of Computer Programs.
Hunt and Thomas, The Pragmatic Programmer.
Hmmm. My own bookshelf is lacking. Time to shop...
AntiPatterns (Score:3, Insightful)
http://www.amazon.com/exec/obidos/ASIN/0471197130
Re:Knuth (Score:2, Insightful)
Re:Bookshelf? (Score:2)
kill man.
Re:Bookshelf? (Score:2)
Re:Bookshelf? (Score:4, Funny)
Re:Nothing (Score:3, Insightful)
While I have several books, I feel the same way. I'm highly suspicious when I walk into a developer's office and see the two dozen ".NET" books on the shelf, the spines giving all appearances of never being violated. This is pretty much par for the course, though : Stock your bo
Re:Nothing (Score:2)
You know it could be that the book uses the lay flat binding, that O'Reilly uses as standard. I have abused the crap out of my O'Reilly books with the spines of many looking like the day I bought them, the corners are another story. I love hardcover books because their spines don't wear out, nor do the corners start fold as easily.
Re:Nothing (Score:5, Funny)
You do know that books had Indices before databases, right?
Re:How about a collector's item? (Score:2)
Re:THHGTTG! (Score:2)
Re:According to Hackers... (Score:2)
Re:The Pragmatic Programmer (Score:2)