4 ms·
I still read TAOCP, particularly vol 4, for fun from time to time, but I have to admit that the days are long gone when an ordinary engineer needs to study algo
by hintymad 4y ago
I still read TAOCP, particularly vol 4, for fun from time to time, but I have to admit that the days are long gone when an ordinary engineer needs to study algorithms in depth. The vast number of libraries and services are good enough that most people just need to know a few terms to function adequately for their jobs. I guess it's a good thing as it shows how robust the software abstractions are, in contrast to mathematics. It's just that I feel quite nostalgic about the countless days I spent understanding, proving, and implementing fundamental algorithms and data structures.
- mhh__ 4y agoThere will always be a "higher" type of engineers who want to read TAOCP and similar. My issue with the books is that they're actually quite long winded even by what you'd expect from the tone. There's some really cool stuff in them, obviously, but I think they're objectively not very good textbooks for any purpose. Then again I'm coming from a background of physics rather than mathematics so I'm not set out for a real battle of wits when it comes to constructing proofs.
- kenjackson 4y agoI think they are excellent textbooks if your goal is to learn all about algorithms. And by this I mean he takes these great tangents into slightly different derivations that lead to wildly different complexities. Or why somethings are actually ambiguous or some interesting special case. And maybe even more importantly, a great collection of problems to work through. I think it is actually an underappreciated text nowadays.
- mhh__ 4y agoMy gripe is that there is an order through them that is an excellent textbook, but the lexical order through the book is usually very long winded and meanders immensely. Meandering through topics is good, but he meanders through style as well: sometimes he was in a mathematical mood, sometimes he was feeling more practical. I think it's better to intuit first then formalize, Knuth likes to do these in groups of pairs rather than a pair of groups. Knuth is not the worst at this, but the lost potential is the greatest in his writing.
- gonehome 4y agoRelated to your higher type of engineer: http://employees.oneonta.edu/blechmjb/JBpages/m360/Profession%20I%20Asimov.pdf http://employees.oneonta.edu/blechmjb/JBpages/m360/Professio... It’s a good short story if you’ve got 20min.
- hintymad 4y agoTAOCP is meant to be a textbook, a reference, and a historical account of algorithm development. I find it most rewarding to pick the most interesting part to me at the moment to read. I also ignore the MMIX code (even though I did work through the MMIXware book) and focus on first intuition, then code, and then the math that teaches me new ideas or new methods. I find the MMIX code less relevant to my line of work now as getting down to machine-level optimization requires a whole new different suite of tools. The ensuing optimizations on modern CPUs seem deviated from what the MMIX code can help.
- gralx 4y agoYeah, TAOCP's casual style puts me off too. Side by side with high watermarks in technical writing like The C Programming Language, Specifying Systems, or Loney's Elements of Coordinate Geometry its shortcomings are pretty obvious. But that's an opportunity for a clever editor to make an actual reference manual out of TAOCP sometime in the future. Knuth's a good, engaging writer, but TAOCP's content and typography are definitely better thought out than the prose. EDIT: Just remembered a BBC interview with a philosophy professor about Kant. Apparently Kant is criticized for being really verbose. The professor's retort was he sensed Kant had so much to say and so little time to say it that he didn't edit very carefully, giving it a similar kind of bloated, meandering quality. Even so, Kant is held up as one of the GOATs, because in the end it's the content that counts.
- bigcat12345678 4y agoThe most valuable part of TAOCP, for me, is its writing. I've never read anything that is more precise or intuitive. TAOCP is also pleasant to read. It's the book that I go back to once a while after being bothered by the sloppiness in the documents and papers and many other written materials consumed everyday. Reading it gives a sense of enlightenment that regardless of all those poor writing, there is hope to reach the clarity that I have the deepest desire for.
- orlp 4y agoMy only gripe with TAOCP is its usage of MMIX.
- DeathArrow 4y agoYep, at least he could use an OOP language, and some niceties like builders, decorators, factories, 15 layers of abstraction and indirection so everybody knows it's pro grade stuff. :)
- laichzeit0 4y agoIf I where to ask “So what should he have used instead?” it would quickly derail this thread. There would be no consensus. Knuth probably foresaw this exact problem and more.
- DeathArrow 4y agoHalf of people would say Javascript and the other half Python. :) Yes, I know those languages didn't exist at the time Knuth was forging his books.
- disgruntledphd2 4y agoYeah, if you read the intro to Volume 1, he specifically calls this out as an issue. I personally think he's taking a subtle dig at Numerical Recipes here, which did take the "modern" language approach.
- StillLrning123 4y ago
- mellavora 4y ago
- SoftTalker 4y ago> the days are long gone when an ordinary engineer needs to study algorithms in depth Except to pass the interview screens at high-profile tech companies?
- hintymad 4y agoMost leetcoders simply memorize one or two solutions instead of studying algorithms holistically. I suspect that many would spend time understanding that generating gray code can be mapped to mixed-radix number system (nor should us anyway, albeit it's really really cool). Leetcode does not require understanding of advanced data structures either. Instead, it's full of clever tricks and specific solutions with which entry-level ACM participants are well versed.
- DeathArrow 4y agoI think it's harder to memorize hundreds of solutions than it is to understand a few tens of algorithms and their use cases. Like with math, it's easier to learn to solve problems than to learn by heart hundreds of potential problems the teacher might give you on an exam.
- DeathArrow 4y ago> I have to admit that the days are long gone when an ordinary engineer needs to study algorithms in depth Even that I architect and write software for a living, I don't consider myself an engineer, but a computer scientist. I've studied Computer Science in University, not Engineering. I like to understand how things work, why they work, how would they work if anything would be changed. I like to try, discover and do new things, not new only for me, but things which weren't done previously. And that is impossible without a solid understanding of theoretical principles and continuous learning. If I wouldn't be into computers, I could see myself as a mathematician, physicist, biologist, doctor, artist or architect but not as an engineer since I do like to go deeply to the root of knowledge, not just apply the said knowledge. I see a great value in engineering mentality, but it's just not for me.