Slashdot Mirror


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.

20 of 514 comments (clear)

  1. Applied Cryptography by demi · · Score: 4, Informative

    by Bruce Schneier. The book is enjoyable and has saved me from several gaffes when using crypto for applications.

    --
    demi
  2. Obvious Perl choices.... by markana · · Score: 4, Informative

    Programming Perl (Camel)
    Perl Cookbook (Bighorn sheep)

  3. some good ones.... by jeffy124 · · Score: 4, Informative

    Anything with Knuth's name on it
    Dragon Book (Compilers - Principles, Tools & Techniques, Aho et al)
    Gang of Four (Design Patterns, Gamma et al)
    Andy Tannenbaum's OS book
    That thick ass Intro to Algorithms book from the MIT boys
    Patterson/Henessey Computer Organization & Design

    --
    The One Rule Of Chess You'll Ever Need: Don't play someone who carries a kit in their bookbag.
  4. Just a few that come to mind.... by BMazurek · · Score: 5, Informative

    Introduction to Algorithms - Cormen, Leiserson and Rivest
    - Great book, little bit of everything.

    Code Complete - Steve McConnell
    - Must read for anyone serious about programming. Read it.

    Advanced Programming in the UNIX Environment - Richard Stevens
    - Still one of the best UNIX programming books I've seen.

    Since the advent of the web, though, I've come of the opinion that language agnostic books are the important ones. Books on particular languages ("Learn Foo in 21 days", "Practical Programming in BarBaz") or technologies date way too quickly. The web is the best source for information like this.

    I think we're thankfully seeing more books like "Pragmatic Programmer", the "Extreme Programming" series, "Design Patterns", "Refactoring", "Death March" and other books that transcend particular languages and technologies.

  5. Get theory books. by WanderingGhost · · Score: 4, Insightful
    Personally, I value:
    • Theoretical background -- experience in a CS course, good books that give you a theoretical base are nice. Why? Because later, to translate the theory into real work, you'll just need a reference, and things will work easier!
    • Reference books -- to learn how to implement your ideas in specific settings (OS, language, etc).
    I never found the first with books for specific compilers, IDEs, versions of things, etc, or any of those "big" books that promise you a lot.

    Interesting choices are books written "by the language author" (think Stroustrup, Larry Wall, etc), or books by people with a good background in CS (a CS professor, for example).

    Also, books on theory are interesting. A book on Compilers may change the way you think. (The old "Dragon" book is nice, and Andrew Appel's book is also interesting). One book on Analysis of Algorithm like the one by Cormen, Leiserson, Rivest and (forgot the third author) is quite good, but you need a decent math background.

    And for a reference, I think the more compact the better (I use Java in a Nutshell). References shouldn't be more verbose than the necessary. :-)

    (Just my $0.02)
  6. http://www.canonicaltomes.org/ by Clover_Kicker · · Score: 5, Interesting

    Check out http://www.canonicaltomes.org/, people have entered and voted on the "best" books in a variety of categories.

  7. list by Twister002 · · Score: 4, Informative

    Sorry if I'm too lazy to look up any links or authors.

    Thinking in C++/Java

    Algorithms in C, the whole series.

    Design Patterns by Erich Gamma, Richard Helm,Ralph Johnson, and John Vlissides.

    Hidden Order: How Adaptation Builds Complexity and Induction : Processes of Inference, Learning, and Discovery both by John Holland - father(?) of the genetic algorithm - not necessarily computer books, but they do provide a different perspective on how you can write software to do thing.


    The Art of Computer Programming, Volumes 1-3 by Donald E. Knuth

    --
    "For a successful technology, honesty must take precedence over public relations for nature cannot be fooled." -Feynman
  8. Knuth's "The Art of Computer Programming" by prospective_user · · Score: 4, Informative

    I have no doubt that if you want to have a more theoretical background on many subjects regarding Computer Science, you have to read (or, at least, take a glance at) Knuth's The Art of Computer Programming.

    His books give an excellent introduction to many subjects, including many of the hardest problems in Computer Science. The first volume of his "The Art of Computer Programming" gives a very concise and comprehensive review of Mathematics needed for the remaining volumes. You might even learn about mathematical objects you never heard of (if you don't have higher education in Mathematics).

    If you need something ligther on the Mathematics needed for Computer Science, then you might want to read his "Concrete Mathematics". Quite a beatiful book (typographically speaking), with an outstanding expostion of some advanced topics in Mathmematics neede for Computer Science and also quite funny to read.

    I should also mention that his books are also a prime example of how someone should write a book. His books, while mostly technical, show a clear style of writing, direct and also entertaining, while discussing deep subjects.

    The "problem" with Knuth's books are that they are intended for serious readers. You know if you are serious if you can read the first pages of his first volume. :-)

    Another book that I would recommend is Andrew Tanenbaum's "Modern Operating Systems" (which is a bit more practical than Knuth's books) gives an overview of the structure of some common Operating Systems, including DOS and Unix.

    I could give you many other recommendations, but you'd have to specify if the other recommendations that you want are more practical or more theoretical.

    I hope this helps.

  9. Code Complete! by sphix42 · · Score: 4, Insightful

    Code Complete and Rapid Development are the kinds of books I find most useful. I don't like any books that are specific to a language. These two are fantastic resources for learning how to program better, not how to write in a particular language.

  10. Richard Stevens books by Chemical+Serenity · · Score: 4, Informative

    Specifically Unix Network Programming (vols 1 + 2) and Advanced Programming in the Unix Environment. Basically the holy bibles of all things unix-programish.

    Aside from that, same as what others have mentioned... Applied Cryptography, Unix System Administration, Practical Unix & Internet security...

    Oh yeah, "The Complete Canadian Small Business Guide" has come in handy in many instances indirectly related to programming... ;)

    --
    "People will pay big bucks for the luxury of ignorance."
  11. Four sweet little letters... by Succa · · Score: 4, Informative

    SICP.

    (Structure and Interpretation of Computer Programs, a fine book that'll teach you more about programming than should be allowed by law)

  12. More C++ suggestions by Anonymous+Brave+Guy · · Score: 4, Informative

    A decent list of C++ books is in this newsgroup posting.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  13. Here are some for you.. by Axe · · Score: 4, Funny
    King Wen & Duke Chou: The I Ching
    Zoroaster: The Avesta
    Lucretius: On the Nature of Reality
    Marcus Aurelius: Meditations
    Immanuel Kant: Critique of Pure Reason
    Albert Einstein: Relativity

    Then, more specific for developers:
    The Lord of the Rings. (doh)
    Hitchhiker's guide to the Galaxy.
    How to date a woman.
    ..and
    Definitive guide to mental and sexual masturbation.
    ..by me. ;-)

    --
    <^>_<(ô ô)>_<^>
  14. A brief list by moebius_4d · · Score: 5, Informative

    Aho, et. al. "Compilers"
    Alexandrescu, "Modern C++ Design"
    Bentley, "Programming Pearls", 2nd ed.
    Brown, et. al. "Antipatterns"
    Cooper, "About Face: The Essentials of User Interface Design"
    Fowler, "Refactoring"
    Gamma, et. al. "Design Patterns"
    Hanson, "C Interfaces and Implementations"
    Johns & Lins, "Garbage Collection"
    Josuttis, "The C++ Standard Library"
    Kernighan & Pike, "The Practice of Programming"
    Kernighan & Ritchie, "The C Programming Language" 2nd ed.
    Knuth, "The Art of Computer Programming" vol 1-3
    Meyers, "Effective C++"
    Meyers, "More Effective C++"
    Meyers, "Effective STL"
    McConnell, "Code Complete"
    McConnell, "Rapid Development"
    Plauger, "The Standard C Library"
    Stroustrup, "The C++ Programming Language"
    Stroustrup, "The Design and Evolution of C++"

    For specific topics:
    Foley, et. al. "Computer Graphics"
    Kernighan & Pike, "The Unix Programming Environment"
    Schneier, "Applied Cryptography"
    Stevens, "Unix Network Programming"
    Stevens, "Advanced Programming in the Unix Environment"
    Also the Graphics Gems and Game Programming Gems series are superb. Maybe my list makes me old-school, but I like to understand what is happening from the use case all the way down to the register allocation algorithm. Of course, I can't always do that.

    I don't mention any Java books because they get outdated so fast. The language hasn't changed much since 96, but the class library api is in constant flux.

  15. Re:easy by muffel · · Score: 4, Insightful

    union select * from books where author = 'R. Stevens';

    --

    bla
  16. Some light summer reading! by shooz · · Score: 4, Informative

    Not sure if these are for "the smart" but here are a few books that I've enjoyed. They make for nice easy summer reading -- and ya might learn somethin too!

    The Pragmatic Programmer: From Journeyman to Master -- A excellent guide to help you go from spagetti coder to a professional programmer.

    Programming Pearls (2nd Edition) -- Elegant solutions to interesting problems.

    The Practice of Programming -- Coding style, algorithms, etc.

    Titles that are more meaty would include Code Complete, Design Patterns, Refactoring, Applied Cryptography, Knuth, etc., but I'm sure these will be mentioned ad nauseam.

  17. "The Visual Display of Quantitative Information" by dpbsmith · · Score: 4, Informative

    The three Edward R. Tufte books...

    "The Visual Display of Quantitative Information" Graphics Press; ISBN: 0961392142; 2nd edition (May 2001)

    "Envisioning Information" Graphics Press; ISBN: 0961392118; (May 1990)

    "Visual Explanations: Images and Quantities, Evidence and Narrative"; Graphics Press; ISBN: 0961392126; (March 1997)

  18. Structure and Interpretation of Computer Programs by Chuan-kai+Lin · · Score: 5, Insightful

    This is the introductory computer programming textbook used at MIT, and had been featured on slashdot here. However it is very different from what you would expect from such kind of books, with Scheme as the implementation language, it really does not teach readers how to code in a specific programming language, but how to program computers in a large variety of paradigms, what are the trade-offs in program design, how to manage complexity, and how the basics of computing works, by stretching the flexibility of the Lisp family of languages to the maximum. I first read it four years ago as a freshman, and it was a real eye opener. And it never ceased to amaze me through all these years, as I continue to discover new insights in the passages.

    You can almost find a full undergrad CS program concentrated in this book, with topics including language design and computing paradigms (object-oriented, functional, imperative, non-deterministic and logic programming, as well as lazy evaluation), operating systems (issues of concurrency), architecture (the design of a register machine), and compiler construction (the reader is asked to build a Scheme compiler in the end). Instead of being filled with buzzwords, here you are shown how the basics of everything works, in ways that you can really understand. Working through this book will teach you concepts that many people with a CS degree had never heard of.

    Hell, if I could only save one CS book when the world comes to an end, this would be the one. And the best part is: you can get the full-text online here at MIT Press. Definitely a must read.

  19. 'How To Solve It', George Polya... (and 9 more) by pmorrison · · Score: 4, Informative

    ... great, classic, book on how to think about problem-solving.

    'Godel, Escher, Bach', Douglas Hofstader - for melting down, spinning around and reshaping your mind.

    'Structure and Interpretation of Computer Programs' - Abelson and Sussman - read the negative reviews at Amazon to realize how sophisticated a book this is. I found it my senior year in Computer Science and realized I'd hardly learned a thing yet. Deep stuff.

    'The Pragmatic Programmer', Thomas and Hunt - wish I'd had it at the start of my career, it'd be even more fun, profitable and far less painful.

    'Code Complete', McConnell - The bible of 'how to code it'.

    'Software Project Survival Guide', McConnell - got me through my first independent project, with plenty of room for growth. Great book for a newly appointed project manager. Helps developers (and everyone else) figure out if their project is going gold or down the tubes pretty accurately.

    'The Mythical Man Month' - Fredrick Brooks. Should be read regularly by anyone who manages software professionals. It's an interview question I ask any hiring manager. Ones who care about the field say 'Yes'.

    'Programming Pearls' (any edition), Jon Bentley - Great fun, great exercises, great quotes. When you start feeling like programming is drudgery, a great tonic to renew your appreciation. Full of little techniques and large wisdom.

    'Programmers At Work' - Interviews with 1985's leading lights of the software development industry. Great inspiration, now with historical relevance.

    'The C Programming Language' - my vote for the most influential computer book ever(Hello?), and full of worthwhile knowledge. Anything Kernighan's involved in is worth picking up, an author who really cares about writing well.

  20. Douglas Hofstader by gwernol · · Score: 4, Interesting

    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