--I was kind of annoyed by MIX too. One of the reasons C language was originally successful, was it tried to make a high-level language which also enjoyed the benefits of,and unashamedly tried to connect to, assembler. (As opposed to pretending assembler did not exist.) So Knuth would have been better off using C than MIX in many ways. However, C fell short of its design goal plus now with C++ has become horrible mess.
--for example... Even though C "tried to connect with assembler" it in many ways failed to do so. What about "add with carry"? Sorry, C pretends that does not exist and so if you want to write multiprecision arithmetic, you cannot use C (unless willing to pay heavy performance price) and must put in some assembler. All because, the providers of C, *SUCKED.* And practically every high-level language in the universe, pretends add-with-carry does not exist. It is just appalling. What is their problem? And popcount and such are excellent instructions for dealing with sets as bits, which again practically every high level language pretends does not exist. (With C you can get it thru nonstandard compiler extensions that are ugly and nonportable. It makes you live in hell.) All because the language designers suck. And if they'd put this in the language, hardware manufacturers would have had incentive to add popcount to hardware. The level of stupidity here was unbelievable. Now if you ask language designers, they say stuff like "oh, instructions do not matter, syntactical details do not matter, it is our overarching concepts that matter. You are just a naive child." Bullshit. The reality is, C caught on EXACTLY because it connected well to assembler and it had compact well thought out syntax. Not perfect in either respect, but it tried. And language designers today completely ignore that history that is just staring them in the face. And why did C++ catch on? It is an ugly huge piece of crap. If C++ had been introduced ab initio back in the day, it never would have caught on. It would rightly have been regarded as garbage and landed on the scrap heap with PL/I and stuff. Heck, they probably could not have even built a compiler for it. The sole reason C++ caught on was it was built on top of C and exploited the desire for backwards compatibility to the hilt. Anyway, how about SWAP(a,b)? That is something that one does very often, but no(?) high level language provides it. That kind of thing is like a thorn in your side. It just annoys you a little each day. And how about this: I want some stuff to be computed at compilation time, other stuff at run time I want to control that with same-syntax language performing this control. (E.g. "#for" would unroll a loop at compile time, versus plain "for" is a loop done at runtime.) Again, no language I know of has this obvious idea. And why do we get cyclic shifts of words, but not reversal, so we cannot get the dihedral group? Why? For what possible reason? I could go on and on. The level of stupidity is just appalling.