5

Hi my first question … I start reading ‘The Art of Computer Programming’. I know it’s hard. First I decide to lean the language of book – I start with MIX. I made some exercises and I think I can manages with programs in the book. But the problem is everywhere I wrote, MIX is old, learn MMIX and so on. OKS, but why - this my question? I am learning 1 moth MIX and I start to understand problems in book and now stop working and start learning new ASM again, why? Say, MIX is old, but all code in the book is MIX if I spend time to learn MMIX I have to rewrote problems again, I think it will be very hard for me. Does MIX is so old that I really must learn new version? Can some one who have more experience with TAOCP to dive me an advice: Go on with book – examples, problems and so on in MIX or Stop to learn MMIX. And, of course what I will win if I do the first or second choice?

miken32
  • 42,008
  • 16
  • 111
  • 154
next_for
  • 55
  • 1
  • 5

2 Answers2

3

MMIX is superior to MIX in just about every way. Fascicle 1 of Volume 1 explains why, in detail. Fortunately, if you've already learned MIX, learning MMIX shouldn't be too hard.

Rewriting the exercises you have already completed in MIX should not be difficult in MMIX; if it is, it suggests that you don't really grasp the algorithms in question.

Remember: the vast majority of the algorithms in TAOCP are described in English, not in MIX or MMIX.

However: if your goal is to be a "real software engineer", or even to be better at algorithms, TAOCP may not be the best place to start.

I'd recommend you take a look at the MIT OCW "Introduction to Algorithms" course taught by Leiserson and Erik Demaine. You can find links to it, along with a nice commentary, at http://www.catonmat.net/blog/mit-introduction-to-algorithms-part-one

Michael Dorfman
  • 4,060
  • 1
  • 22
  • 29
  • Oks. Thanks for opinion. I'm not starting with TAOCP. But I think it will help me to understand how algs work inside cpu. And can I ask why you think that won't help me to be good soft engineer, because it is about alg in asm which is not very particle, may be? Yes, the big question is what I win is read THAOCP .... I don't know then I read all first book may be I know ? If you read did it help to you with something ? – next_for Dec 17 '10 at 08:26
  • First of all, I'm not saying that TAOCP won't make you a better software engineer. It very well might. I'm saying that it is not the best place to start. To begin with, TAOCP is concerned with Computer Science, not Software Engineering. There is a difference.

    You say that you want to understand how algorithms work in the CPU. That's an interesting goal, but you ought to be asking yourself which level of abstraction you want to be focusing your attention on.

    – Michael Dorfman Dec 17 '10 at 16:58
  • 1
    I'd recommend you take a look at "The Elements of Computing Systems", by Nisan And Schocken-- which goes from NAND gates to Tetris in 12 steps. (There are some video lectures on this topic that will give you a taste-- several are linked to on this page: http://mines.humanoriented.com/proposals/nand-to-tetris/) – Michael Dorfman Dec 17 '10 at 17:04
  • Thanks for link. I can't understand you think that I have to read different book for alg. I think that in TAOCP the algs is very good described. Yes, may be is little unusual in MIX. I decided to read this book and my question is that language to use for examples in it MIX or MMIX. – next_for Dec 18 '10 at 12:29
  • If you have trouble understanding why I am recommending you read a different book for algorithms, let's take a simple example: Red-Black Trees. CLRS has a chapter of about 30 pages. TAOCP has one passing mention. I'll say it again, although I doubt that you'll believe me: TAOCP is *not* an algorithm textbook. In any event, the answer to your original question is clear: use MMIX, not MIX. That's what Knuth recommends. – Michael Dorfman Dec 19 '10 at 15:37
  • 1
    Oks! From your point of view for what is good TAOCP? – next_for Dec 20 '10 at 09:26
  • TAOCP is a brilliant work of Computer Science. If you are interested in Computer Science (as a branch of mathematics) as opposed to Software Engineering, it's brilliant. If you want to know (for example) why the approximation for Catalan Numbers includes the square root of Pi, Knuth is your man. – Michael Dorfman Dec 20 '10 at 11:57
  • Yes, very good answer! I agree, but I don't think that the computer science and software engineering are opposed things, they are different of course. May be, the money make difference ;-) – next_for Dec 20 '10 at 14:37
2

Donald Knuth will convert the new editions of TAOCP to use MMIX. So the new volume, that just came out Volume 4A on Combinatorial Algorithms is already using the new MMIX. So if you want to read the new stuff, you need MMIX anyway. The support for MMIX relative to MIX is also becomming better. Check the MMIX repository at http://www.mmix.cs.hm.edu it contains executables for windows and linux and all kind of documentation. Last not least, MMIX has a sophisticated pipeline simulator, that comes very close to real modern machines, and MIX is not anything like it. So for someone with a serious interest MMIX is recomended. Martin