That's pretty much what my copy does. I'm grateful the profession has TAOCP as a resource, but the reality for the majority of workaday engineers is that most of the sort of art described in that series is abstracted out into libraries. As fun or challenging as it might be to thinking about developing your own implementation of a fundamental algorithm or data structure, you're probably far better off reusing whatever you have available to you already in your environment. This has the tendency of pushing the work to the boundaries, where engineering is more about connecting existing pieces than anything else. (Which isn't a problem... I'd hate to live in a world where every home that's built requires the builder to cut down trees and process their own lumber, etc.)
I do least take solace in the fact that the contents of TAOCP are a lot less likely to get stale than the majority of tech books.
> That's pretty much what my copy does. I'm grateful the profession has TAOCP as a resource, but the reality for the majority of workaday engineers is that most of the sort of art described in that series is abstracted out into libraries.
The books are a collection of algorithms and commentary on them. That is not that different from a collection of algorithms in a library.
> you're probably far better off reusing whatever you have available to you already in your environment
I think even Knuth himself would agree here - but it’s also worth going through the implementation yourself once or twice (even if you just throw it away) until you really understand what it’s doing, so that you know what’s most useful when.
> but it’s also worth going through the implementation yourself once or twice (even if you just throw it away)
I tend to agree, but I'm not completely sure where I'd draw the line between things you have to implement to 'really understand' and things you can just use. ie: I've written hash tables over the years, but I've never written a persistent (think Clojure) style hash table. Maybe I should write one to really understand it? It sounds like fun, and I'd probably learn a lot, but I'm also not at all convinced it would help my effectiveness. The argument becomes even less convincing at larger scales and lower layers. (I don't need to implement a language runtime or SQL database to understand how to use one effectively. Even if, again, both of those sound like a lot of fun and a good way to learn some thing.)
If I had to come up with a general guideline, it would be to encourage developers to be mindful of what's around their layer of the stack and be prepared in the (very unlikely) event to work in one of those layers. But even that's kind of handwavey.
It's the fundamental reference which is why I listed it. It's not a series of books one reads from start to finish. I use it as a reference. It's nice having only one source to go to if I need to get the low down on red-black trees, complexity analysis, etc.
It's not a page turner where you'll read it from start to finish. It's a resource. As you encounter subjects in computer science and math you can be sure there's a section on it in TAOCP with a deep dive into it.
I pull mine out from time to time when doing research mostly. I've mostly been interested in automated theorem proving, logical databases, etc. Proof search and deductive queries have a lot of moving parts, need to be fast in order to be interactive, and while the book on combinatorics isn't finished yet... the faciles have been amazing.
Yes they do mostly sit there for the most part. But then again so do most of my books. TAOCP is thoroughly researched and hands-down the best resource for a precise treatment of its subjects.
> It's not a page turner where you'll read it from start to finish. It's a resource.
I’ve seen other people suggest that, and I always find it surprising. I did read all of them (well, the first three, anyway) cover to cover, and I can’t imagine trying to jump into the middle without having absorbed all of the preceding material first. The book is so full of back references that even having read everything in order I still found myself turning back to re-read sections that were referred to later. I’m genuinely curious, which sections were you able to make sense of “standalone”?
In my small sample size you would be the first person I've met to claim to have read all three cover to cover! That's an amazing achievement.
I don't remember exactly but I've found chapters in the first book on fundamental structures such as trees and sorting algorithms tend to stand well alone.
More recently I've been diving into Book 4, Facile 6 on SAT solvers, combinatorics. I tend to already have some familiarity with the material so it seems to me to stand well on its own.
I really enjoy Knuth's writing style however and appreciate his scrupulousness. The references and indices are top-notch so that if you aren't familiar with the prerequisites they are easily found!
This. IMO Knuth's writing is also a pleasure to read. Some concepts are hard and sometimes I just have to skip some math derivations but overall it's certainly not a dry technical reference (even though it can be used as one).
Same here about volume 1 — I only have it because my father got it somewhere but neither of us read it much, it's just collecting dust.
However I'm now buying & progressing through volume 4 which Knuth is gradually releasing, and it's _way_ more readable, more novel for me (I already learnt my quicksort from more approachable sources, but this contains recent advanced stuff) as well as fun, if you're mathematically inclined.
Knuth still formats algorithms pretty badly IMHO, with little indentation, one-liner loops, "return to step 2" jumps, single-letter names etc. But at least they're not in assembly any longer :-)
This puzzles me from a man who pays tremendous attention to presentation and readability, literally wrote the book on typesetting algorithms & system he devised _for writing this book_, and introduced the idea of literate programming.
Surely this is not oversight but very deliberate style, I just don't enjoy it much, but I'd love to learn why he chose it...
Same here. I started to read it with the intention of getting a cheque, but that certainly never happened.
Then I read a Knuth book that really interested me and... there I've got my cheque. Didn't have to read much either, the first word in the first sentence on page Roman One was incorrect. :-)
I'm guessing like most people who bought it, it sits collecting dust on the shelf.
Youthful naivety is the only reason I bought it. Completely impenetrable but look, "I'm a real™ software engineer now"