Best Computer Books For The Smart
You'll remember last week, I asked for recommendations of the Best Websites for developers. This was a -great- thread and in the story, I mentioned that I was planning on doing the same regarding books this week. So here it is. What do you, the slashdot reader consider seminal works? What would you consider great introductions to technical topics? If you are interested, check it out...
As part of this I'm looking for books on C, C++, Perl, Python, PHP , System Administration, anything...you name. As before I have opinions on great books, but I want to see what you think. Also, what do people think is a great introductory book for people new to linux.
Effective C++ and More Effective C++, by Scott Meyers
Gets my vote. And any of the Oreilly books on Perl..
Check out http://www.canonicaltomes.org/, people have entered and voted on the "best" books in a variety of categories.
Also, I happen to know that most of the rockstar authors, like Knuth, Stevens, and Kernighan, have far more money than they would ever know what to do with. And, those bozos at Prentice Hall and O'Reilly are all a bunch of thiefs anyhow. I understand that they've recently lobbied congress for the right to burn down libraries to prevent the spread of information among poor people who can't afford to buy books of their own.
I see Tannenbaum's book mentioned several times but so far I haven't seen even one mention of The Dinosaur Book.
In addition to Kernigan & Ritchie's 2nd edition, The C Programming Lanugage with ANSI C, which should be on any programmer's workbench, be they Perl, Matlab, Maple, TCL, or even elisp programmers, here are some others:
The Algorithm Design Manual by Steve Skiena. Excellent.
The Nuts and Bolts of Proofs -- the heart of correct math is showing your work, and this book shows you how.
The Data Game -- Controverses in Social Science Statistics -- this really puts you in touch with the kinds of numbers you hear bandied about on the news, and what those numbers mean.
The Maple V Learning Guide -- this comes with Maple (and presumably Matlab if you get it with Maple) and teaches more than a typical undergraduate mathematics program in about 270 pages. Actually, you have to delve into the hypertext documentation of Maple to get at all the calculus, linear algebra, statistics, etc., but it's all in there.
Studies in Inductive Logic and Probability -- actually there were two volumes published in 1980, and one or both might have gone out of print.
What If there were No Significance Tests -- this overpriced volume (which you should be able to get for much less from the publisher's site, www.erlbaum.com that doesn't seem to be working right now) explains exactly what soft scientists (e.g., psychologists) mean when they say something is true.
100 Statistical Tests -- this reasonably priced but somewhat advanced, applied book will tell you how to tell whether something is true, even if you have to use indirect or partially correlated measurements. The author has provided tools with what you can quickly find the appropriate test(s) for most situations I can imagine.
All I Ever Needed to Know I Learned From My Golf-Playing Cats. Here's hoping for the +1 Funny moderation for Ruben Bolling, whom I believe to be perhaps the finest editorial cartoonist, up there with Ted Rall, Tom Tomorrow, Tom Toles, and Gary Treadeau. Fantastic!
Moderation doesn't seem to work very well for lists like this. Maybe each poster should have equal weight, votes for specific texts are added together, and the highest scoring texts bubble to the top. Moderation seems to be a bit orthogonal to this, in that whole "groups" of recommendations are rated. Tough job for a moderator!
And I think it's HIGH TIME for the allowed HTML to be reviewed in line with recent W3C standards. For instance, most semantic/accessible markup is disallowed (<CITE>, please?) This is wrong (IMHO).
you had me at #!
While Knuth's work is very good, I feel it is somewhat overrated. Its thoroughness impacts on its readability, and there are topics I feel are almost entirely useless for most readers (such as a dozen or so statistical checks for PRNGs and fast multiplication using FFT), which would probably be better served by reading papers. The description of algorithms in terms of CISC assembly is also very disappointing.
Having said that, I do like Knuth, but if someone's asking "What algorithms book should I buy?", it's almost certainly not the answer. TAOCP is probably the third algorithms book I'd recommend, after Sedgewick's Algorithms in blah and Cormen, Leiserson and Rivest's Introduction to Algorithms.
I was surprised that Sedgewick's book hasn't had much recommendation, so I'll praise it a bit here. It's very readable (but not "dumbed down"), and covers a lot of practical and commonly used algorithms and data structures. It strikes a nice balance between theory and practice. And you can read it cover-to-cover in a sensible timescale.
Oh, and if you're really into this stuff, go read papers. There's a whole bunch of stuff beyond what's in the current books, much of it pretty accessible.
"The Moment", Kierkegaard (sometimes known as "Attack Upon Christendom")
"The Banquet", Kierkegaard (found in "Stages on Life's Way")
Kierkegaard's Journals & Papers
"Thus Spake Zarathustra", Nietzsche
The Lectures and Talks of Hakuin
The Zen Teachings of Huang Po
The Anecdotes of Diogenes
Chuang Tzu
The Gospel of Ramakrishna
The Dhammapada
The Diamond Sutra
"Poison for the Heart", Kevin Solway
"The Hidden Teaching Beyond Yoga", Paul Brunton (A good analysis of the way mind creates reality)
"The Way of Zen", Alan Watts (A good introduction to Buddhism)
I think that was always true beyond a certain point. Most developers follow the same path: they start out with specifics (their first language, a particular I/O library) and as they learn more specifics, they start to see the generalities (procedural/OO/functional/etc. approaches, "pseudocode" for algorithms, concepts like controls/widgets and event-driven code in GUIs). There is always a need for good information on any given tool, be it a programming language, a library or whatever, but the distilled knowledge that transcends any specific tool will always be more useful for longer.
That I have to disagree with, though. The web is a great source of information for a few languages, particularly the less popular ones. It's a lousy source of information on good programming technique in many (C, C++, Java, etc), because most of what's there is written by enthusiastic but ill-informed authors, and they simply spread their poor style or incorrect knowledge.
Most languages do not change so fast that a good book will date too quickly to be useful. In various places I've programmed, there have been plenty of books on the shelf covering C, C++, Java, Python, Perl, FORTRAN and other languages, many dating from several years ago but still just as relevant today. Sure, there come certain cut-off points; books with only the Java 1.0 library in them or dating from before the C++ standard have limited use, now. But those cut-off points are relatively rare. Reading a good book takes only a few days, and even if the benefits last for a year or two, that's still a very sound investment.
The web can be good for keeping up with rapidly changing libraries (Java's, for example). Then again, if your library is changing so fast that books on it are obsolete before they're useful, perhaps you should slow down. This problem is usually caused by adding too much to a library too fast, and the consequent continual efforts to clean up the mess.
If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
I'm surprised this hasn't been mentioned yet. Godel, Escher and Basch by Douglas Hofstader. This is profound investigation into the fundamental theories that underly computer science. After reading this book everything else is just work. If you can understand Hofstader you have all the theoretical and philosophical underpinnings you need to really understand software.
The real joy is this book is not just meaningful it is also enormous fun. Hofstader covers some complex mathemetical ground (Turing machines, Cantorization, Godel's incompleteness theory) wrapped up in erudite and thought-provoking tales of the relationship of computer science, language, art and music.
Truly one of the great works of our field.
Sailing over the event horizon