TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Ask HN: Is Knuth's TAOCP worth the time and effort?

255 pointsby toinewxover 1 year ago
I&#x27;m starting the first volume. Right at the start, Knuth introduces Induction Mathematical Proof, and more specifically tries to show that we can describe it as an `algorithm mathematical proof`.<p>I showed it to a friend who is quite good at math, and he told me the book may be trying too hard especially in the examples variety, and how it might not be needed for comprehension&#x27;s sake.<p>Would you still recommend this book, and if yes, in what circumstances?

58 comments

svatover 1 year ago
A little bit of history about the book series may help understand what is in it.<p>In 1956, Knuth graduated high school and entered college, where he encountered a computer for the first time (the IBM 650, to which the series of books is dedicated). He took to programming like a fish to water, and by the time he finished college in 1960, he was a legendary programmer, single-handedly writing several compilers on par with or better than professionals (and making good money too). In 1962 when he was a graduate student (and also, on the side, a consultant to Burroughs Corporation), the publisher Addison Wesley approached him with a proposal to write a book about writing compilers (given his reputation), as these techniques were not well-known. He thought about it and decided that the scope ought to be broader: programming techniques were themselves not well-known, so he would write about everything: “the art of computer programming”.<p>This was a time when programming a computer meant writing in that computer&#x27;s machine code (or in an assembly language for that machine) — and some of those computers were little more than simple calculators with branches and load&#x2F;store instructions. The techniques he would have to explain were things like functions&#x2F;subroutines (a reusable block of assembly code, with some calling conventions), data structures like lists and tries, how to do arithmetic (multiplying integers and floating-point numbers and polynomials), etc. He wrote up a 12-chapter outline (culminating in &quot;compiler techniques&quot; in the final chapter), and wrote a draft against it. When it was realized the draft was too long, the plan became to publish it in 7 volumes.<p>He had started the work with the idea that he would just be a “journalist” documenting the tricks and techniques of other programmers without any special angle of his own, but unavoidably he came up with his own angle (the analysis of algorithms) — he suggested to the publishers to rename the book to “the analysis of algorithms”, but they said it wouldn&#x27;t sell so ACP (now abbreviated TAOCP) it remained.<p>He polished up and published the first three volumes in 1968, 1969, and 1973, and his work was so exhaustive and thorough that he basically created the (sub)field. For example, he won a Turing Award in 1974 (for writing a textbook, in his free time, separate from his research job!). He has been continually polishing these books (e.g. Vols 1 and 2 are in their third edition that came out in 1997, and already nearly the 50th different printing of each), offering rewards for errors and suggestions, and Volume 4A came out in 2011 and Volume 4B in 2023 (late 2022 actually).<p>Now: what is in these books? You can look at the chapter outlines here: <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;w&#x2F;index.php?title=The_Art_of_Computer_Programming&amp;oldid=1176536519#Chapter_outlines" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;w&#x2F;index.php?title=The_Art_of_Comput...</a> — the topics are low-level (he is interested in practical algorithms that one could conceivably want to write in machine code and actually run, to get answers) but covered in amazing detail. For example, you may think that there&#x27;s nothing more to say about the idea of “sequential search” than “look through an array till you find the element”, but he has 10 pages of careful study of it, followed by 6 pages of exercises and solutions in small print. Then follow even more pages devoted to binary search. And so on.<p>(The new volumes on combinatorial algorithms are also like that: I thought I&#x27;d written lots of backtracking programs for programming contests and whatnot, and “knew” backtracking, but Knuth exhausted everything I knew in under a page, and followed it with dozens and dozens of pages.)<p>If you are a certain sort of person, you will enjoy this a lot. Every page is full of lots of clever and deep ideas: Knuth has basically taken the entire published literature in computer science on each topic he covers, digested it thoroughly, passed it through his personal interestingness filter, added some of his own ideas, and published it in carefully written pages of charming, playful, prose. It does require some mathematical maturity (say at the level of decent college student, or strong high school student) to read the mathematical sections, or you can skim through them and just get the ideas.<p>But you won&#x27;t learn about, say, writing a React frontend, or a CRUD app, or how to work with Git, or API design for software-engineering in large teams, or any number of things relevant to computer programmers today.<p>Some ways you could answer for yourself whether it&#x27;s worth the time and effort:<p>• Would you read it even if it wasn&#x27;t called “The Art of Computer Programming”, but was called “The Analysis of Algorithms” or “Don Knuth&#x27;s big book of super-deep study of some ideas in computer programming”?<p>• Take a look at some of the recent “pre-fascicles” online, and see if you enjoy them. (E.g. <a href="https:&#x2F;&#x2F;cs.stanford.edu&#x2F;~knuth&#x2F;fasc5b.ps.gz" rel="nofollow noreferrer">https:&#x2F;&#x2F;cs.stanford.edu&#x2F;~knuth&#x2F;fasc5b.ps.gz</a> is the one about backtracking, and an early draft of part of Volume 4B. <a href="https:&#x2F;&#x2F;cs.stanford.edu&#x2F;~knuth&#x2F;fasc1a.ps.gz" rel="nofollow noreferrer">https:&#x2F;&#x2F;cs.stanford.edu&#x2F;~knuth&#x2F;fasc1a.ps.gz</a> is “Bitwise tricks and techniques” — think “Hacker&#x27;s Delight” — published as part of Volume 4A. Etc.)<p>• See what other people got out of the books, e.g. these posts: <a href="https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?article=art055" rel="nofollow noreferrer">https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?artic...</a> <a href="https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?article=art063" rel="nofollow noreferrer">https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?artic...</a> <a href="https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?article=art070" rel="nofollow noreferrer">https:&#x2F;&#x2F;commandlinefanatic.com&#x2F;cgi-bin&#x2F;showarticle.cgi?artic...</a> are by someone who read the first three volumes in 3 years. For a while I attended a reading group (some recordings at <a href="https:&#x2F;&#x2F;www.youtube.com&#x2F;channel&#x2F;UCHOHy9Rjl3MlEfZ2HI0AD3g" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.youtube.com&#x2F;channel&#x2F;UCHOHy9Rjl3MlEfZ2HI0AD3g</a> but I doubt they&#x27;ll be useful to anyone who didn&#x27;t attend), and we read about 0.5–2 pages an hour on average IIRC. And so on.<p>I find reading these books (even if dipping into only a few pages here and there) a more rewarding use of time than social media or HN, for instance, and wish I could make more time for them. But everyone&#x27;s tastes will differ.
评论 #38444924 未加载
评论 #38444724 未加载
评论 #38444613 未加载
评论 #38444639 未加载
评论 #38444562 未加载
评论 #38447037 未加载
评论 #38446454 未加载
评论 #38445284 未加载
评论 #38444673 未加载
nickcwover 1 year ago
I&#x27;ve read most of Volumes 1-3 of TAOCP.<p>I think you can read at various levels though.<p>When I say I&#x27;ve read most of Volumes 1-3, I mean literally that, I read the text through. At that level it isn&#x27;t too difficult to read, and you&#x27;ll learn a lot like that.<p>However some bits I&#x27;ve studied in much greater detail, like for instance the multi-precision arithmetic algorithms which I had to implement. For that I read it multiple times, implemented the algorithms, did some of the exercises. That takes much much longer than just reading it through.<p>It is rather like reading a research paper which you do roughly like this, stopping after any step where you think it is no longer providing value to you.<p><pre><code> 1. Read the title 2. Read the abstract 3. Read the paper through quickly. 4. Read the paper through slowly being more critical, making notes. 5. Read the paper through again working through the maths, implementing the algorithms, making sure you understand everything. </code></pre> To get the most out of it, you&#x27;ll need to go to level 5, but you can get a great deal out of it at the earlier levels.<p>So I&#x27;ve read most of TAOCP at level 3, half a volume at level 4 and only 50 pages at level 5.<p>If nothing else I&#x27;ve loaded the index in my head!<p>PS the examples are notorious in TAOCP. The easy ones will take a few minutes and the hard ones are unsolved research problems!
评论 #38444372 未加载
scrlkover 1 year ago
D. Richard Hipp used TACOP to implement a B-tree for SQLite:<p>&gt; &quot;Nobody ever taught me about a B-tree. I had heard of it. When I went to write my own B-tree, on the bookshelf behind me, I’ve got Don Knuth’s The Art of Computer Programming, so I just pulled that down, I flipped to the chapter on searching and looked up B-trees and he described the algorithm. That’s what I did. Funny thing, Don gives us details on the algorithm for searching a B-tree and for inserting into a B-tree. He does not provide an algorithm for deleting from the B-tree. That’s an exercise at the end of the chapter, so before I wrote my own B-tree I had to solve the exercise at the end. Thanks, Don. I really appreciate it.&quot;<p><a href="https:&#x2F;&#x2F;corecursive.com&#x2F;066-sqlite-with-richard-hipp&#x2F;#b-trees-and-the-art-of-computer-programming" rel="nofollow noreferrer">https:&#x2F;&#x2F;corecursive.com&#x2F;066-sqlite-with-richard-hipp&#x2F;#b-tree...</a>
评论 #38444946 未加载
评论 #38451035 未加载
jll29over 1 year ago
I recommend you read through volumes 1 and 3 cursorily, skipping things you can&#x27;t immediately understand.<p>I read through volume 1 several times. I then skimmed through the arithmetics part of volume 2 and read only the section about random numbers, which is very fascinating but you will be able to live without unless you are doing simulations or cryptography&#x2F;cryptoanalysis.<p>Whether you will need volumes 4a, b, c depends on whether your work has much to do with combinatorics. I&#x27;m a professor and I did not need most of it, but had a good laugh about the hidden gems and jokes like the exercise about Knuths personal pipe organ.<p>As a software engineer, you may occasionally consult volumes 3 and 1 (searching, sorting, data structures).<p>[Side node: If I was Knuth, I don&#x27;t think I would have created three subvolumes instead of the planned single volume 4. While it is true that the material exploded, that will always be the case, and is also true for the other chapters. In his shoes, I would have worked on succession planning and trying to map out the remaining volumes so that the book can be completed one day. Under Knuths approach (esp. going back to update the existing volumes repeatedly on the way) TAOCP will unlikely ever be completed, which would be a shame.]
评论 #38445783 未加载
评论 #38444978 未加载
denton-scratchover 1 year ago
Many other commenters apparently take the view that TAOCP isn&#x27;t much help to a modern, professional programmer.<p>That&#x27;s probably true, in the sense that it deals largely with the kind of functionality modern programmer should be calling from a library, not implementing by hand. But I think it&#x27;s hugely enriching to read these books. I read 1-3 back in the 70s, and was particularly inspired by Sorting and Searching, and especially the chapter on random numbers. RNGs have intrigued me ever since.<p>I find Knuth&#x27;s writing style very pleasant. He&#x27;s funny. So is it worth the time and effort? Not if &quot;worth it&quot; means &quot;makes you a better Javascript programmer&quot;. But it&#x27;s worth it in the sense that reading books about the history and geography of a country is &quot;worth it&quot; before visiting; your appreciation of the place is deepened, possibly transformatively. It could even be that you would never have visited had you not read those books.<p>I found TAOCP easy to read, much more so than most textbooks. I don&#x27;t think I tackled many of the exercises; certainly none of the challenging ones. So for me, the &quot;effort&quot; aspect of &quot;is it worth the time and effort&quot; was quite low, so the ROI was quite high. If you find the books hard to read, then don&#x27;t bother (and perhaps you aren&#x27;t really interested in low-level algorithms).
ACS_Solverover 1 year ago
I worked through parts of TAOCP when I was a graduate student (and by parts I mean a very small, tiny fraction of the book). It was highly useful to demonstrate rigorous techniques of how we can analyze algorithms, and I used it a couple times as a reference material. I would only recommend the book to people who want a career in academic CS or are looking for an exhaustive theoretical understanding of the topics covered. A &quot;proper&quot; read of one TAOCP volume would probably take in excess of a year for a well-prepared reader.<p>TAOCP is extremely rigorous and detailed, the discussion of any topic there will cover every detail. For practical software engineering, it&#x27;s not useful, you don&#x27;t deal need that level of theoretical understanding as a software engineer (if you&#x27;re one of the few who need it, you&#x27;d know you are). And you need a very solid mathematical background to actually understand it.<p>If you want to understand the theory of CS algorithms, I think the CLRS &quot;Introduction to Algorithms&quot; is an excellent textbook. It covers about everything most people are likely to encounter, has comprehensive mathematical analysis but is much easier to follow than TAOCP. For an understanding of the mathematics involved, Concrete Mathematics is a good book, it teaches the mathematical concepts and tools that are the foundation of other, more rigorous books.
PennRoboticsover 1 year ago
TAOCP is about like reading an encyclopedia; a very well-written, black and white encyclopedia with not-necessarily-clear illustrations.<p>For instance, I just opened randomly to the binary tree traversal material in Vol. I. It&#x27;s very <i>mathematic</i> or <i>formal</i>, e.g. &quot;T2. [P = Λ?] If P = Λ, go to step T4.&quot; and so on. To fish out some of the more interesting details, you have to look through the questions and then flip to the answers.<p>Meanwhile, <a href="https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tree_traversal" rel="nofollow noreferrer">https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Tree_traversal</a> has the same information but somehow more clearly presented.<p>If I flip to other random pages and scan for 30 seconds, I can&#x27;t find much that is actually interesting---particularly in the early volumes.<p>-----<p>The Art of Electronics is more my speed, as it&#x27;s a collection of real-world applications, deep dives into each component type, quick comparison tables, and clear overview of a specific design&#x27;s pros and cons. It&#x27;s as much interesting to read through as it is useful as a reference.<p>I can flip to basically any random page of The Art of Electronics and find something eliciting, &quot;Oh cool.&quot; I can&#x27;t say the same for TAOCP.
linguaeover 1 year ago
One suggestion: if the mathematical preliminary section in Volume 1 of TAOCP is too difficult, you might benefit from the textbook <i>Concrete Mathematics</i> by Graham, Knuth, and Patashnik. <i>Concrete Mathematics</i> is essentially a gentler (but still rigorous) introduction to the mathematical concepts covered in the first volume of TAOCP.
评论 #38444570 未加载
rzzzwilsonover 1 year ago
If you are at all interested in computer science, read volume 1. If you want to go further after that look at the other volumes.<p>&gt; he told me the book may be trying too hard<p>Knuth isn&#x27;t trying to write a novel or something to learn from, rather a concise, comprehensive attempt to cover the field of Computer Science. It&#x27;s a repository of knowledge. He marks some exercises at 50 which, from memory, means that if you can solve it fully you are in the running for a Turing award. One of the Python core developers was once asked what the developers did in their sparetime: We read Knuth so you don&#x27;t have to [0].<p>[0] <a href="https:&#x2F;&#x2F;www.norvig.com&#x2F;quotations.html" rel="nofollow noreferrer">https:&#x2F;&#x2F;www.norvig.com&#x2F;quotations.html</a>
max_kover 1 year ago
This is certainly a matter of taste. I saw many prominent people everywhere praising TAOCP, but I was disappointed when I finally read the first three books some 10+ years ago. So much disappointed that I regret taking all the time to read it - not because they&#x27;re bad books, but because I think that time would have been better spent learning things a different way. What bothered me most is MIX. I think using a very low-level language to teach algorithms is a pretty bad choice. Algorithms are high-level concepts, and using an assembly-like language just distracts from those concepts; it requires you to solve so many micro-problems orthogonal to the real problem, and forces you to repeat yourself over and over. I prefer to implement abstract ideas in abstract code. Using MIX just causes suffering for no point. I learned a lot about math from TAOCP (but I&#x27;ve never needed it for anything).
评论 #38444482 未加载
评论 #38444362 未加载
adastra22over 1 year ago
Your milage will vary. I got zero value from the books.<p>They do make a good doorstop though.
评论 #38444170 未加载
评论 #38445059 未加载
评论 #38443883 未加载
bregmaover 1 year ago
TAoCP is a delightfully written comprehensive encyclopedia of computer science for those interested in learning how and why stuff works; it is fundamental theory at its best. Without having read it I would have spent my life without even knowing something like a biased base 3 numeric representation even existed (each digit of a number is represented by 1, 0, or -1 using a radix of 3 -- wonderful!). I have yet to find a practical application for much of what I&#x27;ve read, but maybe that&#x27;s why it&#x27;s got &quot;art&quot; right there in the title.<p>If you&#x27;re looking for some browser scripting code to cut and paste, you can go to Stack Overflow or Chat GPT to have your thinking done for you. If you want to understand what you&#x27;re doing, pull out your dog-eared well-worn copy of TAoCP and spend some warm quality time with D. E. Knuth.
retracover 1 year ago
Have you read Euclid&#x27;s Elements? Did you enjoy the proofs? And the general process? The conclusions in the Elements are what any 10th grade geometry student should already know. It&#x27;s not the conclusions though, but the journey. Some people still swear by Euclid, claiming the Elements helps teach a person how to think.<p>TAOCP is in that vein. As you have identified, it is not a programming book, and it&#x27;s not a computer engineering book, and it&#x27;s not really a college textbook either. It is a computer science book in the old tradition, where computer science is treated as a branch of mathematics.<p>It won&#x27;t teach you to program. As another user said, you should probably be using the algorithm your language&#x27;s standard library provides. Now, if you want to know <i>why</i> a library&#x27;s author chose a particular algorithm, the trade-offs between the options, and an open-ended and in-depth exploration of such topics, then this is the book for you. The author of that optimized tree search function you&#x27;re using probably read TAOCP at some point, so you don&#x27;t have to.
dragoneliteover 1 year ago
Does a christian needs to read the bible to a be christian not really. Same with TAOCP and programmers, but the more you read about CS the more complete of a programmer you become.<p>For example i never thought i would use the basic compiler knowledge i gained during my bachelor. But at one of my first consulting gigs it did helped knowing about abstract syntax tree, where you can add and remove nodes. This knowledge helped me create a highly automated refactoring tool for an old but massive enterprise code base.<p>This was the only situation in my whole career for now where i needed this knowledge, the rest has all been about creating webpages and rest apis :p
评论 #38449020 未加载
评论 #38444545 未加载
oytisover 1 year ago
As a pastime, maybe. For a practitioner CLRS offers better value for time spent IMO, and is not devoid of mathematical rigor either.
评论 #38444019 未加载
mikewarotover 1 year ago
If you&#x27;re a mapper[1] like me, it sure is. I ignored the math I couldn&#x27;t grok, and got all those lovely well described computer fundamentals to grind against the things I already knew, and discover new connections.<p>[1] <a href="https:&#x2F;&#x2F;wiki.c2.com&#x2F;?MappersVsPackers" rel="nofollow noreferrer">https:&#x2F;&#x2F;wiki.c2.com&#x2F;?MappersVsPackers</a>
bryanrasmussenover 1 year ago
I&#x27;ve read SICP - loved it until it got into the later object orientation parts - so I&#x27;m wondering in if you LOVED X IS Y FOR YOU sort of comparison -<p>What books if you liked will you like TAOCP<p>If you hated skip TAOCP.<p>Me:<p>Loved SICP<p>totally wore out Godel, Escher, Bach<p>Somewhat angry at A New Kind of Science
评论 #38444638 未加载
hintymadover 1 year ago
I&#x27;d recommend it, but I wouldn&#x27;t recommend reading it cover to cover. It really depends on what you need. Here is what I read selected chapters for:<p>- For expanding my conceptual understanding of algorithms. I still remember the thrill of learning how the Joseph&#x27;s problem can be modeled as base-n modulo arithmetics. Or how powerful it is to use generating functions to compute algorithm complexities. And I read the vol 4 for a pleasant study of how we can code back-tracking in an almost mechanical way.<p>- For historical context. Knuth is amazing at tracing the roots of algorithms, and show how the solutions to a problem evolve over time. You&#x27;ll get high when seeing how a seemingly impossible problem gets solved in such elegance and ingenuity over generations of attempts by great minds. Check Vol 4 for all the wonders of combinatoric algorithms, for example.<p>- For thorough study and pure awe. For instance, one probably learns a bit about ordered binary decision diagram (OBDD) to reduce state space by thousands of times in a formal verification system. But what if you want to see all the amazing details of OBDD and therefore getting hours of dopamine high? Vol 4 is the go-to place.<p>- For reference. At least for a student. I got stuck implementing a fibonacci heap for my project on memory management in my OS class. And Knuth&#x27;s books came to rescue. I guess professionals would still refer to Knuth for their implementation from time to time.
bawolffover 1 year ago
This is a book that is literally famous for being one of the most rigourus and comprehensive computer science books ever written. I feel like if you don&#x27;t already know what you&#x27;re getting into then it probably isn&#x27;t what you are looking for.
barrkelover 1 year ago
It&#x27;s not usually useful, per se, unless you are able to refer to it during programming competitions, or if you&#x27;re implementing a runtime library and want to brush up on the tradeoffs of some low level algorithms - but even then, the state of the art for e.g. sorting is outside the books.<p>I think the reader is improved for having read it, because it can open one&#x27;s eyes to the fractal detail of solutions to coding problems.
voidhorseover 1 year ago
I haven&#x27;t actually read TAOCP (yet!) so take this with all the salt you have on hand, but most fields are divisible into primary and secondary works. The ones you should read depend on how interested you are in the field and whether you want practical knowledge or deep conceptual knowledge.<p>Take mathematics as an example. It has a rich history of primary sources written by famed mathematicians. Most people never even glance at these sources and gain a practical understanding of mathematics strictly through secondary sources like textbooks. This is perfectly fine for most people that only need to use math mechanically and don&#x27;t care too much about a deep theoretical understanding. If you want the latter however, imo reading primary sources and understanding the <i>history</i> of a field is really important.<p>To me, TAOCP has always been more of a primary source. If you&#x27;re just looking for surface level knowledge and advice that&#x27;s immediately applicable, look elsewhere. If you&#x27;re looking to understand some of the fundamental concepts in the field of computing and their history, it might be a good fit.
teleforceover 1 year ago
Apparently there is another more accessible several volumes algorithm books from another Stanford University professor, Algorithm Illuminated series by Tim Roughgarden:<p><a href="https:&#x2F;&#x2F;theory.stanford.edu&#x2F;~tim&#x2F;won1samplefinal.pdf" rel="nofollow noreferrer">https:&#x2F;&#x2F;theory.stanford.edu&#x2F;~tim&#x2F;won1samplefinal.pdf</a>
yomritoyjover 1 year ago
They are great books about some combinatorial mathematics inspired by programming problems. Not the best investment of time if you want to learn programming itself, because:<p>1. Most of the time you are not implementing foundational algorithms like sorting or SAT solving. You use mature implementation in libraries.<p>2. If you are in fact implementing foundational algorithms, then the existing volumes of Knuth cover only a very limited set of problem areas.<p>3. If you are implementing something in an area covered by Knuth, the books are worth looking into as a reference, but often writing performant and robust code requires considerations not in Knuth. This is because Knuth works with an idealised machine ignoring things like parallelism, memory hierarchy etc. and understandably does not get into software design issues.
评论 #38447700 未加载
h2odragonover 1 year ago
Totally worthwhile. If you don&#x27;t want to sit down and read them linearly, that&#x27;s understandable.<p>Keep them in the bathroom and open them at random at idle moments. Like the Bible or a &quot;Complete Shakespeare&quot; there&#x27;s something worth your time on almost any page you pick.
usrnmover 1 year ago
If you want to pursue an academic career in computer science, then yes, probably, I don&#x27;t know. If you just want to &quot;grok&quot; algorithms to prepare for an interview, then there are much more time efficient ways to do it.
adrianNover 1 year ago
What are your goals? Knuth&#x27;s books are a very rigorous tour through computer science. You will almost never need this amount of rigor as a software engineer, or indeed, as a computer scientist.
varjagover 1 year ago
Check one out from a library and see how you feel after a few chapters.
评论 #38446977 未加载
hiAndrewQuinnover 1 year ago
Occasionally when I&#x27;m doing weird algorithmic stuff I end up with my nose in one of these books, combinatorial algorithms more often than many others.<p>I&#x27;m a big fan, but I think you already have to be pretty deep into the world of algorithms and discrete math to get a lot out of them. I cheated my way into that world by starting my math minor a few years ago with Combinatorics, specifically because I felt like learning how to count things in weird ways would help my autrocious mental math (it did!).
gorkempacaciover 1 year ago
&gt; book may be trying too hard especially in the examples variety, and how it might not be needed for comprehension&#x27;s sake<p>Had a giggle. Sounds exactly like something a mathematician would say.
Uptrendaover 1 year ago
I don&#x27;t think most of us here are the intended audience for a book like this. TAOCP is meant to be a comprehensive compilation of the field of computer science. Such content is useful for people like researchers, lecturers, and those who work on computer languages. But for software engineers - there are much better books that will help you. Some of my favorites:<p>- pragmatic programmer<p>- code complete<p>- hackers and painters<p>That&#x27;s not to say his works are &#x27;bad&#x27; -- but they are very specialized.
al_be_backover 1 year ago
&gt;&gt; I&#x27;m starting the first volume<p>you&#x27;ve told us about your friend (hello there friend), but not said anything about your background &#x2F; the context in which you&#x27;re &quot;starting&quot;. So...<p>It&#x27;s generally aimed for those studying Computer Science and&#x2F;or have deep interest in Theory of programming + computation.<p>Knuth loves algorithms, he even has algorithm on how to Read the book and approach the exercises (difficulty, mathematical complexity etc).
cracrecryover 1 year ago
If you have to ask yourself this question. No, It is not.<p>I read TAOCP out of curiosity long time ago. Has it been useful for me? Very much. But the usefulness came from abstract connections that clicked later in my life almost randomly. I am not a common individual.<p>If you expect a direct practical application of what you read, I believe you better choose other material that suits your needs better.
minusfover 1 year ago
nobody is gonna mention TeX? so i will.<p>yes, i have TAOCP on the shelf and yes guilty of &quot;one day i&#x27;ll ready it&quot;.<p>but every now and then i open them up and just flip thru that magnificent typography.<p>Knuth has not just written up all these things, he has developed an entire typesetting system (complete with fonts) to bring technical publishing screaming and kicking into the 20th century (when other software thought kerning and hypenation were creatures from space). it&#x27;s the only program deserving a version number approximating PI.
pfitzenover 1 year ago
It depends on the user and the usage. In some cases reading these books doesn&#x27;t yield the best return for the investment of your time. Consulting the literature that Knuth refers to, rereading and working through the examples, writing your own code could give you so much more.<p>Volume 2 is within arms reach on my desk. After reading the book and additional literature over the course of several years, the book is filled with sticker notes. Over time my usage shifted from reading TAOCP to rereading (and changing) my notes.<p>&gt; Would you still recommend this book, and if yes, in what circumstances?<p>Everyone in math&#x2F;cs should at least know about the existence of theses books. A rough, cursory knowledge of the content is essential, so that one can look up things if there is the need to really understand a specific topic. TOACP should be considered as one of the best and most important&#x2F;influential science books of the last century.
fastaguy88over 1 year ago
I recommend this book to anyone starting CS and wondering &quot;why do I have to learn all this stuff?&quot; &quot;What good is data structures and algorithms?&quot;<p>Read from a certain perspective, TAOCP is less a book about how to do things better (the focus of many CS courses), and more about &quot;wow, who would have imagined ...&quot;. I think CS students might find their curricula more engaging if, rather than having a set of concepts to master, there were actually interesting puzzles to solve. Thus, I suggest reading TAOCP not as a text book, but more as a novel. Take a look at the parts that interest you (how many ways of sorting 10 numbers can you think of just using paper and pencil?). CS is a lot easier to learn as a process of surprising discovery, than as a set of barriers that must be overcome.
srvmshrover 1 year ago
My advisor used to say:<p>&quot;One of the CS bestsellers which is seldom read. That puts it right next to Bible&quot;<p>From the practical element, mostly No. People won&#x27;t use this as a first book - or the second or third. But if you wanted a reference on something deeper, which missed any of the standard textbooks, this is the book for you.<p>As an illustrative layman example, lets say you are modeling server usage with a mathematical model, most textbooks will tell you &quot;hey, the pings and handshakes closely follow Poisson distribution&quot;. You pick from there and build on that information or mental model. But why Poisson model happens to be that way, why not something else - and how closely the server model cross-correlates will be realm of where TAOCP starts building the problem. It goes a layer or two deeper of yak shaving IMHO
eutopianover 1 year ago
<p><pre><code> If all you want to do is write CRUD apps, the book is not for you. That being said... To quote directly fromt a quote in the book, &quot;Now I see with eye serene, the very pulse of the machine.&quot; I finally jumped the gun and started reading it during the summer after my acquiring my bachelors. I finished the first volume during that summer. Here are some notes: The Mathematical premliminaries reads like a novel if you have some mathematical maturity, you don&#x27;t dwell too much on the sections that are over your head, and you treat the exercises as optional. This is because the book can be read from a HS level all the way through the Post-Grad level. Choose your depth. The MMIX approach was eye-opening because it opened my eyes to see computers as the &#x27;computing&#x27; machines that they are. I indirectly gained a fundamental understanding how everything starts with the CPU. I started seeing all the high-level languages (C++, Python, Rust, Java, etc...) as the abstractions that they are. It is liberating if you have ever felt the uneasiness when you are programming in a high level language when you are nagged by the question &quot;how is the computer doing this?&quot; Algorithms and Data Structures( a.k.a Information Structures in vol 1): It is like going to grammar school for algorithms! Have you ever asked yourself &quot;Why are we learning all of these abstract things about algorithms and data structures?&quot; I got my answer from the book. What I mean by this is that after studying Knuth&#x27;s approach to algorithms, you gain a firm, fundamental, and concrete understanding of their necessity, their role. Afterwards ANYTHING I would encounter on Hackerank or Leetcode became digestible. You gain a &quot;first principles&quot; understanding of algorithms and information structures. I believe that the book stands the test of time largely because of these points. If you have programmed to the point where you&#x27;ve been exposed to some sorting algorithms and some data structures and you want to continue the road to becoming an expert programmer on a firm footing, it is worth the time and effort. The caveat that I would add is do not wait until you finish all the books before you enter the job market or write software out of your own interest.</code></pre>
QuadrupleAover 1 year ago
Funny, my first ever submission to HN was this identically-worded question, with a lot of ensuing interesting discussion:<p><a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10897460">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=10897460</a>
devchixover 1 year ago
I bought a copy after graduating, having seen the serious-looking tomes on the shelves of many TAs and serious people. I was not a very good programmer and I thought possession of this thing would confer a magic aura that would make me look smart and maybe within its pages were incantations I could learn that made me deserve the appearance. I ventured probably past the first 25 pages. This volume and books like it are not for me, I just want to know how to do things, and a deeper understanding for me comes from doing and breaking stuff many times, over time.
jimbominsover 1 year ago
Is Charles Dickens worth it? It&#x27;s a matter of time, taste and purpose (in reading).<p>I&#x27;ve enjoyed dipping in. Sometimes found it directly useful to work. But the best of his works I read (in full) was the MMIX book that is a literate program of the interpreter. Second to that was the typography book, a total fascinating delight.<p>In reality there&#x27;s probably almost no one who reads any volume of TAOCP in full.<p>The only way to answer your question is probably to start reading and see if you enjoy it. But expect it take some effort.
mortallywoundedover 1 year ago
Much of what you&#x27;ll read and learn in the books won&#x27;t have any immediate impact on you or your career. If there is an impact, it will be subtle.<p>Does that mean you shouldn&#x27;t read it? Maybe. Honestly, it doesn&#x27;t matter if you read it or not. Do it if you want to, but do it without the expectation of getting something out of it.<p>If you want a return on investment for your time, you&#x27;re better of building something with the knowledge you already have. Put the books away and create something.
commandlinefanover 1 year ago
I read the first three volumes and at least attempted all of the exercises. I got the easy ones, made some progress on the harder ones, and at least understood the &quot;impossible&quot; ones. These books are written on the assumption that you&#x27;re going to work all of the exercises - I don&#x27;t think that if you just read them you&#x27;ll get a lot out of them.<p>I really enjoyed working through them - I keep meaning to get around to volume 4, but can&#x27;t seem to find the time to do so.
JohnFenover 1 year ago
I recommend it because it gives an excellent overview of the fundamentals of the field. Well, honestly, because the series of books were formative for me so I&#x27;m a bit biased. I can&#x27;t overstate the value I got from them. I still use them as reference works to this day. However, I can&#x27;t say whether or not anyone else would get the same value.<p>I didn&#x27;t think of studying them as &quot;effort&quot;, though, because they were (and are) extremely interesting to me.
pteroover 1 year ago
There is no universal answer. Try it. Read a few random sections from the first three books. If you cannot put it down, this series is for you. Otherwise, I would skip it.<p>Personally, I think the TeX (that Knuth designed because he could not typeset the TAOCP to his liking) is a much more valuable side effect of Knuth writing the TAOCP than the books themselves, but this is not a popular opinion, at least within my Stanford-educated friends.
wiz21cover 1 year ago
if you use &quot;sort&quot; in your daily life, you don&#x27;t need TAOCP. A good tutorial will do. If the &quot;sort&quot; provided by the libs you use doesn&#x27;t work for you and you feel you need to taylor it to your needs, then start by TAOCP (an dbe sure to have time to do so, it&#x27;s not an easy read when it comes to details).
gjvcover 1 year ago
&quot;Computer Science is no more about computers than astronomy is about telescopes.&quot; -- Edsger Dijkstra
commandersakiover 1 year ago
I find reading the historic academic papers and technical reports on a specific subject that is covered by TAOCP more rewarding. I see TAOCP as a survey of the different fields and read the original sources for more depth.
2OEH8eoCRo0over 1 year ago
The fact that it&#x27;s not called <i>The Art of Software Engineering</i> is interesting. If computer programmer was a good enough title for Knuth and Thompson then it&#x27;s good enough for me.
评论 #38453884 未加载
评论 #38446414 未加载
_zoltan_over 1 year ago
had he wrote it in 2 years in 1968, it would be long forgotten by now.
评论 #38447620 未加载
davidkellisover 1 year ago
It&#x27;s definitely a good reference, but I&#x27;ll never read them cover to cover. Not unless I&#x27;m having trouble sleeping. :-)
noobdev9000over 1 year ago
No, most of this is made trivial and redundant today.<p>Understanding your std library performance is lot more important
wodenokotoover 1 year ago
I thought the books where a kind of reference material, rather than a guided study.
评论 #38444222 未加载
评论 #38443960 未加载
aijoe5packover 1 year ago
TAOCP for computers. Baby Rudin for math. The Feynman Lectures for physics.
Q6T46nT668w6i3mover 1 year ago
I regularly reference Seminumerical Algorithms and Combinatorial Algorithms.
jimbominsover 1 year ago
Is Charles Dickens worth a read. Depends on your time, purpose and taste.
maxamillionover 1 year ago
Absolutely, this is required reading.
brudgersover 1 year ago
What do you mean by “worth?”
aijoe5packover 1 year ago
Yes.