Knuth Releases Another Part of Volume 4
junge_m writes "Donald Knuth has released another of his by now famous pre-fascicles to Volume 4 of his epic:
Pre-fascicle 2c is all about 'Generating all Combinations' supplementing his pre-fascicles 2a and 2b.
Furthermore he challenges us all to do more of his daunting exercises and report our success. He thinks we are way too lazy in this respect! So come on slashdot crowd: Do your homework and get the credit from the grandmaster himself!"
fascicle Pronunciation Key (fs-kl) n.
1. A small bundle.
2. One of the parts of a book published in separate sections. Also called fascicule.
3. Botany. A bundle or cluster of stems, flowers, or leaves.
4. See fasciculus.
I believe the definition used here is #2.
Second, a quick definition of what this is all about: it appears to be a collection of great scientific and programming works to be used as a primer for new programmers.
Hopefully, that allays some of the confusion I was having among others out there.
just code it in C and then use gcc targeted at mmix to see the assembly and compare them with what he wrote(some of the time it wont be the same if ever because of register alocation but you get the point)
regards
john 'mips64' jones
It's still probably helpful to know where you can obtain and learn to use a MIPS VM. Check out the GNU MDK manual Contains the MIX instruction set and a programming tutorial, as well as documentation on using the VM itself.
For the intro:
In his book series The Art of Computer Programming (published by Addison Wesley), D. Knuth uses an imaginary computer, the MIX, and its associated machine-code and assembly languages to ilustrate the concepts and algorithms as they are presented.
The MIX's architecture is a simplified version of those found in real CISC CPUs, and the MIX assembly language (MIXAL) provides a set of primitives that will be very familiar to any person with a minimum experience in assembly programming. The MIX/MIXAL definition is powerful and complete enough to provide a virtual development platform for writing quite complex programs, and close enough to real computers to be worth using when learning programming techniques. At any rate, if you want to learn or improve your programming skills, a MIX development environment would come in handy.
The MDK package aims at providing such virtual development environment on a GNU box. Thus, MDK offers you a set of utilities to simulate the MIX computer and to write, compile, run and debug MIXAL programs.
Cached version of the Knuth document is here.
In addition to Knuth's response (given by another poster), let me add that the assembly language used does not, in practice, detract from the usefulness of the books -- and if one wishes, transcribing any of his algorithms from MIX or MMIX to C is child's play and can be done in ones' head while reading them; changing code from MIX or MMIX to an assembly language for real hardware is similarly easy -- a design goal of both.
Further, while MIX may well be showing its age, Knuth's newer MMIX assembly language is anything but outdated; its features should map well to new processors released for years.
Another program of his (the name escapes me) progress the in the same way towards the base of the natural logarithm e.
That would be METAFONT. It's a companion program to TeX, for making fonts.
"Never bullshit a bullshitter" All That Jazz
Oops, that's wrong. The lovely high level code you write still becomes machine language. Even with Java. If a program does real work, there's real machine code. Even if it doesnt, there's still calls, which are still opcodes.