Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

Create Account  |  Retrieve Password

Knuth Releases Another Part of Volume 4

Posted by Hemos on Tue Jul 09, 2002 07:59 AM
from the hey-now-get-your-devel dept.
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!"
+ -
story
This discussion has been archived. No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
 Full
 Abbreviated
 Hidden
More
Loading... please wait.
  • Tshirts (Score:3, Funny)

    by bsDaemon (87307) on Tuesday July 09 2002, @08:04AM (#3848710) Homepage
    anyone else think ThinkGeek.net needs some 'Absolut Knuthingness' tshirts?
  • by Anonymous Coward
    Up until now, I've been quite content to have read none of the 3 volumes of TAoCP; with this 4th volume I'm starting to feel poorly read.
  • The main reason that I have been hesitant to purchase and slog through these books has been the fact that they are written with an outdated assembly language for a non existant processor. I realize that the point is to learn these algorithms, however, since I rarely if ever code on that level any longer, is there an alternative? Something using a language like Java, Python, or even, ack! , 'C' would be more to my liking.

    No flames please. This is just an honest question.
    Thanks
    • Knuth's own reply to this question can be seen at http://www-cs-faculty.stanford.edu/~knuth/mmix.htm l.

      To quote:

      "Many readers are no doubt thinking, 'Why does Knuth replace MIX by another machine instead of just sticking to a high-level programming language? Hardly anybody uses assemblers these days.'

      Such people are entitled to their opinions, and they need not bother reading the machine-language parts of my books. But the reasons for machine language that I gave in the preface to Volume 1, written in the early 1960s, remain valid today:

      One of the principal goals of my books is to show how high-level constructions are actually implemented in machines, not simply to show how they are applied. I explain coroutine linkage, tree structures, random number generation, high-precision arithmetic, radix conversion, packing of data, combinatorial searching, recursion, etc., from the ground up.
      The programs needed in my books are generally so short that their main points can be grasped easily.
      People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird.
      Machine language is necessary in any case, as output of many of the software programs I describe.
      Expressing basic methods like algorithms for sorting and searching in machine language makes it possible to carry out meaningful studies of the effects of cache and RAM size and other hardware characteristics (memory speed, pipelining, multiple issue, lookaside buffers, the size of cache blocks, etc.) when comparing different schemes.
      Moreover, if I did use a high-level language, what language should it be? In the 1960s I would probably have chosen Algol W; in the 1970s, I would then have had to rewrite my books using Pascal; in the 1980s, I would surely have changed everything to C; in the 1990s, I would have had to switch to C++ and then probably to Java. In the 2000s, yet another language will no doubt be de rigueur. I cannot afford the time to rewrite my books as languages go in and out of fashion; languages aren't the point of my books, the point is rather what you can do in your favorite language. My books focus on timeless truths. "

      • by gripdamage (529664) on Tuesday July 09 2002, @08:35AM (#3848881)
        It's still probably helpful to know where you can obtain and learn to use a MIPS VM. Check out the GNU MDK manual [gnu.org] 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.
      • I was poking around Knuth's site, looking at the instruction set for MMIX [stanford.edu], when I came across this instruction (SR, SRU added for comparison):

        3C SR shift right (1) rA
        3D SRI Stanford Research Institute (2) rA
        3E SRU shift right unsigned (1)


        What's that do then?
        • It's a joke. It is "shift right immediate". Knuth always includes some hidden jokes in his books.
        • Isn't it clear? It sets up an internet connection to the Stanford Research Institute, and using the MMIXIEP (MMIX Internet Execution Protocol) it sends its arguments there, and waits for transmission of the result. After the result was transmitted, the Internet connection is shut down.

          It's indeed one of the most complex instructions ever found in a CISC processor. What Stanford returns as value is a well-hidden secret. There are certainly rumors about it being related to a right shift, but probably those came up just because of the irrelevant fact that this instruction is placed in between two right shifts. Don't get confused by this. It's just coincidence. Really. And of course it's also unrelated to the instructions SLI (shift left immediate (2) rA) and SRUI (shift right unsigned immediate (2)). It's tempting to think different, but it really doesn't mean anything.

          Warning: Don't use this instruction unless you are absolutely sure the arguments don't contain security relevant or confidential data!

      • Knuth is entitled to his opinion. It is certainly true that compilers tend to hide the details of the execution. And translating the prior volumes would be a lot of work, so for stylistic consistency it makes sense to continue to use MIX.

        That said, I feel it's a mistake. I have seen a large subset of C that was implementable via macros as a M68000 assembler language program. This would be a vehicle that would possess all of the virtues of MIX, while being readily understandable by most skilled programers. (They might not be able to compose in it without study, but they could understand algorithms written in it with reasonable ease.) In addition, the timings would be experimentally verifiable (if you could lay your hands on an old Mac ... either the Mac 128 or the Fat Mac [512K]). I forget whether the code was presented in Byte or Dr Dobbs. Byte I think. I'm sure it could have been done better, but it wouldn't need to be done better to provide experimental backing to the theoretical arguments. (I suppose that in a sense the MIX virtual machines also provide this, but I don't consider them any better in principle that any other interpreter, and less good than a compiler.)
        N.B.: If you don't insist on an actual hardware version of the machine, such as would be provided by the 68000, then I still don't see any advantage of MIX over a selected subset of C.

        Additionally: MIX doesn't have much similarity to a recent-generation CPU chip. There are a multitude of reasons that Assembler has fallen out of fashion. Lack of portability was one of the major ones. But an even better reason has been the increasing complexity of the chips themselves. Hand-optimizing has become increasingly counter-productive for most people. (It's also become generally less necessary, but that's a separate argument.)

        As always, however, there will be exceptions. There exist specialists who need this kind of skil, CPU version dependant though it be. Somebody needs to design the chips. Somebody needs to desigh the compiler optimization strategies. But even for these people, MIX will be a suboptimal choice.
      • Right on! (Score:4, Insightful)

        by A nonymous Coward (7548) on Tuesday July 09 2002, @11:52AM (#3850276)
        Too too many programmers think a line of code is a line of code. They think strcat is just hunky-dory, and append great gobs of strings this way, without realizing that each append traverses the entire string from the beginning each time. They use malloc and free, new and delete, with abandon, not realizing how much they are thrashing the malloc heap, when local variables on the stack would do just as well 99% of the time.

        They DO NOT UNDERSTAND the concept of finite resources, that machine cycles cost time.

        I believe the first programming course should be a very few weeks of something akin to LOGO, or BASIC, just to get the concept of bugs and such out of the way, weed out those who can't stand thinking. Then a good grounding in a z80 or some other simple 8 bitter, where counting cycles and bytes is part of the course (learn how expensive those cute index registers really are). Only then, when an understanding of machine cycles and bytes has been established, should students move on to a higher level.

        Too many ivory towers out there, too many straight-A-can't-tie-their-shoelaces types.
    • use GCC (Score:5, Informative)

      by johnjones (14274) on Tuesday July 09 2002, @08:34AM (#3848871) Homepage Journal
      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
    • 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.
    • None of the languages you mention was available at the time when he started writing the books.

      And most of the languages you mention will not be modern at the time when the last books comes out.

      Most of the languages you mention hides so much of the underlying hardware that it is hard to see how changes in the software can be influences by the hardware.

      On the other hand there is none stopping you from rewriteing the examples in Java if you feel up too it.

      C is already an language on its way out, Python seams destined to forever be a minor language and if MS manage to kill Java - in 10 years time the book will be just another antique.

      By using a made-up language the books will never become old and out-fashioned.

      If you want to write a clsssic you can't fathom towards todays fashion but most go your own way.

  • Technically, all programmer types are supposed to be lazy. Personally, I try to keep my code clean and commented because when I come back to it in a month, I know I'll be too lazy to read through it and figure out what I was doing. Also, being lazy aboud doing work is what leads to reduced algorithmic complexity, right?

    Necessity is the mother of invention, but laziness is the father.
    • Most programmers are lazy. I know I am. I know the other (senior) coder on our current project is. But it's a controlled laziness.

      Being lazy means that instead of doing something "manually" we'll find some way to make the computer do it for us. Sure, doing it by hand may only take 5 minutes and we'll spend 15 minutes just trying to convince the computer to do it, but that's not the point. The point is that - 1) you just learned something new, 2) you avoided doing a repetitive task repeatedly (yes, yes, I know), 3) odds are you'll do the same damn thing, or something similar in the future, and then you'll know how to do it in 3 seconds.

      Which is why programmers gravitate to complex but programmable tools, like vi/vim/emacs/ultraedit, to Unix, to scripting languages, etc.

      It's also why we don't understand the user more often then not. Most users just want to get the job done. Sure, there may be a more efficient way to do it if you spend some time learning the system, but they either don't view the system as their job or have been burned by it too many times to trust it. So they do things the way they know, or the way they think it should work. Which is often not the way the lazy programmer thinks.

      Laziness does have downsides though. Documentation tends to be banal. Comments are almost never as good as you'd like them to be 3 months later. And while algorithmic simplicity is a noble goal, it's often the wrong one - too simple of an algorithm can be wasteful of resources (bubble sort is a whole lot simpler than quicksort) simply because the programmer didn't learn the underlying hardware or didn't think through the implications of a design. Which leads to the issue of too simple of a design meaning massive rework as the system grows.

      Of course the more experienced programmers have learned these things and discovered that spending the time up front means you can be lazier in the long run.

      Knuth is one of these experienced programmers. There are gems of wisdom throughout his writings.

      Wish the bastard didn't want us to work to find them though.
  • He's right - I'm way too lazy to spend more than a few minutes on things like that.
  • too lazy (Score:4, Funny)

    by gripdamage (529664) on Tuesday July 09 2002, @08:10AM (#3848743)
    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!

    No no no... He's right [yawns, stretches, checks for new /. articles].
  • by Nomad7674 (453223) on Tuesday July 09 2002, @08:13AM (#3848762) Homepage Journal
    I hope I am not the only one who read that introduction and had the monosylabbic response, "Huh?" For any others like me in serious need of some explication, first the definition of "fascicle" from dictionary.com [dictionary.com]:

    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.

    • 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.

      A collection of great programming works? Yes. To be used as a primer for new beginners? Not really.
      TAOCP (The Art Of Computer Programming) is one of the best advanced computer science books ever written. It doesn't teach you how to write object-oriented code, or even "hello world". Instead it sets down algorithms, and techniques to create algorithms to solve problems elegently.

      Giving this to a new programmer would be pretty much a worthless exercise, as the code in the book isn't even written in a real (as in used in the real world) language, but rather one made up in academia to be Turing Complete and demonstrate algorithms. I keep all three volumes on my desk, and find that they can be incredibly useful in assisting with some problems. However, they're never going to tell me why my program has a memory leak, or the difference between reference and value.

      The previous volumes of TAOCP have had numberous errors (Knuth pays $2.56 for every one you find) just due to the complexity of the material they cover, combined with the changing world of computer science. Hopefylly getting out pre-prints of the book, bit by bit, will help get alot of these fixed before the 1st edition.

      I have no idea how you were expecting to "allay" the confusion of others, when you don't even seem to understand it yourself.

      Adam Pennington

  • by Anonymous Coward
    Apparently very few people cash the (few) checks Don Knuth writes in reward for bugs. Would you rather have $2.56 or a signed checque from Mr Knuth?
  • "...But I must confess that I'm also disappointed to have had absolutely no feedback so far on several of the exercises on which I worked hardest when I was preparing this material. Could it be that (1) you've said nothing about them because I somehow managed to get the details perfect? Or is it that (2) you shy away from the more difficult stuff, being unable to spend more than a few minutes on any particular topic?..."

    ... or could it be (3) that you'd have to be one crack-smoking codemonkey of a nut to spend your spare time doing exercises which (1) require a superbrain, (2) are boring, (3) your superbrain computer science professor already did a week ago to collect the $0.23 award for the errata report.
      • Let me guess... You're a CS Master Of Science student or graduate who take pride in having the ultimate hashkey algo memorized to the last bitshift. I'm a CS student myself, but I recognize this for the uninteresting stuff it really is (unless of course, you're planning on doing/doing actual research on this stuff).

        Programming is a craft dependent on experience and routine. Sure, knowing your big-O might come in handy when you need to make a kick-ass algorithm; but this has probably already been done by somebody else.

        Flashing your l33t CS skillz is going to get you nowhere when you don't know the Nintendo Graphics API (tm) and I do, and spend all my time making Zelda while you're still trying to implement the ultimate sort() and forget about structure and testing.

        To quote a slashdot quote : "Fluid dynamics is to plumbing as science is to programming."
  • by peterdaly (123554) <petedaly@@@ix...netcom...com> on Tuesday July 09 2002, @08:27AM (#3848844)
    I just looked this author up at Amazon. Here is some of his previous work:
    The Art of Computer Programming, Volumes 1-3 [amazon.com]
    From the Inside Flap
    "The bible of all fundamental algorithms and the work that taught many of today's software developers most of what they know about computer programming."-- Byte, Sept 1995

    "If you think you're a really good programmer,...read [Knuth's] Art of Computer Programming....You should definitely send me a resume if you can read the whole thing." -- Bill Gates


    This does not sound like it is aimed at the core slashdot crowd, based on the Amazon reviews I am reading. Honestly I have never heard of the guy before. He is without a doubt more for the "hard core" among us. Volume 1 seems to have been written in the 1960's, so this guys been at it a while.

    Plenty of reader reviews. Many with comments like:
    This timeless classic is bound to make the student (Yes you ought to be a dedicated one..no casual reading here!) proficient in the art and science of constructing programs. -Ganapathy Subramaniam

    Be prepared for your brain to do some crunching if you really want to get into this guys work.

    -Pete
    (amazon affilate like to the book...just so ya know.)
    • by Mr Guy (547690) on Tuesday July 09 2002, @08:42AM (#3848917) Journal
      He is beyond hardcore. To explain Donald Knuth's relevance to computing (and geeks should all know who he is) is like explaining Paul's relevance to the Catholic Church. He isn't God, he isn't the Son of God, but he was sent by God to explain God to the masses.

      Reading the Art of Computer Programing is like translating the Bible from the original greek. You know there is something profound there, but until you've done it a few times and looked back on it, you are more concerned with trying to figure out each word.

      I'm a little awestruck by him.

      By the way, the Paul reference is not a flippant one, check out his other books,Things a Computer Scientist Rarely Talks About [amazon.com], and 3: 16: Bible Texts Illuminated [amazon.com], for explanations of why not every christian is a fool.
    • by devonbowen (231626) on Tuesday July 09 2002, @09:03AM (#3849042) Homepage
      Wow. No flame intended, but I never expected to hear Knuth called "this guy". For those that don't know the name, here are a few others you might want to check out: Turing, Minsky, Church, Shannon, Chomsky. Of course, these are just the "theory" guys and I am sure others will add to that list. Seems to me any geek should have at least a Readers Digest knowledge of who these people are and what they've done for us.

      Devon
      • John Von Neumann, S.A. Cook (describing NP-completeness was pretty damn cool), Ken Thompson and Dennis Ritchie, Vannevar Bush, Doug Engelbart...

        There are many others, but that's a good start.

    • TeX (Score:5, Interesting)

      by mikeee (137160) on Tuesday July 09 2002, @09:09AM (#3849091)
      My favorite Knuth quote, when he gave a class a snippet of code to use in their program (not verbatim, sorry):

      "Be careful with this code; I have only proven it correct, not tested it."

      A demonstration of Hacker Nature:

      He wasn't happy with the typesetting on his first book, and decided this should be done by computer, so he wrote a markup language for typesetting.

      Of course, he wanted to do it right, so this took him... well... about a decade. And when he was done, he had written TeX. He was very pleased; his publishers thought this was odd, as the new typesetting looked worse than the old.

      A few years later, high-resolution laser printers became available; TeX already suppported them, and lo and behold, the new version did look better.

      TeX is a huge monster of a programming language/application. Knuth offered a cash prize of $(2^N) for the Nth unique bug report. TeX is now, like, 20 years old, and that system cost him under $1K.

      If programmers were Jedi, he would be Yoda.
      If programmers were wizards, he was be Gandalf.

      He is the serious, friendly grandfather who can kick the butts of all us whippersnapers. So pay attention!

      • Re:TeX (Score:5, Interesting)

        by crsm (21260) on Tuesday July 09 2002, @09:48AM (#3849351)
        TeX is a huge monster of a programming language/application. Knuth offered a cash prize of $(2^N) for the Nth unique bug report. TeX is now, like, 20 years old, and that system cost him under $1K.

        Take a look at the version number of TeX: 3.14159 ('tex --version'). Each release adds a new digit towards Pi and someday when he dies the release number will be bumped to be exactly Pi. After that every new bug will be declared a feature :-) Another program of his (the name escapes me) progress the in the same way towards the base of the natural logarithm e.
        • Re:TeX (Score:5, Informative)

          by red_crayon (202742) on Tuesday July 09 2002, @10:00AM (#3849433)
          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.

      • He wasn't happy with the typesetting on his first book, and decided this should be done by computer, so he wrote a markup language for typesetting.

        Why spend 10 days doing something when you can spend 10 years automating it?

        (If you don't approve profoundly with the above sentence you don't belong to the software development profession.)
        • Re:TeX SuX (Score:3, Insightful)

          If you'd been around when TeX came out, you wouldn't be saying that. If you were serious about preparing math-heavy documents, you wouldn't be saying that.

          What do you consider a good system now -- docbook? If so, remember that your docbook renderer uses TeX as its backend. If you consider (say) Word a good document preparation system, you have no room to speak on the subject.

          TeX is an amazingly reliable, high-quality piece of software -- I doubt that anything on its scale has ever been created with as few bugs. Yes, the input syntax is a bit dated -- but in its day, it kicked ass. No doubt if Knuth were doing it today, it'd kick ass by modern standards as well.
          • Re:TeX SuX (Score:3, Interesting)

            Yes, TeX was quite an achievement. Stable, wonderfully un-buggy, most definitely. Unfortunately, it was good enough to catch on and establish itself before its flaws could be fixed.

            My particular take:

            1) The Computer Modern fonts are not very pretty unless you have a very high resolution typesetter; even then, the letters look too thin and spidery for my taste. Sure, you can use other fonts. But most users never do, or use even uglier ones, usually sticking with Computer Modern for the formulas. Do any other really complete and compatible math fonts even exist?

            2) The programming features were hacked on as an afterthought. The syntax is fine, perhaps even near optimal, for straight mark-up, but for developing actual algorithms, it makes Perl code look self-explanatory. Right up there with Intercal. This means that packages like LaTeX or formats are very hard to modify or extend in any kind of robust way. So everyone uses the default format, borrows one that works from somebody else, or works very hard to roll their own. Making even slight adjustments or fixes is a real nightmare.

            3) The whole TeX program is terribly monolithic. Sure, the text description and commentary talks about various stages of TeX, but the code says otherwise. Knuth's optimization of the "inner loop" means there is no intermediate description of the TeX syntax.

            The program itself was written in very low-level Pascal. The data structures are defined in terms of byte layouts, with explicit memory management. All sorts of tricky details insinuate through the code. Sure, it runs great even on 1980-era machines, but God help you if you want to re-implement it in a modern high-level language. As far as I know, this has only been done using web2c, which is a hack specially made to translate TeX. What's going to happen when C compilers are as rare as Pascal compilers are today?

            4) Likewise for the file formats. Laid out with great care, byte-for-byte. Easy to read, but tough to translate into something higher-level.

            My part-time project/dream is a modern re-implementation, where the TeX typesetting algorithms are embedded in a modern (Common Lisp) environment--so you can code TeX formats and macros in a heavy-duty honest-to-god programming language, and have an high-level, truly modular implementation using real data structures that could actually be tweaked and modified to do even funkier typesetting tasks.

            Part of me says this will be easy, because something like 60% of TeX: The Program is doing stuff like memory management that Lisp will do for free, and accounting for funky character encodings (EBCDIC and 6-bit Pascal character sets) that probably can be ignored now that almost everyone is now in ASCII, or headed toward Unicode. The other part of me says this will be difficult for exactly the same reason.
    • Lots of people haven't read tAoCP. I'm one of them. I don't consider it something to be ashamed of. As you say, it's hard core. But if you've never /heard/ of it, or never heard of Donald Knuth, you may be reading the wrong website.

      Try going to englishlitereature.com and saying you've never heard of this Shakespeare guy, but based on Amazon reviews it sounds like he's pretty deep.
  • rats! (Score:5, Funny)

    by cowtamer (311087) on Tuesday July 09 2002, @08:41AM (#3848910) Journal
    I was actually hoping for this [ibiblio.org].
  • by apirkle (40268) on Tuesday July 09 2002, @08:44AM (#3848932)
    For you poor saps running Windows with no viewer for Postscript, there is a great online viewer [samurajdata.se] that converts ps, pdf, and word docs to gif images, suitable for viewing in your favorite web browser [mozilla.org].

    Cached version of the Knuth document is here [samurajdata.se].

    • I would suggest rather getting ghostscript [wisc.edu] for Windows, the free PostScript interpreter, and also GSview [wisc.edu], a viewer (the latter requires the former).

      Ghostscript is free as in speech, with a GNU release and a release under AFPL, a slightly different license (the GNU code is older than the AFPL code). GSview is available, as far as I can tell, under the AFPL only, which is still free but not GPL.

      With both of these properly installed on Windows, one click on the link provided by Slashdot will launch the viewer. (It must gunzip on-the-fly.)

  • Finally (Score:3, Interesting)

    by gillbates (106458) on Tuesday July 09 2002, @08:59AM (#3849018) Homepage Journal

    I was a junior in college when I first read The Art of Computer Programming, and it really opened up my mind to what computer science is all about. It challenged me to think outside the HLL box. Knuth's work has become a timeless classic because he concentrates on the higher level concepts of computer science that transcend the currently popular architectures.

    What really blew me away about Knuth's work is that he implements all of the features found in modern HLL's in his own variant of assembler. Someone who can work through and solve the exercises in his books will find themselves able to write programs in any language, and write them well at that. He does not concern himself with the Language Wars, or the Platform Wars, but instead presents the problems and solutions which are common to all computer systems. Too many programmers have been babied intellectually by their colleges and universities, which taught them how to program in a high level language rather than teaching them the fundamentals underlying computer science. Knuth does a good job in getting down to the underlying problems of computer science without bothering the user with the details of arcane architectures that will soon be obsolete.

    For this reason, I look forward to his forthcoming work. I look forward to the new challenges which will expand my mind even farther.

  • For other Windoes folks, ToastScrip [geocities.com]t is a handy little Java app to read and print PostScript.
  • I bet Fear Factory would kill to have song titles like the names of Knuths chapters:

    decoding the octacode

    Gray binary clusters of subcubes

    medians of bit strings

    Gray fields

    constructing large-gap codes

    an infinite Gray path that fills n-dimensional space

    loopless generation of fence-poset ideals

  • So who else noticed that all MMIX processors have a built in serial number?
    Yes, I know they are hypothetical...
    • by Subcarrier (262294) on Tuesday July 09 2002, @08:16AM (#3848781)
      256 equals $100. We're being shafted.
        • 256 pennies would be 100 hex cents, not 100 hex dollars.

          Not quite. 256 *anything* equals $100. Several symbolic assemblers represent hexadecimals with a $ prefix. This has nothing to do with money. Claiming that the number is in fact a fixed point decimal representation is just semantics, not visible in the assembly code.

          Just to make it completely clear. ;-)
    • WinZIP can handle .gz files, and I think PKZIP can as well.

      As far as .ps goes, if you have a PostScript printer then dump it straight to that. If not, Adobe Acrobat (full version, not the reader) has a utility that convers .ps to .pdf.

    • What about inflation Prof. Knuth!?

      Knuth routinely doubles the bounty for finding an error in his TAoCP books or in his TeX program. This bounty doubles each time an error is found and corrected.

    • As its been some twenty years since someone came up with a new sort algorithm, and, about fifteen years since someone came up with a really new key hashing algorithm, you will find that 98% of the early volumes relevent.

      Most of the irrelevent 2% involves tweeking algorithms to save memory so it might still be relevent if you are working on an embedded system.

    • I think that you just don't like his style.

      I'm not sure what your point is about Feynman taking time out to play in a band - Knuth takes time out to play the organ if that makes a difference to you.

      Given the contents of his books, don't you think that Knuth expresses a significant amount of respect for his readers? Name another author who gives cash rewards for reporting problems with books, or even for offering suggestions for improvements. You might think that this is ego driven since the majority of the checks aren't cashed, but this is a choice made by his audience and not by Knuth himself.

      ---