I don't hate using assembly language, since I have written some in my os course. But obviously, assembly language lacks abstraction, you have to pay more attention to the details.
Is assembly language really essential to write TAOCP?
He not only uses MIXAL, his assembly language for MIX, but also MIX, a model for a simple computer (like one which was used in the sixties). This is a model for teaching with which he is, to some extent, independent of development in the field.
If he'd used another programming language (which one, by the way, would you think would have been suited?), say NPL (nifty programming language), he would have had to either abandon the idea of using MIX or to introduce a compiler of some computer language of choice (which is a far more complex thing than what he is dealing with in Vol 1). That way it would not have become TAOCP but TAONPLP. The first one is independent of such a choice and, for this reason, timeless in a way few books about programming will ever be. The second one would probably be forgotten by now...
Also, as long as computers are working in principle the way his MIX does, it is a good thing to take that into account if you are really interested in learning how to work with them.
You young whippersnappers amaze me sometimes. You all too often have no clue that anything happened before you started school. (I have the same problem. It took me a long time to grasp that 15 years was actually a very short time, from an adult viewpoint. That's roughly the span from Hiroshima to the Cuban Missile Crisis. To me, World War II is just history, but my father fought in it, and my mother was in junior high during it.)
TAOCP, vol. 1, "Fundamental Algorithms", 1st edition, was first printed in 1968. That's 45 years ago. Knuth started planning the series well before then.
For reference: The Intel 8086 first appeared in 1978, ten years later. The PASCAL language first appeared in 1971; the Jensen & Wirth book, about the second version of the language, came out in 1974. Initial development of C was 1969-1973: K&R was published in 1978.
Knuth intended the series to cover the field. He set the style, THEN, to be useful to practitioners THEN. He did not ever expect that series to become quite literally his life's work, or its writing to span what will probably be well over half a century when he finally finishes.
Now GET OFF MY LAWN!
Knuth discusses his reasoning in the Preface. I'll quote just a few bits and pieces:
Although he doesn't point it out directly, I think his mention of ALGOL and FORTRAN points to another problem he avoided that may be even more important. Let's assume he had chosen Algol (clearly better suited to non-numeric programs). I would posit that Algol would probably be even more foreign to most of today's programmers than the assembly language he chose.
For the third edition, he redesigned the MIX to fit more closely with modern processors, and had to rewrite the code for it. I'd posit, however, that had he used a higher level language, the rewrite would have been substantially greater -- and all the reasons he gave would remain as well.
Knuth has updated his rationale as well:
Thank you for your interest in this question.
Because it has attracted low-quality or spam answers that had to be removed, posting an answer now requires 10 reputation on this site (the association bonus does not count).
Would you like to answer one of these unanswered questions instead?