On Wed, Jul 22, 2009 at 3:22 PM, Mike Taylor<[log in to unmask]> wrote: > 2009/7/22 John Fereira <[log in to unmask]>: >> Some good answers so far... >> >> First, regarding books. While the suggestion of avoiding "dumbed downed" >> books has some merit it is worth noting the distinction between books that >> are primarily used for reference and books that are more about theory. I >> haven't fund much use for "reference" books so much as usually the same >> material can be found online and kept more up to date. However, theory >> books on algorithms and software design can provide a good background on >> how, in general, to write good code. > > Very true. And the paradoxical upshot is that these days, some of the > best books on programming are old ones, which a few years back would > have been thought of as outdated Indeed, there are timeless masterpieces like the "C programming language". Good programming language books usually follow a step-by-step approach - they introduce a couple of fundamental ideas and basic elements and give an example of a real-life (or close) problem that gets solved by that. E.g. in TCPL right after presenting the basic C syntax there is a naive implementation of standard Unix "wc" to illustrate that. The book does not get anywhere near pointers before the 100th page or so. Reference-like books are not worth a dime, they tend to be so boring that you don't go passed the first chapter without yawning. > > In particularly, I can't speak highly enough of Jon Bentley's classic > _Programming Pearls_ (originally 1986, second ed. 1999), which is > chatty and anecdotal yet rigorous, and will help you to _think_ like a > programmer, as opposed to merely accumulating techniques. > > Maybe even better is Kernighan and Plauger's tour de force _Software > Tools_ (1976!) In 320 pages, they start by developing a program to > copy its input to its output, and end up by showing you how to design > and build a macro processor and programming-language pre-processor -- > covering sorting, pattern matching and a hundred other topics along > the way. I know of no other book that goes from 0 to 60 so rapidly, > readably and painlessly. The language that the tools are written in > (RATFOR) is hopelessly outdated now, but the princples are timeless. > > These are books that I have come back to time and time again. They > contain treasures worth a hundred time more than whatever currently > trendy Design Pattern is being pushed by this month's hot book. > You surely don't mean the GoF classic here, do you? It's a must-have for anyone doing serious OOP, be it Java/C# or C++. It's a rather demanding lecture and one should stay away from it unless he really feels needing it :). It's known to do more harm than good at times. Nevertheless, It does save you from re-inventing the wheel each time you have a particular design problem. > Hope this helps. > -- Cheers, Jakub