views:

455

answers:

8

Possible Duplicate:
The Art of Computer Programming - What Can I Get From Reading the Lot?

I'm an experienced developer that is trying to buy books that will help her become a better programmer and aid her in solving complex problems.

I'm considering The Art of Computer Programming by Knuth (the first 4 volumes). I know that this is a classic, but is it really worth the money? It costs $200 in Québec.

"Worth" is subjective, but with $200 I could presumably buy 3/4 high quality books on related subjects (from common algorithms all the way to AI).

My question is, should I just go with Knuth's collection of books? If not, what other books would you recommend with a CDN$200 budget?

Thank you for your answers.

+3  A: 

This is obviously a personal opinion (I have owned the first 3 volumes for a number of years): If you have had significant exposure to mathematics and algorithms then "Yes".

Otherwise, I believe you will be better off purchasing "The Algorithm Design Manual, 2nd Edition" by Steven Skiena or Sedgewick's Algorithms.

There have been several questions on SO about the best algorithm books, e.g.:

What is the best book for learning about Algorithms?

Mitch Wheat
+1 for suggesting Skiena and Sedgewick. IMHO all three of them are worth their money.
nikie
Bought a cheap used set 10years ago. Used it ONCE to settle an arguement about comparing strings. Read (and half understood) bits of the random number chapter for interest,Buy Corman/Slieena/Sedgewick first.
Martin Beckett
A: 

It's been on my list for years and I haven't been sufficiently motivated to buy it yet. It's definitely a nice thing to have but like anything else you need to consider if the whole text is relevant to you and the opportunity cost involved. What aren't you learning that might be more worthwhile to your career today? These books seem like longer term helpful books to own and I hope I buy them someday but I'm not feeling too bad about not having them now.

Jon
+1  A: 

You might try checking a volume or two out from a library (in America, there's a very good Inter-Library Loan system if your local library doesn't have a copy, though I'm not sure about Canada). Alternatively, if you have bookstores with cafes in them, you could bring a laptop and work through a chapter or two at the store before you buy it.

John Hyland
I am south-american, and it is annoying when people speak about "America" as the US. Canada and South America also belong to America. Forgive me if I am offending you, it is not my intention, it is only to clarify about this behaviour I have seen a lot during in the web.
lurks
No, that's totally fair. It's common here, so I don't even think about it, but I can see where you're coming from there. Sorry about that, and I'll try to refer specifically to the US in the future when that's what I actually mean. Thanks for pointing that out.
John Hyland
+3  A: 

Is it a great set of books? Yes.

Would you benefit from knowing it inside out? Probably, though it might not directly translate to a performance improvement for you.

Are you likely to actually read it from cover to cover? Very unlikely, IMHO. I like it better as a reference book, but admit that I haven't used it much in the years since the internets came about... I would recommend looking at a copy at a library and deciding if actual ownership is worth it for you. Unlike lawyers (or doctors), we don't directly benefit from populating our walls with tomes we don't actually have the time to read.

There are much more concise and cheaper books with good CS background (e.g., Cormen and Rivest), and there are many books that would likely apply more to your day-to-day work (e.g., project management, coding style, software engineering). If you have a CS background, investing in Code Complete, Code Clean, a book or refactoring or so on is a much better investment.

And again, if you live in a major city, check your public library. A lot of them stock great professional books that typical patrons never bother to borrow. You can there borrow them for months for free, giving you enough time to read.

Uri
+2  A: 

I highly recommend it.

The volumes cover important algorithms in a depth and with a readability that you will rarely find elsewhere. Having them implemented in that old-school assembler can be irritating, since it is based on an architectural model that makes little sense now. However, I prefer that to having them implemented in a high-level language that is no longer used.

There is very little in computer science that is truly new. Reading Knuth is a great way to understand not only what algorithms exist for some problem, but also why they work, and what their limitations are.

Christopher
only if you have substantial knowledge of mathematics
Mitch Wheat
That's not true. You may need it to follow some of his explanations, but a basic programmer's math background is sufficient for the vast majority. He even points out which information requires a strong math background.
Christopher
A: 

I've only paged through these at the book store. As a person who does business app programming and I can say I wouldn't find enough practical value in them to justify the price or shelf space. Much of the practical material in that book has already pervaded programming culture.

I can easily see how they would have value for computer scientists and lower level programmers as they are a source of mathematical truth / proof.

Daniel Auger
+2  A: 

You might want to look at Cormen's Introduction to Algorithms and see if that will suffice. Then you'd have some extra $$ to spend on other resources.

tvanfosson
A: 

The Knuth collection isn't going to teach you how to be a better programmer, necessarily. But it is an outstanding set of reference books that you can make use of for years to come.

If you have the money, then it's worth getting them. If money is tight, you might want to spend it on something more closely tied to the problem domains you're focusing on.

Gerald