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!"
anyone else think ThinkGeek.net needs some 'Absolut Knuthingness' tshirts?
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
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.
He's right - I'm way too lazy to spend more than a few minutes on things like that.
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!
/. articles].
No no no... He's right [yawns, stretches, checks for new
Why do you pay $2.56 for every error found in your books? 256 pennies is one hexadecimal dollar.
Damn, and I thought I was a nerd!
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.
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. "
~~~~~ BigLig2? You mean there's another one of me?
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?
256 equals $100. We're being shafted.
"I have opinions of my own, strong opinions, but I don't always agree with them." -- George H. W. Bush
how do you go about un-gzing in win95?
and could some one mirror this in html or txt format?
I want 2D games back.
"...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.
LOL! That's quite a reward for finding errors in Knuth's brain child. While Knuth professes Computer Science and the French language have changed significantly since vol. 1, the Economics of error-finding have remained the same... What about inflation Prof. Knuth!?
This suggestion should be worth $0.32
I just looked this author up at Amazon. Here is some of his previous work:
The Art of Computer Programming, Volumes 1-3
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.)
Soccer Goal Plans
Nah, we can do that!
Although, these challenges do sound a little dry, don't they?
- Claus
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.
I was actually hoping for this.
if those few people who have hundreds of his checks decide to cash them all at once when he retires...
"oh my god! my retirement money is gone!"
Me email iz skyewalkerluke at microsoft's free email service.
Sounds as if he is stuck in the 60s. Sorry buddy but I used that line once and got slapped.
In todays world of skript kikddies and MCPs (Magazine Certified Programmers) The "if your a programmer then you should know how the computer works" way of thinking is right out.
I have met about three computer programmers so far and thay couldn't tell me why explorer.exe was required to have at least one instance running at all times!
I remember one Visual C++ programmer who every time a shouted "Damb it! another illegal operation bug! I want my Linux machine back!" he would reply "You need to go to an OS collage course and learn why an OS is so hard and complicated. These things are little things because the OS is so busy with just running it can't handle everything"
hmmm. I would award him the nobel prize for computer sympathy!
So I guess the computer idustry is so saturated that anybody who anybody can join without any prior skills or knowladge. Gone are the days of codeFu. Gone are the days of mathamatics. Gone are the scientists striving to get to the moon. And in come the monkeys with quick tails to bow to the needs of every big haired boss.
Looks like Open Source comunity better get trucking in taking over the world. If we continue eventually the whole internet will have a big general protection fault and the only ones left standing will be us!
> SELECT * FROM brain_cells WHERE synaptic_rate > 0
0 row returned
Oops MIPS... MIX... You know what I mean [grins sheepishly].
Cached version of the Knuth document is here.
the personality cult people will tell you to drink the kool aid. I won't. You don't know how outdated the assembly language MIX really is!
However, an algorithm is an algorithm... But if you don't know what a linked list is, and need to see it implemented, what are you doing reading TAoCP? There's some good stuff in there, but at least half of it is taught better in 1st year/2nd year CS classes.
It should have been called "Computer Programing, 1960s style, for Math Geeks".
Anyhow, fortunately, Volume 4 will use a RISCy OS MMIX, which is somewhat like a PPC, SPARC, MIPS, and other modern architectures.
Moorish artisans used to purposedly introduce a mistake in their tile designs, as it would be presumptous for a mere mortal to attempt perfection.
Knuth introduced the MIX back in the 60s and all the reasons why it was the wrong choice back then remain valid today. He well knows that, but leaves it in the text to follow his own theological observations and not make his books perfect.
A friend of mine suggested printing post-it notes with Java code to paste over MIX code in the tAoCP.
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.
I don't buy that argument. And the business about TAoCP being like the Encyclopedia Britainica, a work for the ages is a bit of a crock. As compendiums of algorithm's go I prefer the one written by Ron Rivest and friends. I can't remember whether it is written in Pascal or C and I really don't mind because I can easily read both.
My ideal algorithms book would be written in a modified version of C# or Java. First I would get rid of the unnecessary braces and semicolons. All they do is to make the code fragments longer. Indentation shows block structure much better, continuation lines are not actually ambiguous in algol like languages.
I would also add in statement of the loop invariants, pre and post conditions which as a formal methods person I regard as an important part of an algorithm.
Looking for an Information Security student project suggestion?
Try http://dotcrimeManifesto.com/
At the very least these books represent the magnum opus of one of the pioneers of our field. I think they are worth reading for that reason alone.
However, my thoughts were similar to yours until I actually read AoCP. It's not so much learning algorithms as it is learning to think algorithmicly. I rarely get to code at the low level shown in AoCP. Even so, my SQL based reports in PHP and two-bit perl programs benefit from an algorithmic approach.
I am certain that I am better programmer for reading AoCP, and I never did any of the exercises. ;)
A fascicle updating Volume 1 to use MMIX is already out; it's not so much a Vol4-only thing.
You can read PostScript files on Windows, Mac, Linux, OS/2, and VMS with GhostScript.
What a fool believes, he sees, no wise man has the power to reason away.
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.
Or, do this:
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.
The society for a thought-free internet welcomes you.
From this page :
"Although I'm working full time on Volume 4 these days, I will try to reply to all such messages within six months of receipt. "
SIX MONTHS...
It's really a shame to read all these comments from people who have never heard of The Art of Computer Programming... Shows the average intellectual level of slashdot readers. To make things worse, some of the individuals are proud to not know Knuth or to state that his books are useless or boring.
Shame...
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!
For other Windoes folks, ToastScript is a handy little Java app to read and print PostScript.
"God fights on the side with the best artillery." - Napoleon, Marshal of France - speaking truth to power
He should have started with IBM 650 Assembly Language and stayed with it. Then my father, who programmed on the IBM 650 (like Knuth) would be able to pick the books up easily.
It's a great CPU-neutral distribution format for programs. We all should be writing programs compiled with MMIX-targetted compilers run on MMIX virtual machines. Garbage collection? Bah. Who needs it? The last time I checked x86 had no native GC - and look how popular it is. (GCC 3.1 can target MMIX)
Are his older volumes still worth a read today or have things changed to a point where they're no longer applicable?
scott
I was poking around Knuth's site, looking at the instruction set for MMIX , 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?
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
Nobody uses or has ever used Knuth's assembly language to develop real software.
But Knuth's reasons for making the student learn a simple assembler for a virtual processor are valid. As he explains in the introduction to the first book, it abstracts the language from the algorithms, allows him to include all features he needs to demonstrate the theory (and only those) and it also serves as an exercise for the future professional (I am developing software for 15 years, and I must have learned more than 20 different languages and used at least 10 in production enviroments).
I would advise you to buy these fundamental books and study them. You will see that the language is very simple and more than worth the trouble (because Knuth's books are still the best available source of basic information on many of his topics).
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.
... 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.)
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
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.
I think we've pushed this "anyone can grow up to be president" thing too far.
Isn't this the guy who invented the expression
What I meant to say is, "Doesnt' this belong in the Lucas/Crack thread?" but, of course, the timing is all off now. Yes, I am "Bingo Foo," Posting anonymously here just to save 1 Karma for this screwup.
>Moorish artisans used to purposedly introduce a
>mistake in their tile designs, as it would be
>presumptous for a mere mortal to attempt
>perfection.
I've heard that about Navajo rugs too, but have never been able to verify it.
-fb Everything not expressly forbidden is now mandatory.
Knuth has since changed his mind about MIX, and moved to a much more suitable language, MMIX, which is based on a Reduced Instruction Set.
The assembly language is not a big deal. True, it may be a bit more difficult to read than a high level language in fashion or pseudo code, but once you learned the basics of MIX (which anyone who calls [him|her]self a programmer should be able to do without much difficulty), it is not much different. Actually, I like seeing the algorithms implemented in an assembly language rather than written as pseudo code. It often amazes me that a seemingly complex algorithm can be implemented in such short assembly! If MIX is really not your type of thing, then it should be mentioned that each algorithm also has an English version before the MIX implementation.
So who else noticed that all MMIX processors have a built in serial number?
Yes, I know they are hypothetical...
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.
Just saying it like it are.
A friend of mine suggested printing post-it notes with Java code to paste over MIX code in the tAoCP.
Suggesting that Knuth should implement his algorithms in Java is the strongest argument for MIX I've ever heard.
Sometimes it's best to just let stupid people be stupid.
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.
Will I retire or break 10K?
Why spend 10 days doing something when you can spend 10 years automating it?
Explanation for those who do not understand software engineering: As soon as you've automated the 366th book, you've saved money.
Will I retire or break 10K?
Will ungzip a file.
then you need to install GhostScript for windows to read the PS file, or just print it to a PS printer.
Weird... To me it seems rather presumptuous to think that a mere mortal could achieve perfection, if only they didn't make those intentional minor imperfections.
...get really turned off by Knuth's over-inflated ego? I don't doubt that the guy is smart, but I can't stand even reading his FAQ, let alone trying to make it through tAoCS. I don't buy into all his bullshit about batch processing, etc... I think he's just a smart guy who's full of himself and likes to be eccentric. And has a lot of people eating out of his hand.
As evidence of this, I point to Dick Feynman, who was incredibly smart, amassed a decent body of work, both in terms of theories created and teaching books/lessons written, but at the same time took time out to play in a native Brazillian band.
I might be a computer scientist, but I look up to Dick Feynman, and I shake my head at Donald Knuth.
_sig_ is away
I can appreciate the common-denominator factor for the MIX language, but nobody programs computers anymore - they program the OPERATING SYSTEM of those computers. The people who write the O/S are the ones actually programming the machine, and once that's done, the application developers (i.e. the majority) just use the services they provide. The last time I heard of anyone programming the machine rather than the OS was in DOS games.
I certainly know who he is (he wrote the intresting "society of mind"), but I always figured him more of a philosophical AI-guy than a heavy-theory-guy. I've taken a lot of courses in AI and game theory, and he is never mentioned along with the greats... What field has he contributed to?
Opinions stated are mine and do not reflect those of the Illuminati
TeX SuX bigtime!!!!
It's shit, crap, whatever you want to call it.
It is NOT a sane language/system.
Fuck Knuth / TeX / whatever comes from Knuth!
There are a LOT of other texts on algorithms available.
>Then my father, who programmed on the IBM 650 (like Knuth) would be able to pick the books up easily.
But nowaydays, with his bad back and all, he can hardly pick up anything.
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.
Infuriate left and right
C# didn't exist when he started volume 4. Java didn't exist when he started 1-3. Are you suggesting that he should rewrite each volume every time a new language becomes fashionable?
The point of a bare bones old language is that it favors nothing. If you have to see an idea in C# or Java to understand it, then you are a piss poor programmer.
Infuriate left and right
And there is a good reason that his opinion is worth much more than yours ;)
All of his justifications for using MIX are valid today. He is moving to MMIX, which is a good model for modern processors (recall that when he started this, MIX was a pretty good model for existing processors).
The main points for why MIX/MMIX are a good choice?
-there are is no language wierdness between you and the algorithims, not even the quirks of a particual assembly set.
-every fully competent coder must have done a bit of assembly (I guess there could be exceptions to this, but I have never met one... and I have worked with a lot of coders). This is as good a place as any to get that experience if you don't have it. Actually, it is probably better than learning a strange assembly.
-any competent coder can translate on the fly from the MIX/MMIX algorithms to their language of choice. This would be much less true if Knuth had used a language-of-the-year.
S.
An excellent book that discusses many algorithms: qsort, radix sort, binsearch, merge sort, etc...
in a good amount of detail (often with fairly in-depth mathematical analysis), is _Algorithms in C++_ by Robert Sedgewick. Much of the analysis in the book is actually derived from TAOCP, I believe. Parts 1-4 deal with:
- Fundamentals
- Data Structures
- Sorting
- Searching
Part 5 is a seperate volume and deals with graphing. ISBN 0-201-35088-2.
Andrew
Get Windows Commander from
http://www.ghisler.com/
Features built-in GZ and TAR un/packers, FTP, everything that the old Norton Commander had and much more besides. Brill.
I feel the same way. You know what ? I've tried to read Donald Knuth and it's over my head. I dont understand it.
I was pretty turned off by the assembler too, since I don't do any assembler coding at all. I'm a C guy my self. But the thing here is that he gives the algorthms in a pseudo-code form, implementable in any language. When I look at his stuff, I read his writing, and the algorthms, but I don't even bother with the ASM. Yes, I know i'm missing a lot. But he has vastly more than enough otherwise.
Two examples really get me foaiming at the mouth on this. 1977 or so, worked on a 16K 8 bitter, datapoint 2200, similiar to 8080 or z80. One routine set the cursor position from D (x) and E (y) registers. One guy could not think below the Algol level (shows how dated this example is!). Instead of just setting D and E and calling the cursor set routine, which would write D and E to the appriopriate I/O registers, he pushed addresses of the values onto the (hardware limited) 16 level stack, then called the routine, which popped off the addresses one by one, loaded the values, wrote them to the I/O registers. On a 16K machine! Simply could not adapt to anything less than a Burroughs mainframe.
Much more recently, worked on some code from the 1990s, where someone had written some semi-cute memory allocate / free routines. You passed a size and the address of a free routine. It allocated 8 bytes extra, storing the free routine address and size there, but returned the address + 8 to skip the semi-hidden header. The main free routine called the saved routine address if not NULL, then freed the actual memory.
Some bozo had to compare two data structures. Instead of simply comparing various fields, he built up a string representation of each. About a dozen times for each, he determined how many extra bytes to add to the built up string, allocated that many more bytes, used strcat and sprintf to append the conversion representation, and finally used strcmp to tell if the strings differed! Then freed the two built up strings. Gaaak! Gave me the shudders every time I saw crap like that, but it was a legacy product, soon to be obsoleted.
Infuriate left and right
You have misinterpreted Knuth's comment on the French language. He does not warn nit-pickers that French has changed since he wrote his text, but rather that the French language used in his quotations has changed since the quotations were originally put in print, and therefore are not necessarily examples of modern French usage or orthography.
As an English example, at the end of Chapter 7 of The TeXbook, he quotes
Some bookes are to bee tasted,
others to bee swallowed,
and some few to bee chewed and disgested.
--FRANCIS BACON, Essayes (1597).
He will presumably not accept "corrections" to the spelling of "bee," "bookes," "disgested," or "Essayes," because they are spelled as Bacon did originally.
Most English speakers freely acknowlege that spelling and usage have changed in the last 400 years. Probably most French nit-pickers are less realistic, but that is a whole other topic.
Install Cygwin on your winbox. You'll get a whole bunch of utilities from the real world helping you to feel yourself as not so isolated.
Less is more !
Oops, I meant :%s/old/new/g
Moderation Totals: Troll=2, Insightful=1, Funny=2, Total=5.
Not sure if I should be proud or ashamed. Obviously the moderators aren't either. Honestly, I never even considered it would be modded as funny.
Watching the moderations of this post has been an interesting lesson in Slashdot psycology.
-Pete
Soccer Goal Plans
I just had Netscape 7 and Win2K crash after searching Amazon.com for the 3 volume set of TAOCP. Did my profane OS fall over after merely viewing the holy book's entry in an online store?
The Glass is Too Big: My Take on Things
The Don likes "lowlevel" notation.
Have a look at some of his math papers;
they use , ummm, let's say, the nuts and bolts
of math (set theory). This is his style.
paradesign, thanks for pointing out something that has been irritating me for years.
.ps or .ps.gz format.
.ps.gz file, it's a big hassle to install Ghostview and Ghostscript and all that. If it was provided in PDF in the first place, all this unnecessary hassle could have been avoided from the very start.
In my opinion, every single person who posts anything on the web should never post something online in *.ps.gz format ever, ever again! *.ps.gz format used to be fine a long time ago, when researchers and academics exchange papers using UNIX boxes. *.ps.gz is terribly Windows unfriendly. More than that, it's Web-unfriendly. Nothing is a bigger turn off than encountering a interesting document/paper in the archaic
Even if somebody posts a Postscript file or gzipped Postscript file online, they could at the very least put up a PDF version too. If they can produce a Postscript file and gzip it, they definitely have the technical ability to produce a PDF file from Ghostscript's ps2pdf or Acrobat.
Now before you think I'm a Windows-only person, who have no clue about using Winzip or installing Ghostscript, let me assure you that I'm not. I use Linux all the time.. but I still prefer my files in PDF. There are a few occassions when I use Windows, such as when I'm at a friend's place or the like. And when I encounter a
Of course, the typical geek excuse (or advice depending on how you see it) would be to say "you can always install Winzip, Ghostscript and Ghostview, or some Postscript viewer browser plugin." Please. Users would want their files opened right away. No hassles, no messing around with weird programs, and no installing megabytes worth of stuff just to view a single file.
And even if PDF files are provided, there are many occassions when the PDF files have jagged fonts which don't display well on Acrobat Reader.. especially if they've been produced by LaTeX. There are ways to solve that, but that's a different story.
So paradesign, thanks once again for bringing this up.
Moderators, remember that moderation is not a measure of how much you agree with somebody's post.
Are you joking? What field has he contributed to? Maybe you took your AI and game theory courses, in preschool? Minsky _founded_ the field of A.I., end of story. While Turing played a big part, Minsky was definitly the man responsible for taking it to the next (and what we recognize today) level.
Sedgewick's book is good, that I haven't actually read the C++ version.
But it's the "Algorithms for Busy Programmers" version that is more geared towards showing you a few choices of algorithms to use to solve your particular problem, instead of showing you algorithms and formal proofs like tAoCP does.
So I'd keep Sedgewick's book on my desk, but when I found something I wanted to really understand, I'd read more about it in Knuth's book.
Can you say -
still stuck in the 70s lameness that
'real programmers use assembly'
Maybe Knuth and that guy who believes that all things are written best in Forth should go on a two man tag-team tour.
Another 1970s Unix lamer.
Why do you need to see source code to understand algorithms? If you do, Knuth's books are probably a bit too high lever for you.
Most algorithm texts I see these days have pseudocode, at most.
with fewer* than one byte per year of Knuth's life:
perl -e '@a=1..pop;sub a{@a?map@a=(a(@_,pop@a),@a),@a:print"@_\n";pop}a' 4
* I'm just counting the perl code, not the 'perl -e' and quotes for the shell.
Quattuor res in hoc mundo sanctae sunt: libri, liberi, libertas et liberalitas.
I went to Stanford as an Undergraduate...
And I have to admit, even though I took over half-a-dozen core courses in Computer Science at Stanford, I never ONCE heard the name Donald Knuth, I never SAW the guy in person (or even an updated photograph until I looked on his website many years after I graduated), and I have never read his books. His books were never part of the curriculum.
But that's Stanford: Pay a bunch of professors a lot of money to do very little teaching. In fact, professors generally have to teach only one-quarter (10 weeks total) of classes a year, and that's not even a full ten week period, because the lectures last all of 3 hours TOTAL in the week, and usually a couple of office hours placed at the most inconvenient times. I even had professors who skipped out on their office hours. Most professors don't even grade papers. (This is like writing code without a computer in front of you, and never bothering to run the program on ANY computer. How do you know if your program works? How do the professors know if their teaching is any good?) How many of Stanford's Nobel Prize winning faculty attended Stanford as an undergraduate? I don't think a single one.
Most of the techie-Teaching Assistants didn't go to Stanford either. I had guys from Purdue, UCLA, Darmouth, Amherst, U. of Maryland, U. of Texas, and of course, the ubiquitous UC Berkeley. Several profs got their undergrad degrees from Berkeley.
The professors always view themselves as RESEARCHERS first, and teachers a distant third or fourth.
"Sophomore Slump" occurs after the euphoria of Frosh year. You enter as a sophomore and realize "the honeymoon is over", ie that your professors aren't necessarily gifted in communicating their knowledge (one time literally a guy "taught" numerical anlaysis on computers by reading from a textbook!), and that the classes are bloated with too many students (I never had less than 50 in a class, so forget the 7:1 student teacher ratio published in US News and World Report's annual college survey). Gerhard Casper -- being a great guy who experienced similar problems during his undergraduate years in Germany -- tried to rectify the problem by creating Sophomore Seminars, to encourage faculty-student interaction and small class sizes. But the number of open slots for students is extremely limited, and most professors don't participate. Thus the vast majority of undergraduates miss out with one-on-one faculty contact, even though 100% of the student body pays the full $30,000/year tuition.
And don't get me started on the undergraduate "advising system", which is a joke! 78% of the faculty do NOT participate in advising undergrads, and the ones that do are unfortunately...well, let's just say that most of them never attended Stanford as an undergraduate...
Just for the record:
Donald Knuth did not attend Stanford for his undergraduate degree; he went to Case Intitute of Technology (Case Western Reserve).
The founders of Sun Microsystems did not attend Stanford for their undergraduate degrees. Vinod Khosla went to the Indian Institute of Technology and picked up his masters at Carnegie Mellon, Bill Joy went to U. of Michigan and picked up the PhD at UC Berkeley (in addition to inventing the sockets protocal for the Berkely System Distribution of UNIX), Andy Bechtolsheim got his undegraduate training in Germany and got an MS from Carnegie-Mellon, and Scott McNealy went to Harvard.
The founders of Silicon Graphics did not attend Stanford for their undergraduate degree. Jim Clark attended a college in New Orleans, Louisiana, and picked up his PhD from the University of Utah. Marc Hannah went to U. of Illionois at Urbana Champaign. Charles Rhodes picked up his BS, MS, and PhD's from Purdue University. Kurt Akeley got his undergraduate degree from U. of Delaware.
The founders of Cisco System did not attend Stanford for their undergraduate degree. Len Bosack got his BSEE from U. of Pennsylvania. Sandra Lerner got her BA in Political Science from California State in Chico.
The founder of MIPS, John Hennessey, did not attend Stanford for his undergraduate degree. His alma mater is Villanova University. He got his graduate degrees at State University of New York, Stonybrook.
The founders of Google did not attend Stanford for their undergraduate degrees. Larry Page went to U. of Michigan. Sergey Brin's alma mater is U. of Maryland.
The founder of defunct VA-Linux and the fully functional Sourceforge did not attend Stanford for his undergraduate degree. He went to U. of Notre Dame.
The founders of Apple Computer did not attend Stanford for their undergraduate degrees. Steve Jobs attended (and dropped out of) Reed College. Steve Wozniak received his BSEE from U. of California, Berkeley.
The inventor of the mouse, Doug Englebart, did not attend Stanford for his undergraduate degree. Englebart picked up a degree in electrical engineering from Oregon State, and a Bachelor of Engineering and PhD from U. of California, Berkely.
The co-inventor of the transistor, William Shockley, did not attend Stanford for his undergraduate degree. His alma mater is CalTech, and he got his PhD from MIT. But he grew up in Palo Alto, California (the town that surrounds Stanford University), and moved back to found one of the first transistor companies that would spawn off into the half-a-dozen companies that put the "silicon" in "Silicon Valley". (The founders of Intel didn't attend Stanford either.)
The founders of Microsoft did not attend Stanford for their undergraduate degrees. Bill Gates dropped out of Harvard. Paul Allen graduated from the University of Washington in Seattle. The reason I bring this up is that the two nevertheless have their names on two buildings on the Stanford campus. I wonder why Stanford needed to solicit their funds? Don't they have scores of successful alumni who could have donated the money? It's a rhetorical question, of course. Many of the buildings on campus were funded by non-alumni, including the massive Green Library and Green Earth Sciences building, Stern Hall, Gerold Cantor's art museum (which was renamed from the Leland Stanford Jr. Memorial), and others. Non alumnus and Silicon Graphics/Netscape founder Jim Clark recently caused a furor when he decided to stop funding the building of the Clark Biological Sciences building.
Finally, you've no doubt read in "Burn Rate" that Yahoo! was started by a couple of undergrads in their dorm room. Unfortunately, that's not true. The majority shareholder, David Filo, attended Tulane University as an undergraduate. He met up with another GRADUATE student Jerry Yang (who DID attend Stanford as an undergrad) at Stanford in Kyoto, Japan -- suprising to me, because I always thought the world wide Stanford centers were reserved for undergraduates.( But with over 900 electrical engineering GRADUATE students enrolled, versus maybe about 80 electrical engineering undergrads, it's clear that that the graduate students have the upper hand.)
I could go on and on...
Anybody who tells you otherwise is full of it. Especially US News and World Report. I realize that nobody can influence US News and World Report, so it's best to educate the future college students with the facts. I've been there, and done that. Don't go to Stanford for your undergraduate degree, but DO go there for your graduate degree. And based on the biographies above, it's definitely OK to go to a state university. Some people feel a stigma otherwise.
If you don't believe any of this, read the Boyer Comiision's report at
http://naples.cc.sunysb.edu/Pres/boyer.nsf/
and "Profscam" by Charles Sykes, who ironically has a fellowship at the Hoover Insitution, an indepedent think-tank nestled in the Hooever Tower on the Stanford campus.
Feel free to send this info to any parent, high school counselor, or wide-eyed innocent high school student. When I was in high school, I didn't have the advantage of the Internet to research schools thoroughly. I wish I had had this information.
screw that jerk let him do his own work
i for one have enough stuff to do..
While I have a lot of respect for Feynman, I don't believe he ever designed and built a pipe organ in his own home.
As for the pipe organ, somewhere there's a photo of Knuth sitting at home in front of it. It's not a small instrument. :-)
You cannot apply a technological solution to a sociological problem. (Edwards' Law)
Most algorithm texts I see these days have pseudocode, at most.
You remind me of a good point. Most of the people bitching about MIX are only bitching because they can't cut-and-paste the code into their favorite programs. Knuth does provide psuedocode, flowcharts, and the mathematical definitions of all the algorithms in the book! What more can you ask? The MIX code is just one more layer to ground the algorithms to real life.
If one doesn't understand MIX, then he should look at all the other resources avaialable for understanding the algorithm! If he can't understand the mathematics, then you still have the flowcharts and pseudocode. If he can't understand that, even when combined with the lengthy English discussion/explaination that goes along with it, then he shouldn't be reading the book!
Probably not. Probably even senior software engineer isn't good enough.
If I want to use an algorithm from Knuth's book I will give the book to an engineer and tell him to give me C# or Java classes that implement the ones I might want to use. Privilege of rank.
Seems like you don't want to LEARN, you just want to ape the procedure and never have to exercise the gray cells.
Knuth's book are for learning IDEAS not copying code blindly.
Infuriate left and right
That's a silly argument, even if Knuth himself makes it.
MIX is an idealized abstraction of a mostly obsolete generation of CISC processors. There have been more changes in the fundamental structure of processor architectures in the intervening years than there have been in Algol-family languages (compare the 8080 to IA64, versus C to Java).
Knuth could easily (if anyone could easily) create an idealized abstraction of an Algol-family high-level language, use that, and his work would be far more accessible to all the C, Pascal, C++, Ada, Java, Python, PHP, C#, etc., etc., etc., programmers in the world than it is when implemented in MIX.