Hacker News new | past | comments | ask | show | jobs | submit login

I would donate my kidney if it'd help Knuth live long enough to finish his series!



Not to innuade the value from his books; but I do have a question.

Are his books useful for someone who are into improving his daily-job-programming skills? I gave a look at the indexes of his books, they seems more relevant for when I was into algorithmic programming competitions.


I read all of the first three volumes and attempted every exercise. It took me a little over three years, and most of the focus was on very low-level stuff like random number generation, arbitrary precision math, sorting (of course) and memory management. The first book is half math and then a lot of the rest discusses his assembler language MIX. The middle third or so of volume 3 discusses how to optimally sort files that are stored on tape (!) that are too large to fit into main memory. So, no... rather than to say the books aren't _useful_ for a practicing programmer, I'd say that there are far, far more productive uses of your time. However, I really enjoyed reading them, and I'm glad I did, and I recommend them to everybody. I think they've made me a better programmer in the sense that I can appreciate what goes into the routines that I'm using, but I doubt I'll ever have cause to prove the runtime bounds of an algorithm like Knuth does.

I have peeked at the two new volumes (4a & 4b) and it looks like they spend a lot of time on graph algorithms, which _are_ contemporary and something you might apply directly. All of the examples are in MMIX (a more modern, but still imaginary, assembler dialect), so if you wanted to jump right into 4A, you'll have to learn MMIX first. You can download the MMIX description off of Knuth's website (https://www-cs-faculty.stanford.edu/~knuth/mmix.html) if you want to dip your toes into Knuth before committing to one of the books.


What is your Math background, if I may ask? I want to know how mathematically mature one has to be to attempt the exercises.


I had an MSCS when I started, but if you did a STEM undergrad, you should be fine - he actually explains everything you need. Don’t get me wrong: the problems are brain-bendingly difficult, but you don’t need to know how to do them before you start.


The answer to that question may come down to philosophy. Does it help your daily work to really understand things that are only slightly connected to what you are doing?

I've only read a tiny bit of TAOCP but I believe reading it would be quite useful in the long run. But if I were to read it, I wouldn't do it for the usefulness but rather because gathering knowledge and understanding is the right thing to do. There must be a million things that are more useful in the short term, and really reading TAOCP is bound to take years.


His books are very far removed from contemporary programming. That said, I would probably read them as a grad student in CS since they're a classic in the field (and Knuth is a funny writer). They introduce you to a lot of math, as well as a more theoretical approach to things like data structures and algos.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: