3 ms·
I haven't read Knuth but I recommend http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600 http://www.amazon.com/Algorithm-Design-Manual-Stev
by chollida1 18y ago
I haven't read Knuth but I recommend http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/dp/0387948600 http://www.amazon.com/Algorithm-Design-Manual-Steve-Skiena/d...
From what I understand Knuth uses MIX assembly language to imlpement his algorithms. Contrast this to the Skiena book which uses C++. I found this to make it very practical.
Though to be fair, I don't think it offers near the depth of the Art of Computer Programming:)
- michael_dorfman 18y agoIt's actually a common misconception that Knuth uses MIX/MMIX to implement his algorithms. The vast majority of the algorithms are described in English, and the MMIX implementation is usually only given when there are relevant implementation details to be discussed. MMIX is just an idealized machine language, and it is trivial for a reader to implement the algorithms described in the programmer's language of choice. (This is assuming that the objective is to learn CS, not to have a cookbook of ready-to-run algorithms to pilfer....)
- amackera 18y agoYES! Thank you for this clarification. I personally enjoy thinking about the implementations, instead of looking at the code itself. Knuth makes that easy (hard?) by not spoon feeding you. Plus the typography of Knuth's books is so wonderful. It's a pleasure to read.
- michael_dorfman 18y agoI'll also add that I usually recommend that newcomers begin with Volume 4, and turn to the earlier ones later. I think that for many people, skipping the preliminaries, and starting with an interesting and relevant topic (combinatorial algorithms) gives more immediate pleasure than beginning with the lower-level underpinnings.
- tjr 18y agoReaders might also consider Knuth's "Concrete Mathematics" as a substitute for the more-or-less equivalent material in Volume 1, especially if a little more help is needed in understanding it.
- chollida1 18y agoSorry if this seems dense but I can't reconcile what your saying and I've not read the book. You say: > It's actually a common misconception that Knuth uses MIX/MMIX to implement his algorithms. So you state very clearly that he doesn't use MIX to code his algorithms. But then you say: > and the MMIX implementation is usually only given when there are relevant implementation details to be discussed So you say that he does actually use the MIX language. Do you mean that most algorithms aren't presented in source form at all and only the few that are actually coded are in the MIX language?
- notaddicted 18y agoYes, that is how it is. For example the first algorithm in the book (found via google): Algorithm E ( Euclid's algorithm). Given two positive integers m and n, find their greatest common divisor, that is, the largest positive integer that evenly divides both m and n. E1 [Find remainder.] Divide m by n and let r be the remainder. (We will have 0 ≤ r < n) E2 [Is it zero?] If r=0, the algorithm terminates: n is the answer. E3 [Reduce.] Set m← n, n← r, and go back to step E1.
- chollida1 18y agoThanks for the clarification:)
- gilesgoatboy 18y agoIf you're going to do Euclid's algorithm, cut to the chase and read Euclid. Nothing will ever teach you more about logic.
- wingo 18y agoYou can run MIX programs using the GNU MIX Development Kit: http://www.gnu.org/software/mdk/ http://www.gnu.org/software/mdk/