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.

42 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
    1. Re:Applied Cryptography by djm2cmu · · Score: 2, Informative

      And if you're completely new to cryptography, definitely check out Cryptography Decrypted by H.X.Mel. His writing style is incredible...that book could teach public-key crypto to a monkey. Hmmm...now there's a thought...

    2. Re:Applied Cryptography by Anonymous Coward · · Score: 1, Informative

      Actually, Handbook of Applied Cryptography is different than Schneier's Applied Cryptography.

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

    Programming Perl (Camel)
    Perl Cookbook (Bighorn sheep)

  3. My only source by cdgod · · Score: 1, Informative

    You want the best books for free?

    alt.binaries.e-book.technical

    --
    This .Sig is left intentionally humourless.
    1. Re:My only source by Karma+Farmer · · Score: 2, Informative
      You want the best books for free?

      Don't be a slimebag. Go the the library.

  4. 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.
  5. UNIX System Administration Handbook by Champaign · · Score: 2, Informative

    http://www.amazon.com/exec/obidos/ASIN/0130206016/ qid=/sr=/ref=cm_lm_asin/103-3920026-0250219

    When I was thrust into the role of assistant System Administrator at the first company I worked at out of university, the "UNIX System Administration Handbook" by Evi Nemeth, Garth Snyder, Scott Seebass, & Trent R. Hein was recommended to me as a good overview book of maintaining a Unix system, and a great reference for whenever you needed to do something. I was very impressed, still have and use my copy today, and would recommend it to any other new SysAdmin out there.

  6. A couple of suggestions by astrashe · · Score: 3, Informative

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

    Refactoring: improving the design of existing code, by Martin Fowler, Kent Beck, John Brant, William Opdyke, and Don Roberts.

    Joe Celko's SQL books.

    It's an introductory text, but Jerry Sussman's and Julie Sussman's Structure and Interpretation of Computer Programs is pretty good too. It makes you think about things more deeply than many other books do.

  7. 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.

    1. Re:Just a few that come to mind.... by dmiller · · Score: 3, Informative

      I strongly second reading _Code Complete_ and APUE. Another two excellent books, also by Richard Stevens, are TCP/IP Illustrated (vol 1) and Unix Network Programming. If you do any Unix or network progamming, you need some Stevens books.

  8. Best in Electrical Engineering is DDPP by Amgine007 · · Score: 2, Informative

    The best textbook I have read for those just starting in EE (from a digital logic point of view) is "Digital Design: Priciples and Practices" by John Wakerly.

    It starts with simple logic, truth tables, and so on, and covers more advanced topics in later chapters such as VHDL and other cool things. If you're not strictly CS, this is *the* handbook to have if you don't want to look like a doufus listening to EE guys. And, I've always found the index to be very complete (and filled with riddles) -- something MANY books seem to be horrible at!

    I'd have to say the best 'feature' of this book -- and of any other, I'd say -- is the offer of a cash ($5!) reward for the first to discover an error!

    (The author maintains an errata page and other goodies at http://www.ddpp.com)

  9. Re:Lisp by xerofud · · Score: 3, Informative

    You might also mention his book "On LISP", which
    is now out of print, but can be downloaded from
    his webpage.

    On LISP goes into LISP issues much deeper than
    ANSI Common LISP.

  10. some recommendations by g4dget · · Score: 3, Informative
    If you are looking for a concise book on C++, look at Pohl's "C++ Distilled".

    For Java, a smart person with a little computer background should be able to figure it out from the language definition. Any of the more complex topics in Java change so quickly that it isn't worth buying books on them anyway--just use the on-line references. Sun has on-line tutorials ("trails") at developer.java.sun.com, left over from the days when Java wasn't hot yet and when they still had to bother recruiting people to Java.

    For Perl, I wouldn't bother with any kind of reference. Just find scripts that roughly do what you want and hack them; it's blind groping around, but that's the way Perl works. If you can't get it to work that way, you probably should be writing in something else other than Perl. If you must, get something like the Perl Cookbook and a quick reference guide.

    For Python, I like "Python and Tkinter Programming" and "The Quick Python Book", although O'Reilly's reference is also decent.

    For a fun yet challenging introduction to computer programming, "Structure and Interpretation of Computer Programs" is good. What makes it even better is the fact that it's a book that teaches modern abstraction techniques but does not rely on object-oriented programming for everything. Most people coming to computers and computer programming wrongly think that objects are either the best, or even the only, way to build abstractions.

    1. Re:some recommendations by Colin+Simmonds · · Score: 2, Informative

      I agree that the books on the various Java APIs quickly become outdated and that it's easy to pick up the core language from the online references. However, Effective Java by Joshua Bloch doesn't fall into either of those categories and is very useful. It's the Java equivalent of Effective C++ by Meyer - roughly 50 concrete dos and don'ts to improve your code, no matter what version of Java you're using.

      I'll also second the nod for Python Essential Reference, which is the only Python book I've found useful so far, even if only because it's faster to look things up in than in the excellent included language documentation.

  11. 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
  12. 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.

  13. Books: by Alex+Belits · · Score: 3, Informative

    1. K&R, The C Programming Language, 2nd ed.
    2. R. Stevens, Unix Network Programming, 2nd ed.

    After that one should decide what to choose. If it's C++:

    B. Stroustrup, The C++ Programming language

    After that people usually can find their way around books on their own.

    --
    Contrary to the popular belief, there indeed is no God.
  14. What book could be better to reccomend by SuperKendall · · Score: 3, Informative

    under the circumstances, than "SQL For Smarties"? ;-)

    No joke, it really is a good book!

    --
    "There is more worth loving than we have strength to love." - Brian Jay Stanley
  15. C++ In depth series by eddy · · Score: 3, Informative

    For everything (well, almost) C++, you need the C++ in depth series. Get it, it's a great package.

    Contains More Exceptional C++, Exceptional C++, Essential C++, Accelerated C++ and Modern C++ Design.

    Accelerated C++ is the best book teaching C++ from the ground up that I have ever seen. It's worth getting and reading even if you think you already know the basics. Really.

    --
    Belief is the currency of delusion.
  16. 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."
  17. 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)

    1. Re:Four sweet little letters... by Anonymous Coward · · Score: 1, Informative

      Yep! This is the book, the Bible of computer science. It's about time someone mentioned it! Structure and Interpretation is one of those books that most readers either love or make fun of depending on predisposition of character. Well, as Jusus said somewhere "it's given for some people to fathom the mysteries of the Kingdom, while others are just jerks!".

      The Little Schemer books, by Friedman and Felleisen, are an entertaining aside to go along with SICP. GEB("Godel Escher,Bach") by Hofstadter isn't bad either and Flake's "Computational Beauty of Nature" is fits right in too.

  18. 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.
  19. 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.

    1. Re:A brief list by bmajik · · Score: 3, Informative

      Excellent list. Two domain specific ones i'd add are:

      Expert C Programming: Deep C Secrets

      This is the orange book with a blue fish on the cover. the guy that wrote it worked for Sun on the c-compiler or the kernel (dont recall, honestly).

      This book is hillarious and manages to tackle all the ugliest quirks of C.

      Next (hold your breath)

      Inside Windows 2000, 3rd Edition.

      This was written by the guy that does the Sysinternals website. If you have any NT/2k/XP machines at _all_, this book is like the bible. All the guts of everything in the architecture and implementation of windows 2000 is explained. Want to know what csrss.exe does ? It's in there. Want to know how kernel debug your windows machine ? included on cd. This book lives on my work bookshelf. I answer more questions for people out of it than anything else i have. Everytime i go to the can, i take the book with me and read a little bit more. It's a good read for no other reason than to stop making stuff up when you want something to insult microsoft for :) I'd much rather read well reasoned technical arguments about the shortcomings of W2k than "it sucks d00d" and "BS0D city!". And maybe, just maybe, you might learn something about your quirky w2k box :)

      --
      My opinions are my own, and do not necessarily represent those of my employer.
  20. 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.

  21. "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)

  22. Python recommendations by PeterClark · · Score: 3, Informative

    Two books stand out: "Python: Essential Reference" (2nd edition) for the ins-and-outs of all of Python's built-ins and most of the major modules, and "Python Visual Quick Start Guide," which is sort of like a Python cookbook of the basics, if you're new to it all. These two books have taken care of all my needs.
    :Peter

  23. good books and the best publisher by fermion · · Score: 3, Informative
    For Complete non-MS perverted C++:
    The C++ Programming Language by Stroustrup(Addison)

    A quick introduction to Fundamental Design:
    Composite/Structured Design by Myers (ReinHold)

    For on-time software projects:
    Debugging the Development Process by MacGuire (MS Press)

    For TCP/IP protocols and issues
    TCP/IP Illustrated by Stevens (Addison)

    For numerical programming:
    Numerical Recipes in C/Fortan/etc by Press, et al (Cambridge)

    For what a computer might be like:
    The Humane Interface by Raskin (Addison)

    For advance C:
    C Traps and Pitfalls by Koenig (Addison)

    For object-oriented design
    Design Patterns by Gamma, et al (Addison)

    For general reference:
    The CRC handbook by the editors at the Chemical Rubber Company

    Now, I have a question. Who is the most reliable publisher of computer books. It seems that O'Reilly is all the craze, but I have been disappointed with their accuracy and editing of late, though I buy their books if they are on discount or the only good text. For example, I bought their PHP book and I saw several mistakes in the programming examples, mistakes which would totally confuse an inexperienced coder. IMHO, the most consistently good books are published by Addison-Wesley. I would like to hear what other people think.

    --
    "She's a scientist and a lesbian. She's not going to let it slide." Orphan Black
    1. Re:good books and the best publisher by elflord · · Score: 3, Informative
      Now, I have a question. Who is the most reliable publisher of computer books. It seems that O'Reilly is all the craze, but I have been disappointed with their accuracy and editing of late, though I buy their books if they are on discount or the only good text.

      The best publisher depends on the subject matter. Addison Wesley have by far the best lineup of C++ books (almost a monopoly on good C++ books), while Prentice Hall have most of the good C books. O'Reilly have most of the good UNIX-centric books: Python, Perl, and general UNIX stuff,

      Addison Wesley are probably the most consistent of publishers, and have one of the highest signal to noise ratios. They published at least one of the Stevens titles (Advanced Programming in the UNIX environment)

  24. '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.

  25. Re:Seminal? by Anonymous Coward · · Score: 1, Informative

    Insofar as actually learning C++, the book by Stroustup is nearly useless. Imagine learning english by reading a dictionary. It's a great reference, but there are better learner books. Scott Meyers, plus the C++ FAQ, for example.

  26. My List is Bigger than Your List by KidSock · · Score: 3, Informative

    The Standard C Library,P.J. Plauger
    I use this book *all* the time. It's very informative to see how a C library implementation works, and it has the important sections of the C standard reprinted with discussion. My #1 pick.

    Advanced Programming in the UNIX Environment,W. Richard Stevens
    The comp.unix.programmer bible. A must have for UNIX programmers.

    UNIX Network Programming Networking APIs: Sockets and XTI, W. Richard Stevens
    Another classic from Stevens. I have not done a tremendous amount of socket programming in C but I have extensively in Java and I am confident that I can in UNIX after having read select portions of this obviously high quaility book.

    Lex & Yacc, John R. Levine
    I think yacc (the GNU version is called bison) is an extreemly usefull tool. I started writing yacc grammers for all sorts of configuration files on my system while reading this the first time. Great fun, and potentially very usefull. A good yacc grammer can save tremendous amounts of time and is often the proper way to handle a problem. And I'm not recommending the book just because it's the only of it's kind. It's genuinely good.

    Algorithms on Strings, Trees, and Sequences Computer Science and Computational Biology, Dan Gusfield
    This is a tough book. Be prepared to ponder the presentation of each algorithm and skip the proofs (I believe you Dan). If you find yourself getting stuck in spegetti string manipulation, implement a few of these algorithms like calculating the edit distance of two sequences or Boyer-Moore. You'll be a better programmer after and there are very practical application hidden in this book. Again, the presentation is of the highest quality.

    Introduction to Algorithms, Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest
    I have three algorithms books. This one's the best and that's not a compermise. It's a great book.

    The C Programming Language, Brian W. Kernighan, Dennis M. Ritchie
    Of course.

    The Art of Computer Programming (Vols 1-3), Donald E. Knuth

    The C++ Programming Language (Third Edition and Special Edition), Bjarne Stroustrup

    Xlib Programming Manual, Adrian Nye

    Applied Cryptography: Protocols, Algorithms, and Source Code in C, 2nd Edition, Bruce Schneier

    X Window System Toolkit, A Complete Programmer's Guide and Specification, Paul J. Asente, Donna Converse, Ralph R. Swick, Paul Assente

    Expert C Programming, Peter van der Linden

    Life with UNIX, Don Libes and Sandy Ressler

    Programming Pearls, Jon Bentley

    Structured Computer Organization, Andrew Tanenbaum

    The Code Book, Simon Singh

    Etudes for Programmers, Charles Wetherell

    Secrets and Lies, Bruce Schneier

    The Pragmatic Programmer, Andrew Hunt and David Thomas

    TCP/IP Illustrated, Richard Stevens

    Exploring Expect, Don Libes

    UNIX System Administration Handbook, Evi Nemeth et al
    If you use UNIX, you need this book. Forget Running Linux. This is much better and the latest edition covers Red Hat as well as BSD, Solaris, and HP/UX.

    Digital Woes, Lauren Wiener

    Surely You're Joking, Mr. Feynman!, Richard P. Feynman
    This was a pretty funny book. Very readable for anyone. A NYT Bestseller.

    Structure and Interpretation of Computer Programs, Harold Abelson, Gerald Jay Sussman, and Julie Sussman

    Essentials of Programming Languages, Daniel P. Friedman, Mitchell Wand, and Christopher T. Haynes

    Software Fundamentals: Collected papers, David L. Parnas, Daniel M. Hoffman and David M. Weiss

    The Invisible Computer, Donald A. Norman

    Lion's Commentary on UNIX 6th Edition, with Source Code, John Lions

    Envisioning Information, Edward R. Tufte

    The Visual Display of Quantitative Information, Edward R. Tufte,
    I think I have this book. I was disappointed.

    Visual Explanations, Edward E. Tufte

    The Design of the UNIX Operating System, Maurice J Bach

    Algorithms in C, Robert Sedgewick
    Not that great. Having lot's of code samples is nice but the comments are unbelieveable. Their HUGE. Really ruins and otherwise good book. I'd rather go with the Cormen book on Algorithms and just write c from there (done just that many times actually).

    Introduction to Computer Theory, Daniel I A Cohen

    Compilers, Principles, Techniques and Tools (The Dragon Book), Alfred V Aho, Ravi Sethi, and Jeffrey D Ullman

    The Practice of Programming
    Kernighan, Brian W., and Rob Pike


    The Mythical Man-Month, Anniversary Edition : Essays on Software Engineering, Frederick P. Brooks

  27. Dummies and more by nullard · · Score: 2, Informative

    Actually, I learned perl with "Perl 5 for Dummies." It's a terrible book, but it let me (with mostly C and Pascal experience) fix a client's webstore.

    I also recomend:

    Oh! Pascal by Doug Cooper -- sure it's Pascal, but it has lots of general programming info that I use to this day. It's available in many flavors, including my favorite, the platform neutral one.

    Assembly Language for Intel-Based Computers by Kip Irvine. It gets into all kinds of details about the x86 architecture.


    Structured Computer Organization by Andrew S. Tanenbaum will teach you how to build a processor that understands Java byte code (integer instructions only) out of transistors. It's really that good.

    Archimedes' Revenge: The Joys and Perils of Mathematics by Paul Hoffman is a wonderful book that covers everything from encryption to Turring machines to number theory. This book is a fun read that, altough somewhat dated, is still very relevant today.


    Insanely Great: The Life and Times of Macintosh, the Computer That Changed Everything by Steven Levy provides an interesting look at the history of the first personal computer with a gui. The edition I have is from pre PowerPC times, so I assume that this one (featuring an iMac rather than one of the boxy 9"screen Macs on the cover) is more current.

    --


    t'nera semordnilap
  28. Re:! Extreme Programming Explained by matt_pattison · · Score: 2, Informative

    a few points:

    * The quality of a book is not directly proportional to it's thickness/weight/# of pages.

    * the idea that productivity increases emerge from the interaction of a number of different practices, and not one single "silver bullet" sounds like common sense to me, not snake oil.

    * The ideas behind XP Explained were not hashed together on the weekend, they came out of years of experience in smalltalk projects, culminating in the C3 project at Chrysler. Even if you don't agree with XP you have to accept that a hell of a lot more work went into the genesis of the book than say your average "Windows XP Unleashed in 21 days (for dummies)".

    * you compare a seminal book in the software engineering/methodology field (regardless of whether you agree with it) unfavourably with a computer game? Huh? I like computer games, but there's a hell of a lot of trash that gets pumped out in that industry. Not a very good comparison in my opinion.

    With all due respect ergo98 you sound fairly uninformed. I don't really understand why this post was moderated up as informative.

  29. Re:For applied C++ YEAH! by IpalindromeI · · Score: 2, Informative

    Also, it's MORONIC that NOT A SOUL is recommending a book that'll teach you even ONE of the Top Ten most important algorithms of the 20th century.

    You're getting outraged over nothing. This page you link to gives the top ten most influential algorithms for computing in science and engineering, not the overall most influential algorithms of programming in general. Reading through them, I didn't see more than a couple that would be useful for general application. They're mostly just for the researchers in these different fields. Besides, everyone knows the most important and influential algorithm of all time is Hello World.

    For my money, I really like the O'Reilly books. They're detailed and informative without feeling overwhelming or distant. I would recommend most of those to a beginner in whatever subject it may be.

    --

    --
    Promoting critical thinking since 1994.
  30. "Calculus Made Easy" by John+Jorsett · · Score: 3, Informative

    As I interpret the question, seminal works on technical topics of all sorts qualify. In that spirit, I most highly recommend "Calculus Made Easy" by Silvanus Thompson. Originally written in 1910 (I think. It's recently been republished), this is the book that finally enlightened me. After 3 years of advanced mathematics and an engineering degree, everything I knew about calculus was rote: I could come up with the answers, but not because I understood the underlying principles or basis, but because I could memorize procedures. After I got this book and read it, I finally understood what the hell it was all about. I don't know whether I was just a bad student before, had bad teachers, or simply was presented the material in a way that was incompatible with the way I learn. In any case, this book did it for me, and perhaps it will do the same for others.

    One caveat: I read the original, not the current version, which Amazon says "In this major revision of the classic math text, Martin Gardner has rendered calculus comprehensible to readers of all levels." I'm loathe to recommend a book that I considered perfect in its earlier incarnation and that someone has 'revised,' so perhaps you'll want to search for the original.

  31. Re:For applied C++ YEAH! by Anonymous+Brave+Guy · · Score: 3, Informative
    Also, it's MORONIC that NOT A SOUL is recommending a book that'll teach you even ONE of the Top Ten most important algorithms of the 20th century.

    If you truly believe that those are the ten most important algorithms of the 20th century, you really need a change in perspective. Quicksort could certainly be put forward as one of the most important algorithms of all time in computer science. Most of the remaining algorithms mentioned are important for their mathematical basis and/or their contribution to the field of engineering, not for their contribution to computer science.

    And of course, in order to make any use of these algorithms, it is important to have a good implementation of them. If you don't know how to write those "frickin for loops" and how to make use of your development tools of choice, you're going to get nowhere real fast. It's true that from a computer science perspective, many development languages or features in them are isomorphic and once you've learned it once, the rest is mostly just a different syntax. But you do have to learn it once, and well.

    --
    If you disagree, post your argument. (-1, Overrated) isn't your personal censorship tool for views you don't like.
  32. Re:Isn't it obvious? by cyranoVR · · Score: 2, Informative

    I'm not Java expert, but I bought Teach Yourself Java 2 in 21 Days and found it to be worthless. If you already have computer science/programming knowledge skip that and go straight to books like Java in a Nutshell, Refactoring and Effective Java

  33. Databases! by crucini · · Score: 3, Informative
    I work on server-side business apps, so that colors my response. The single biggest error in business programming is probably underestimation or misunderstanding of relational databases. Used properly, the database takes on much of the burden of storing, indexing and searching the data and prohibiting the entry of inconsistent data, thereby lightening the load on the application programmer. It's generally best to make the database the center of gravity, and use the "host language" (perl/java/python) as a thin layer of authentication, validation, business rules and logging between the database and the network. To do this, you need a good understanding of:
    • database design. Read Graeme Simsion's Data Modeling Essentials. This explains how to analyze proposed and existing business activities and accurately reflect them in a database schema. Knowing a lot about SQL or Oracle is not a substitute! A strong schema forces the database to do much of the work for you. A weak schema reduces the database to expensive passive storage.
    • SQL. Read Joe Celko's SQL for Smarties. Work through the examples with Postgres or Oracle. (Knowledge is in the fingers.) Main benefit: the ability to craft a SELECT statement that generates a desired report with little or no postprocessing in the "host" language. On average, the database is going to be faster and less buggy at extracting, correlating and sorting data than any custom-written code. If you ever perform two SELECTs and knit the results together with custom code, your SQL knowledge may have room for improvement.
    Geeks love introverted, clean, mathematical problems and hate ugly, fuzzy business-driven problems. That bias is reflected in the responses here - Knuth is the hands down favorite. While I don't dispute Knuth's value, the focus on algorithms reinforces the lamentable tendency to reinvent the database for each major application. The programmer with a knowledge of C and a head full of algorithms has in a sense a complete toolkit to take on the world, but the programmer with a high-level language and a relational database operates at higher leverage because he need not reinvent fundamental parts each time.
    For example, I learned many sorts in school. I have never used any of them at work. Perl has a built-in quicksort, and SQL has ORDER BY. I think you can assume that more energy and expertise went into Oracle's implementation of ORDER BY than you can bring to bear on average on a homemade sort.
  34. UI Texts by UncleOlethros · · Score: 2, Informative
    I'm a UI designer/developer and a general bibliophile, so I have lots and lots of books. Most of them are only mediocre, but there are a few that I have found very helpful. I know /.ers come from many different walks of life, so maybe a look into my User Interface library might be interesting:
    • Tufte, Edward: I've already seen a few recommendations for his books, but they are so good I wanted to reiterate them. Even if you're not a UI person, these books are worth at least a flip through in the bookstore.
      • Visual Display of Quantitative Information
      • Visual Explanations
      • Envisioning Information
    • Cooper, Alan, About Face: The Essentials of User Interface Design. Good book with lots of practical advice for designers.
    • Johnson, Jeff, GUI Bloopers: Don'ts and Do's for Software Developers and Web Designers. Concentrates more on the "don'ts" than the "do's" but still an excellent read. Well designed, too, so that you can go to exactly the right section to do a quick check of your work. Good for developers as well as designers, and designed with both audiences in mind.
    • Jacobson, Robert (editor), Information Design. A collection of papers on general information architecture, grouped by topics. Probably the best read I've ever had on information architecture and design, even if I didn't agree with everything in it.
    • Wildbur, Peter and Burke, Michael, Information Graphics: Innovative Solutions in Contemporary Design. Good, hardcore success stories. The section about the signing in Schipol Airport and Dusseldorf Airport is a highlight. Each chapter has relevant case studies about design in various media, from in-car navigational displays to neighborhood maps for the blind.
    • Flanagan, David, JavaScript: The Definitive Guide. One of the only JavaScript books to treat JavaScript like a real language, as opposed to just concentrating on recipes for making mouse cursor trailers and other abominations. I haven't seen the newly-released edition yet.
    • Schengili-Roberts, Keith, Core CSS. A fairly advanced text that I use regularly. Lots of examples. At the time I bought it, it was the only full CSS-2 reference I could find in print.
    I also have several pure design books for various media--books on typography, graphic design, web graphics, technique books for Photoshop and Illustrator, and so forth. Those aren't precisely apropos, though.

    In addition to my UI books, I have a few other books that I'd classify as seminal:

    • Kernighan, Brian and Ritchie, Dennis, The C Programming Language. My very first language book. Hard to beat as a way to learn C, though not for the faint of heart. (I learned C using K&R and the man pages.)
    • Nemeth, Evi, et al. Unix System Administration Handbook. The book for Unix admins. I have five sysadminish books that I've bought in my ten or so years of doing Unix administration, and this is the only one I refer to with any regularity.
    • Oualline, Steve, Practical C Programming. The stylistic advice in this book is priceless. Great companion to K&R.
    • Vermeulen, Allan, et al. The Elements of Java Style. Great handbook on writing good Java code, which will help keep code clean and consistent--something all of use can use help with from time to time. The directives are along the lines of "Choose good and consistent variable names," as opposed to "All variable names shouldBeLikeThis."