9 comments

[ 3.3 ms ] story [ 38.4 ms ] thread
I almost never see this as a justification, but machine languages make it a lot easier to understand all kinds of computing topics.

Things like assignment, pointers, variable/value confusion, etc., that trip up novices in any high-level language are fairly trivial to understand if you teach them with machine language.

People talk about a bimodal distribution in CS classes, and suggest that some people just can't learn these topics well. Perhaps I'm naive, but I have a hard time believing that they are incapable of learning these fundamentals if presented using machine language.

Yes. Contemporary software engineering education is like jumping right into organic chemistry without knowing any inorganic chemistry.
On the other hand, you could also say it's like jumping into physics without knowing any quantum mechanics. You can learn a lot before you need to start covering implementation details.
I like thinking about idealized practical computers, and projects like MMIX are particularly special, even if they don't hold any popularity, since they're not just a random hacker's design, but one as envisioned by some of the biggest names of a certain generation of computing. The companion Virtual Motherboard suggests a future era where it might be realized as a "real" application platform.
We have been using this in one class. I compiled it to run in a web browser: http://mmix.rwth.weinberg.me It is faster than I would have thought. It even runs on iOS8.

(Disclaimer: this was created in 1-2h and the JS is like 3Mb)

What I found interesting in TAoCP volume 4a is that Knuth pretty much abandons the idea of writing code altogether and just focuses on describing the problems and algorithms...and the book is still thick and dense. I think it has to do largely with the changes in programming tools over the 50+ years he's been writing. MMIX doesn't really capture the complexity of contemporary assembly on what ordinary people ordinarily think of as ordinary computers.

Pedagogically, I'm not sure the complexity of MMIX over MIX makes TAoCP more accessible to the general reader...but then that has never been its focus.

While he certainly doesn't have as much code in the content sections, I believe there are quite a few assignments with code.

A lot of this just comes down to what is being taught. Earlier volumes were teaching how to analyze code. To do that, you needed code. This volume is focusing on the algorithms.