Knuth's Volume IV Preview Available Online
ahto writes: "The first section of volume 4 of Knuth's The Art of Computer Programming is available for peer review (and the $2.56 finder's fee for every typo is still there :)." Knuth's series-in-progress made a lot of people's lists when it came to assembling the perfect collection of library books for computer science; now you have a chance to make the next one better. If you can find any mistakes, that is.
Dunno 'bout that -- I've met a lot of Windows programmers who've never read Knuth, and I've met a lot of *nix programmers who've never read Knuth. The key factors appear to me to be age and variety of work (it seems to me that older, systems-level coders are much more likely to have gone through some volume of TAOCP at some point).
Admittedly, most of the older, systems-level coders I've met have been *nix folks -- so it may be that I'm seeing the same trend you are and just interpreting it differently.
err, what exactly do you mean by, your average Windows programmer? What is a Windows programmer? If a Windows programmer uses C++ what is he? How about Java? How about Python or Perl? What do you mean by Windows programmer? I suppose you call yourself a Linux/Unix programmer. What does that mean? Do you patch kernels? What do you mean? Knucklehead with a superiority complex, that's what I think YOU are.
something like this begs to be continued beyond the author. I think the majority of you know what I'm leading to.
I don't think that Professor Knuth would agree with that. As some of you may happen to know, we could take TeX and METAfont as examples: nowadays, only allowed modifications are bugfixes which get a new decimal digit, and he dictated that when he will die, the reference code shall be frozen, any further bug will be promoted to feature, and their version number will be \pi and e.
DEK is utterly mad: nobody could stop writing TAOCP because of unsatisfaction about how the books were printed, then study typography and coming out with TeX and MF.
But this is why we love him.
ciao,ps: I'd really love to see him playing his pipe organ
Knuth's books are good. They also take a lot of time to use. If you are designing an algorithm that covers a new area, then they are the right tool. But most work is done within known territory.
The real problem is that I have found NO decent reference book on algorithms. Sedgewick is fair, but it is clearly MUCH more of a textbook than a reference book for a professional. A reference book doesn't leave out the curcial pieces with a cute note saying "the missing part is left as an exercise". That is quite annoying when one is trying to get something done, and just wants to use a well-understood tool. Engineers don't redesign their screwdrivers with every new project, why should programmers be expected to?
If I want to use a particular data structure, then you may be fairly well assured that I have some decent reason for wanting to use, say, a Red-Black tree instead of a Hash on the Heap. It would be much easier to use a hash. There's built in language support. But the Red-Black tree is a better match to the problem. So the nlangedd "reference" books don't give you complete algorithms.
TEACHER! Bitter teacher. I don't like doing make work, teacher. I want to get on with things.
Now it's true that the failures I cited don't really apply to TAOCP. Not that much. But it is quite difficult to use, and to translate an implementation. It can more than double the cost of choosing a particular tool (over what an appropriate reference book would cost).
I think we've pushed this "anyone can grow up to be president" thing too far.
I think this expresses wonderfully the difference between the mechanic and the engineer. The mechanic knows how to use his tools, and knows what is relevant to the problem at hand; or he is helpless. Unlike the mechanic, the engineer can adapt his very general knowlege to new problems.
Most people don't want to be able to cope with the unfamiliar; it's uncertain, uncomfortable, and sometimes hard. Most folks prefer not to be asked, and thus not to be capable.
Given all that, it makes sense that some coders see no real need for TAOCP. It is math and general tools for thinking, rather than a Chilton's manual for programming application XYZ. It would take decades to fully understand the most of TAOCP, and most folks want to just get their tickets punched and get a job so they can stop making a pretense of learning.
text? Text? You want ascii text? My God, you are a heretic. Here's an author who essentially took a multi year sabattical to write a absolutely beautiful type system--TeX-- and here you are, asking if there's a text version...
Well, I suppose that technically you could be asking for TeX source-- but then you'd be missing the elaborate postscript drawings that pepper the piece. (Since TeX is for the most part error free, MikTex should not cause any typographical errors..., but you never know.)
Many of us think that the persons who figure how to solve some problem first (or better than anyone before them) are entitled to manage the discovery and protect the know-how involved (i.e. the intellectual property) any way they consider appropriate.
Then many of you need to wake up. The "authority to manage the discovery" is NOTHING like an entitlement. It is ONLY there because most of the greedy bastards in the world wouldn't even remotely cooperate with anyone--if they try to research new ideas at all. In fact, look any where where there is not legal protection, and you'll see what people believe about inventions. Take graduate students for example, they are only barely getting some semblance of rights. You still see about all of student work subsumed under professors, but at sometimes they often get their names on the paper (somewhere, in small print :), even if they won't see any kind of real benefit/grant/prestige from their work.
As for software patents, no I'd not give them an inch of credibility. There's hardly one really good general-audience commercial program out there NOW. Maybe when there's two or three of something commercial, then we can talk about who gets credit for the advances involved. In other words, there is WAAAAY too much room for people to work and compete without even diddling around with software patent issues. Plus, you've mixed up issues a bit. Copyrtight law is what allows people to choose the GPL or assign rights--NOT patent law.
And yes, the aggregation and advance is most important, but remember a patent should ONLY go on something not obvious to an EXPERT IN THAT FIELD. I would extend that to say a patent is only valid WHILE it is not obvious to an expert. Then maybe software patents and other such artifices would have some useful--and plausible--meaning.
I've been following the saga of volume 4 for twenty years or so now. In the early 1980s I got a math degree at Caltech, and during my stay there I developed a deep love of combinatorics and combinatorial algorithms that stays with me to this day.
I even had the opportunity to ask Knuth (who gave a talk there circa 1983) about volume 4, and it was clear that he hadn't given up on eventually returning to TAOCP.
The Knuth books have always had a treasured place on my bookshelf, but I never stopped hoping that I might someday see Volume 4. Yes, yes, it's only the first fascile. I've known about the fascile plan for the last few years, but it's still something quite different to see the first one. On my screen. Not next millineum, not next year, not next month or week or day, now.
*sniff* It's enough to almost make a geek cry.
--j
I'm a nature photographer.
Additionally he wants to very carefully expose what he believes to be a representative architecture for the underlying machine so that the algorithm can be properly analyzed without worrying about code transformations applied by a compiler.
So while I'm not fond of the pseudo assembly language representation of the algorithms from a readability point of view, I understand why he does it this way.
The fact of the matter is that what constitutes programming today and who is considered a "programmer" has changed significantly since Don Knuth published his first encyclopedic volume in this ongoing series. At that time most programmers really were extremely knowledgeable about mathematics - programming degrees usually involved equal amounts of advanced math and programming. The Knuth volumes were practically bibles for programmers. I suspect that Knuth may have thought that you could actually distill all of the core knowledge required for programming into such a set of reference books. Just as technology has rapidly changed since that era so has programming. A single reference book on algorithms such as Introduction to Algorithms by T. H. Cormen et al. is more than sufficient for most programmers today - more likely even overkill. I can't help but think that few programmers today (say under the age of 30) would really understand much less truly appreciate Knuth's work - it simply isn't relevant for them. This isn't "good" or "bad" but reflects the changed nature of programming. Ask how many programmers today write low level subroutines to perform sorting etc. versus using an existing pre-written package or software component? Yeah, maybe it is good to know this stuff in Knuth's books but given the rush of other skills/techniques/methods to learn it simply isn't as crucial any more.
Knuth's volumes probably should be on your bookshelf. But for learning about algorithms, I think you are better served with a more modern textbook, which focuses on teaching techniques and approaches. And for any particular specialty (string matching, combinatorial algorithms, etc.), there are also lots of books that are more relevant and more complete.