Posted by
Hemos
on from the the-sensei-speaks dept.
Pretender writes, "Donald Knuth is interviewed here, and the questions have more depth than you usually see in his interviews. Gets into a little nitty-gritty about TeX, fonts, and Crusoe's possibilities with MMIX emulation. The cartoon at the bottom is hysterical. "
Re:Really nice books and they are probably cool?
by
Anonymous Coward
·
· Score: 2
They are among the greatest of books, they hold the highest position on my computer book shelf (yes, I organize my books in a special order with each slot denoting a different rank, you got a problem with that)
They are hard to read, read them twice, memorize where different things are. Learn enough mix to read the code and then rest assured that you have the tools to solve 99+% of the problems you'll ever encounter in the programming world. You have to have a love for the bits and the bytes to really and truely enjoy these masterful work's of art.
The big thing is known how to read those books, knowing where to look in them, and then keeping them close by. As with all things in computers, it's more important to know where to look to find the solution than to know it. These books have most of the solutions you'll ever need and if you can hang with them then the rest of the solutions will be trivial in comparison.
The thing that we need to know is whether or not Transmeta is going to implement an emulator for MMIX.
This would doubtless be crucial for Volumes 4-6 of TAOCP, and the availability of real hardware for this would strike fear into the hearts of graduate students in computer science the whole world over...
-- If you're not part of the solution, you're part of the precipitate.
Yes, as far as I recall the Crousoe is a VLIW, with 128bit "instructions" (I think Transmeta calls them "molicules", but almost every other VLIW calls them instructions -- the IA64/Merceed/Itanum calls them "bundles", sort of -- it isn't really a VLIW)
Means the registers are 128 bit each.
No. It doesn't say anything about the register width at all. Nor do the Crousoe whitepapers. I expect that the integer registers are 32 bits, because they have to be to effecently emulate a 32bit x86 CPU. I don't expect they are any bigger because that would consume more power, and more transistors that could better be doing something else if your goal is to emulate a x86. I expect the FP registers to be 80 bits, but they could be a somewhat diffrent size.
There are many diffrent bit widths in most CPUs, make sure you know which one is being talked about. For example, The PPro has a 128bit interface from the L1 cache to the L2 cache, but only has 32bit GP registers. The IA64 has 128bit wide "instruction bundles", but only 64 bit wide GP registers.
I think they combine several x86 instructions in one crusoe 128 bit "instruction" (when they emulate x86 that is).
Pretty close. A traditonal VLIW (like, say, the MultiFlow) has several "functional units", and each "instruction" tells every functional unit what to do. Sometimes you have to tell some of them to do nothing (nop - no-operation).
For example, imagine a VLIW that has one load/store unit, two math units, and a branch unit... If you want it to do a load, an add, a multiply, and a branch you stick that all in one VLIW instruction. If you want to do two loads, a store, an add and a multiply you need three VLIW instructions, the load/nop/nop/nop, the store/add/multiply/nop, store/nop/nop/nop (you don't get to stick it in two just because you have nops -- you are out of the right flavor of instruction slots).
I think the Crosue is one branch unit, and either two ALUs and one LOAD/STORE or two LOAD/STORE and one ALU. I forget exactly which.
Many x86 instructions can be made into one or two slots of a VLIW instruction. Some others will take more then one VLIW instruction, but leave some slots open for parts of other instructions. For example the x86 'ADD m32,imm32' instruction (add 32bit constant to a location in memory) will take a LOAD slot (to get the memory value), then in another bundle (so the LOAD has time to complete) the ALU slot (to do the add), and then in another bundle the STORE slot (to write the results back) -- leaving 3 open branch slots, some open LOAD/STORE slots, and a few ALU slots as well. The code morpher may be able to fill the other slots. It may not be able to fill them all. Some x86 instructions may take multiple full VLIW instructions to carry out (like FSINCOS).
The transmeta white papers have some really good examples of what their code morpher can do. But remember it isn't magic. The PPro, P-II, and P-III, K6, and K7 can all execute two x86 instructions per cycle. The K7 can execute three. Actually in rare cases many of them can execute more then two, but other then the K7 they can only decode two per cycle, so only the K7 has a hope of keeping it going. The Crosoe can't get ahead of the "normal" x86 CPUs just by doing two instructions per cycle sometimes, or three, or even rarely four, if it spends too much time doing one or less. Or even if it spends lots of time doing two on code that the P-II could also do two!
VLIW isn't magic. There is a reason every single VLIW to date has been a comercial failure. Transmeta may have hit on a way to make it not flop. This definatly addresses several shortcomings VLIW has had in the past.
The Transmeta CEO said something like that on that webcast Stanford EE380 lecture. URL is http://stanford-online.stanford.edu/courses/ee380/ main.html if you want a streaming version of the webcast.
I'm sure he said the Crosue was a 128bit VLIW. I can't beleve the Crosue has 128 bit GP registers though. Sorry. Remember there are lots of diffrent bit widths in CPUs. Size of the integer/address registers is only one of them.
My info comes from Transmeta's white papers (on theur web site). Hennesey and Patterson's Computer Archicture textbook (I got mine form the University bookstore in '92, there are probbably better books to read about VLIW from, but i don't know any). And last, but not least common sense.
The thing that we need to know is whether or not Transmeta is going to implement an emulator for MMIX.
I can't imaging that the current Transmeta chips would be good at it. While they are not x86's they are designed to be good at emulating x86 code, not MMIX code. The underling needs are pretty diffrent. Even though the Transmeta chips are designed to be fairly efficent emulators of x86 code, and I doubt they have been designed to be poor emulators of other things, they will have a hard time emulating things sufficently diffrent from the x86. For example:
The Crousoe emulates the 32bit x86, so it almost certinly has only a 32bit ALU, so the 64bit adds on the MMIX (or Alpha, or V9 SPARC, or...) will require a 32bit add, a carry check, and another 32bit add. Multiplys are much worse.
The Crousoe emulates a machine with almost no registers. Internally it has about 40 (from the white paper) so it can do static renaming. It won't emulate the MMIX (64, or 256 registers, I forget which) very effecently that way. Nor the SPARC (~32 visable registers, but easy access to many more, plus modern implmentations do renaming with many more then 40 registers internally), nor the Alpha (32 int registers, plus 32 FP, and via renaming way more then 40).
The Crousoe does the Intel style psudo-IEEE (which Intel chose because (I think) the IEEE spec was incomplete), MMIX (I think) uses real IEEE, and SPARC and Alpha definitly both do.
The Crosue's MMU page table is exactly like the x86 page table (I don't know if MMIX actually has one, but the Alpha, and SPARC both do)
The "intresting" MMIX instructions that treat registers as a vector of 64 bit values and do linear algrbra style dot and cross product type things won't have an underliening implmentation, so they will need to be emulates the S-L-O-W way.
That said the Crouse could probbably emulate the MMIX better then most other 32bit CPUs, but an Alpha, or V9 SPARC would do better. Maybe even the IA64.
Bah, it would make it easier for them. Having to build your own (M)MIX emulator/assembler/monitor should be part of the fun.
Advogato no longer slashdotted
by
raph
·
· Score: 2
Advogato did a quick move to Berkeley's xcf, thanks to the help of Manish Singh. It ought to be able to handle the load the next time it gets slashdotted. Now we just have to come up with some more cool content:)
Problem is that you do need calculus to understand the book at least some of the stuff I was seeing.
You hardly need to be a calculus expert to understand what an integral sign means.
Most of the interesting things (unfortunately) have a shit load of math behind them.
I did calc in high school. It hardly constitutes a "shitload" of math. You're right that a lot of things need basic math. It's got nothing to do with "elitism" or "keeping the rabble out", or "keeping it expensive" -- I don't know about you but my high school education was free. It's got to do with the fact that the moment you start doing anything quantitative or analytical, you inevitably need some math. In other words, real scientists need to know some math. The fact that you can throw together some code does not make you a computer scientist.
Re:Really nice books and they are probably cool?
by
Kismet
·
· Score: 2
Interestingly, this "budding theory" predates any computer language. Before a language may be conceived, we have to understand things like Turing Completeness, "regular languages", context/context free, lexicons, protocol, computational complexity, space/time constraints, discrete computation theory, etc.
Unlike engineering, computer science was _born_ in theory.
In the past it has not been "See, here's how you program in C/C++/Java. And this is what a compiler and OS do. And here's 4 other things. Now go practice coding. Soon you'll be a scientist/engineer." That is, unfortunately, our current trend.
In the past we have seen great teachers such as Turing, Dykstra (sp), and Knuth.
If anything, we should _return_ to the theoretical roots of computer science to provide understanding for our current practice.
Re:Really nice books and they are probably cool?
by
Kaufmann
·
· Score: 2
Except that when Knuth started work on TAOCP, there was no such thing as C yet.
-- To the editors: your English is as bad as your Perl. Please go back to grade school.
I remember poring over vols. 1 and 3 in college and grad school. Sometimes, I could grok the analysis but not the algorithm. I spent many hours untangling Knuth's unique style of presenting algorithms to come up with structured code that I could really understand. These are probably the densest books I've ever read. You can spend hours trying to work through a problem and understanding the five lines of solution in the back of the book.
Those are the only books from that time of my life (over twenty years ago) that I still find a need to consult every so often.
I remember poring over vols. 1 and 3 in college and grad school. Sometimes, I could grok the analysis but not the algorithm. I spent many hours untangling Knuth's unique style of presenting algorithms to come up with structured code that I could really understand. These are probably the densest books I've ever read. You can spend hours trying to work through a problem and understanding the five lines of solution in the back of the book.
They have updated versions of the books apparently using a RISC type machine. I was looking over the volumes and I thought he had released the others guess I was wrong. Exactly how many years has he been working on these things?
I also understand that he was a professor of CS for awhile at some big university has anyone ever taken a class from him?
I'm heading up a technical group evaluating proposals for a new, hopefully complete, set of scientific/mathematical fonts that we plan to make freely available - obviously Knuth's well-reasoned opinions are highly relevant. What he suggests, that somebody should be out there sponsoring font designers, is exactly what we're trying to do! But it sometimes seems hard to persuade publishers to part with their money for something they won't fully control. Even those who make tens of millions in profits seem reluctant to spend more than a few tens of thousands on something that will be freely distributed - despite the fact that it will likely save a lot in licensing and other proprietary-based costs. Is this a strange psychological problem here?
Anyway, we're trying to work with both the Microsoft side of things and the Mozilla/MathML people, plus support TeX of course. As an advertising plug - if you would like to contribute your thoughts or experience (or cash) towards the effort, send me a note at apsmith@aps.org.
And many thanks to/. for highlighting this wonderful interview with Knuth.
Aw... Poor Raph! I have enjoyed the low-traffic / high-quality nature of advogato.org since the end of last year, and I was hoping that nobody would post a link to your site on Slashdot. Well, not only do you get a link to it on Slashdot, but even better than that: you make it to the front page. Ouch!
That being said, I read Knuth's interview when it was published and I liked it very much.
-- -Raphaël
Re:Really nice books and they are probably cool?
by
Ronin75
·
· Score: 2
I am all for information about computers but the trend I am seeing is that before you ever get a slight chance to learn anything cool you end up spending 20+ years studying the most dry uninteresting stuff imaginable.
Meaning, that Computer Science is getting enough theory and history behind it where it resembles a real science (or engineering discipline). In the past, it has been more of: "See, here's how you program in C/C++/Java. And this is what a compiler and OS do. And here's 4 other things. Now go practice coding. Soon you'll be a scientist/engineer."
One of the things that struck me when I was reading "Digital Typography" is the intensive study that you did, especially in the area of math typesetting. When I was writing papers, using math formulas in TeX, I just typed in the commands and out came the math and it looked pretty good to me. It shouldn't have been surprising, but it definitely struck me how much attention you paid to the best mathematics typesetting of past centuries.
I do strongly think that people, when they start throwing computers at something, they think that it's a whole new ballgame, so why should they study the past. I think that is a terrible mistake. But also, I love to read historical source materials, so I couldn't resist. I had a good excuse to study these things, and the more I looked at it, the more interesting it was. But I don't think responsible computer scientists should be unaware of hundreds of years of history that went before us. So that was just a natural thing to approach it that way, for me. I noticed, for example, that in the proprietary software market for publishing, that systems are only today acquiring features that have existed in TeX for a long time, for example whole-paragraph optimization. There's a big to-do about Adobe InDesign, which finally...
They finally implemented the TeX algorithm. Did they implement the TeX algorithm?
Yeah, that's what they said. Did you talk to the people?
I met three of four of them at the ATYPI meeting in Boston in October, but that was after I had heard about it, that some friends had found this in the documentation. Another similar issue is TrueType fonts. TrueType fonts have this property of including instructions, computer programs effectively, in the font, to do hinting.
Well, I never met Elias or whatever. Sampo Kaasila?
I don't know. I know enough about TrueType to know that it's a very intelligent design, that is similar to Metafont except that it strips out everything that's slow. So the way the hinting is done is by program, certainly. Of course, it came out maybe ten years after Metafont, so probably something got through somehow.
There was the F3 font that Folio was making, if I can remember the name, what the people in industry called it. Some of the people that I had worked with on Metafont went into making font designs that were similar to TrueType, but have not been successful. There's a fairly major controversy with TrueType right now, that there a number of patents that are owned now by Apple. It's kind of interesting to me that that is the case even though it's for the most part derivative work of what was in Metafont.
I've been very unhappy with the way patents are handled. But the more I look at it, the more I decide that it's a waste of time. I mean, my life is too short to fight with that, so I've just been staying away. But I know that the ideas for rendering... The main thing is that TrueType uses only quadratic splines, and that Type1 fonts use cubic splines, which allow you to get by with a lot fewer points where you have to specify things.
The quadratic has the great advantage that there's a real cheap way to render them. You can make hardware to draw a quadratic spline lickety-split. It's all Greek mathematics, the conic sections. You can describe a quadratic spline by a quadratic equation (x, y) so that the value of f(x, y) is positive on one side of the curve and negative on the other side. And then you can just follow along pixel by pixel, and when x changes by one and y changes by one, you can see which way to move to draw the curve in the optimal way. And the mathematics is really simple for a quadratic. The corresponding thing for a cubic is six times as complicated, and it has extra very strange effects in it because cubic curves can have cusps in them that are hidden. They can have places where the function will be plus on both sides of the cubic, instead of plus on one side and minus on the other.
The algorithm that's like the quadratic one, but for cubics, turns out that you can be in something that looks like a very innocuous curve, but mathematically you're passing a singular point. That's sort of like a dividing by zero even though it doesn't look like there's any reason to do so. The bottom line is that the quadratic curves that TrueType uses allow extremely fast hardware implementations, in parallel. The question is whether that matters of course, now that CPU's are a zillion times faster.
But for rendering, Metafont was very very slow by comparison, although I'm amazed at how fast it goes now. Still, it has to be an order of magnitude better, and certainly that was a factor in getting TrueType adopted at the time that it was, because machines weren't that fast then. So TrueType was an intelligently chosen subset, but certainly all the ideas I've ever heard of about TrueType were, I believe, well known in the early '60s. Back to this issue of preserving the past. I was reading some papers of Edsger Dijkstra. For a while, he used handwritten manuscripts and then a typewriter to actually distribute the work. And, his notation became much more typewriter-like, that he would use an underlined A or a boldfaced A instead of the traditional \forall symbol.
I've gotten some of his handwritten notes, but I don't remember the typewritten ones. I was looking at the proceedings of the Marktoberdorf summer school in '90, where there were a couple of papers by him and his group. In any case, it occurred to me that TeX has made the traditional mathematical notations so accessible to practicing computer scientists, students, researchers, etc. It's very likely that if there hadn't been something like TeX, in other words if mathematical typesetting had remained strictly in the domain of book publishers, and people who did publishing as their profession, it's likely that the standard notations in computer science would have become much more typewriter-like, kind of ASCII-ized.
Re:Really nice books and they are probably cool?
by
Gary+C+King
·
· Score: 2
Actually, as a current student of "the art," I can say that there is quite a bit more to CS than one may imagine. Analysis of discrete algorithms, combinatorics, and number theory do play quite a large role in CS (we use Cormen, Leiserson, and Rivest's Introduction to Algorithms, which I find to be an excellent book); however, there is also the formal logic side. My formal logic class used Manna and Waldinger's The Deductive Foundations of Computer Programming. Honestly, I didn't care for the class, and hated the book, but if you truly wish to follow "The Art," your best path would probably be to forget learning computer programming and languages for a while. Honestly, learning a new language is a process that should take at most 2-3 weeks (maybe more if you are moving from structured (C/C++/Pascal) to functional (Lisp) paradigms), but the thrust of computer science is hardly the syntactical usage of one particular programming language, nor has it ever been. When I write programs (currently working on an operating system, and have done 3D games, paint programs, and others in the past), my time division is about 35% design, 15% programming, and 50% realizing that I typed >= rather than >, or + rather than -. Design is entirely language and platform-neutral. I create a pseudocode as I go to explain what my algorithm, data structure, or function should do. That is what CS as "the art" teaches - design independent of all bounds. Programming is then the implementation of that design - it will teach you things like platform-specific memory alignment, cache optimizations, etc., and how to take your elegant design and make it scream on the targeted hardware. It's much easier to learn the facts for a hardware platform and implement a canned algorithm than it is to learn the philosophy behind algorithm design. Computer science will teach you design, computer programming will teach implementation, and experience teaches debugging. If you just want to write cool programs, then Knuth's (or Manna's, or CLR's) books are entirely unnecessary, and you would be better served by a reference manual such as the Red Book. However, if you do find the art interesting, then be prepared for a lot of seemingly useless math, esoteric concepts, and trips to the mental ward. I find most of it very interesting, but there is a reason my friends expect me to end up in a rubber room before I graduate.
Can somebody post an example of literate programming? It sounds interesting. Is it anything like Sun's JavaDoc standard? It sounds much more verbose and functional than JavaDoc, though.
Re:Literate Programming
by
jim.robinson
·
· Score: 2
The definitive examples of Literate Programming are two of Knuth's own works: "TeX, The Program" and "Metafont: The Program." Knuth wrote these using his original LP tool, WEB. That means he wrote the code part in Pascal, which in itself amazes me. =) These are available as books, and of course in the original source code format tex.web and (I'm guessing) metafont.web. You can get tex.web off any of the CTAN sites (http://www.ctan.org/). The output is really quite beautiful.
Knuth now uses CWEB, an LP tool for writing programs in C, and C++ (though from everything I've read, it isn't all that hot at C++). You can get a copy of the program, which is itself an example of literate programming, at
ftp://labrea.stanford.edu:/pub/cweb
Look at common.w, ctangle.w, and cweave.w. When you run 'make doc' you get dvi files for the programs, which you can read with xdvi or kdvi.
Many people who post to the LP Usenet group comp.programming.literate seem to use an LP tool called Noweb. It was developed as a language independent tool, and it does not do the pretty-printing WEB or CWEB do. However, it uses LaTeX as it's default typesetting language (which is simpler to use then raw TeX), and it can output indexed HTML pages.
http://www.eecs.harvard.edu/~nr/noweb/
There are examples of Noweb code on that page. Noweb is what I use for my perl and Java programming.
The concept is not quite the same as Javadoc. I actually embed Javadoc comments in my own Java code even though I'm using noweb. The Javadoc is excellent at detailing API for the black box that is a method, or giving an overview on a class, but it isn't as good for detailed explanations. And the best thing about LP is that you can take a section of code, and abstract it into a sentence that you later expand into real code. At times, it is nice to be able to use that instead of a function.
This is an example of some bits and pieces for an apache module I wrote
Now that we're hooked into the \Apache\ module list, we define [[check_uptime]]. This method takes a [[request_rec *]] and returns a status-code declaring whether or not the request is allowed to proceed.
<<define module functions>>= /* * returns HTTP_INTERNAL_SERVER_ERROR if the time elapsed between * this request and the server start-up time is not greater than * warmup_time; otherwise return DECLINED. */ int check_uptime(request_rec * r) { <<declare [[check_uptime]] variables>> <<set [[warmup_time]] from env variable [[MOD_WARMUP_SEC]]>> <<return DECLINED if [[warmup_time]] == 0 or if this is not a/cgi/ request>> <<set up shared memory segment [[shm_id]]>> <<set [[startup_time]] from [[shm_id]] or [[r->request_time]]>>
/* * This code returns a ``Temporarily Unavailable'' * page on HW servers */ return HTTP_INTERNAL_SERVER_ERROR; } } @ [...]
And the other parts are expanded with their own sections. Noweb will auto-index this because it's a C program, and I end up with an indexed program that has a TOC and nicely formatted explanations with each unit of code.
I can take each unit of code and write, in however much detail I want, an explanation detailing the what and why (and even use a proof if it's a complex algorithm). TeX/LaTeX also allow you to put in real book references if you are implementing someone else's idea out of a book or paper.
Many times, just having the ability to use a real sentence is a help. Using "return DECLINED if [[warmup_time]] == 0 or if this is not a/cgi/ request" is much nicer than using "check_early_decline()" or something. It's clear to the reader what is going on. They don't have to jump down to the function or section or whatever just to read the details of what that method does. Each unit of code is very readable by itself, and concentrates on one or two specific ideas.
Jim
Knuth /. Wanted by the FBI
by
cgarrity
·
· Score: 2
Headline: Dr. Knuth and/. are wanted by the FBI for perpetuating a DDoS attack against www.advogato.org. The wicked combination of Knuth's name and/.'s front page all but splattered the funny tasting fruit...
It's got nothing to do with "protection"
by
Tau+Zero
·
· Score: 2
Most of the interesting things (unfortunately) have a shit load of math behind them. That's how they "protect" their profession from the "rabble" and keep it expensive and elite.
Bull. Unlike politics or management (or post-modernism), there is no point to obfuscating the details of science and engineering. If there is mathematics involved, it is because you can't properly describe the field without it. Do you think you can describe the trajectory of an artillery shell without partial differential equations? Even closer to home, can you effectively talk about code without mentioning "structures" that have nothing to do with buildings, "functions" that have nothing to do with the uses of something, and "objects" which have no concrete existence?
The language of calculus, of engineering, and of computer science is obscure to the uninitiated. This is not because it is obfuscated, it is because it is specialized and terse. It has to be specialized and terse to be sufficiently precise and accurate to convey concepts correctly and accurately. If it was to "protect" things, it would be constructed to blur the concepts and keep others (even initiates) from understanding them.
The world isn't a simple place. Some things require specialized knowledge, and the specialists to go with it. Specialists give rise to jargon; it's unavoidable. Stop being so bitter and whining that it's not written on the level of Go Dog Go, and stretch your brain to accomodate it. -- "There's a word for people who live close to nature -
-- Time is Nature's way of keeping everything from happening at once... the bitch.
Re:Really nice books and they are probably cool?
by
slashdot-terminal
·
· Score: 2
These books are not meant for script-kiddie hedge wizards. They were written only for serious practitioners of The Art.
Very technically I have been programming for at least 3 years now. I spent 2 years learning that dieing language called pascal (ever seen any apps w/source that used pascal as a major effort). I have been learning C++ for about a year. Genuinely I wish to practice "The Art" as you call it.
However I cannot easily gain the equivelent of a Phd to read just one book (that is essentially unacceptable).
I will check out the other books that have been recommended to me from the replies and see what they can do.
I just get really ticked to be inferred that I am a script kiddie just because I can't program my version of the linux kernel in lisp or something.
After fighting through the/. Denial of service effect, I finally made it to the end of the interview. Honestly I had a hard time keeping up just with the interview, I haven't read any of his books but if this is any indication, I don't think I will. I know he has a brilliant mind, but the abstractness of the thinking approach is tough to keep up with and made the interview rather dry.
I am about 17 hops away from the actual web server. How close are you exactly? Could you post the article in text form?
Of for Heaven's sake drop the calculus requirements all together and just teach us REAL math when it comes to CS and nothing else... we need far more of it... I've heard many many people say that Knuths books are wonderful and should probably be required reading for CS majors.
Problem is that you do need calculus to understand the book at least some of the stuff I was seeing. Those little funny curly S things and those little ' marks sure don't look like calculus do they?
Most of the interesting things (unfortunately) have a shit load of math behind them. That's how they "protect" their profession from the "rabble" and keep it expensive and elite.
-- Slashdot social engineering at it's finest
Re:Really nice books and they are probably cool?
by
threaded
·
· Score: 2
Oh, but they look so lovely on the book shelf. Also they really, really intimidate project managers. Finally when all else fails; if you throw one at someone, they stay thrown!
Re:Really nice books and they are probably cool?
by
NearlyHeadless
·
· Score: 2
Incidentally what level of math expertice are they assuming? I have taken up through differential calculus and still hardly know a damn thing contained.
The math is mostly explained in volume one. There is also a very good book "Concrete Mathematics" by Graham, and Patashnik, and Knuth that goes into much more detail.
Here's the Amazon link for reference (buy it wherever you want).
The part on hypergeometic series has been mostly obsoleted by later work. See the book A=B (Amazon or FREE download).
Re:When is he going to finish?
by
348
·
· Score: 2
After fighting through the/. Denial of service effect, I finally made it to the end of the interview. Honestly I had a hard time keeping up just with the interview, I haven't read any of his books but if this is any indication, I don't think I will. I know he has a brilliant mind, but the abstractness of the thinking approach is tough to keep up with and made the interview rather dry.
--
More race stuff in one place,
than any one place on the net.
The site is back up now, but slow. There are two problems; one expected, one not. The expected problem is that Advogato only has a 128kbit/s upload (on an ADSL). Thus, it's gotta be really slow to the outside world.
Second, the network has gone down twice. I have no idea why. The NIC is a Tulip something-or-other. In both cases,/etc/rc.d/init.d/network restart brought it back up.
The Advogato server code (mod_virgule) is handling the load fairly nicely. The load average is hovering around 0.65, and memory usage is quite reasonable. This is in spite of the fact that all pages are being rendered dynamically from XML.
It would be interesting to try to host the site on a really high bandwidth line.
Advogato is on the slow end of a DSL. I was hoping that when it got slashdotted, somebody would put up a mirror. Oh well. I'll see what I can do to nurse the machine through the day.
--
LILO boot: linux init=/usr/bin/emacs
Re:Really nice books and they are probably cool?
by
Chris+Siegler
·
· Score: 3
Incidentally what level of math expertice are they assuming? I have taken up through differential calculus and still hardly know a damn thing contained.
The problem is that Calculus doesn't help you in analysing algorithms, which is what CS is all about. So what to do? The book Concrete Math is an expansion of the first part of volume one, and is a much much easier read. After reading it, you'll be set to tackle all the math in Knuth.
Of course it's not a small book, and it's hard to get motivated to learn something when you don't know WHY you need it. So I'd suggest just skimming the math in Knuth and work on MIX and the programming stuff, then go back later.
In other words, eat your cake and ice cream first, and then tackle the broccoli.
Re:Really nice books and they are probably cool?
by
yellowstone
·
· Score: 3
I took the time and looked at a couple of his books. However I noticed really fast that in fact I could hardly understand a fraction of what was therin contained.
You definitely need to approach these books with the right attitude. They are not light reading by any stretch of the imagination. Each section requires careful thought for complete understanding.
You also have to get used to Knuth's writing style. I was reading a section on floating point representation, and came across a sentence that read
The radix can be interpreted as being on the extreme left (liberally) or on the extreme right (conservatively).
I don't know how long I stared at that sentence trying to figure out what he was talking about. Finially, I realized he was making a joke! (For those who don't get it, in the US, political liberals are described as being "on the left" and conservatives "on the right". Why, I have no idea...)
-y
-- 150 Opening BINARY mode data connection for slashdot.sig (129323052 bytes).
Really nice books and they are probably cool?
by
slashdot-terminal
·
· Score: 3
When is The Art of Computer Programming going to be finished?
I took the time and looked at a couple of his books. However I noticed really fast that in fact I could hardly understand a fraction of what was therin contained.
Incidentally what level of math expertice are they assuming? I have taken up through differential calculus and still hardly know a damn thing contained.
I am all for information about computers but the trend I am seeing is that before you ever get a slight chance to learn anything cool you end up spending 20+ years studying the most dry uninteresting stuff imaginable.
-- Slashdot social engineering at it's finest
mirrored at last... (Re:Advogato slashdotted)
by
mko
·
· Score: 3
Since nobody has posted the whole interview yet, I've put the page up here.
They are hard to read, read them twice, memorize where different things are. Learn enough mix to read the code and then rest assured that you have the tools to solve 99+% of the problems you'll ever encounter in the programming world. You have to have a love for the bits and the bytes to really and truely enjoy these masterful work's of art.
The big thing is known how to read those books, knowing where to look in them, and then keeping them close by. As with all things in computers, it's more important to know where to look to find the solution than to know it. These books have most of the solutions you'll ever need and if you can hang with them then the rest of the solutions will be trivial in comparison.
This would doubtless be crucial for Volumes 4-6 of TAOCP, and the availability of real hardware for this would strike fear into the hearts of graduate students in computer science the whole world over...
If you're not part of the solution, you're part of the precipitate.
Advogato did a quick move to Berkeley's xcf, thanks to the help of Manish Singh. It ought to be able to handle the load the next time it gets slashdotted. Now we just have to come up with some more cool content :)
LILO boot: linux init=/usr/bin/emacs
You hardly need to be a calculus expert to understand what an integral sign means.
Most of the interesting things (unfortunately) have a shit load of math behind them.
I did calc in high school. It hardly constitutes a "shitload" of math. You're right that a lot of things need basic math. It's got nothing to do with "elitism" or "keeping the rabble out", or "keeping it expensive" -- I don't know about you but my high school education was free. It's got to do with the fact that the moment you start doing anything quantitative or analytical, you inevitably need some math. In other words, real scientists need to know some math. The fact that you can throw together some code does not make you a computer scientist.
Interestingly, this "budding theory" predates any computer language. Before a language may be conceived, we have to understand things like Turing Completeness, "regular languages", context/context free, lexicons, protocol, computational complexity, space/time constraints, discrete computation theory, etc.
Unlike engineering, computer science was _born_ in theory.
In the past it has not been "See, here's how you program in C/C++/Java. And this is what a compiler and OS do. And here's 4 other things. Now go practice coding. Soon you'll be a scientist/engineer." That is, unfortunately, our current trend.
In the past we have seen great teachers such as Turing, Dykstra (sp), and Knuth.
If anything, we should _return_ to the theoretical roots of computer science to provide understanding for our current practice.
Except that when Knuth started work on TAOCP, there was no such thing as C yet.
To the editors: your English is as bad as your Perl. Please go back to grade school.
Those are the only books from that time of my life (over twenty years ago) that I still find a need to consult every so often.
I'm heading up a technical group evaluating proposals for a new, hopefully complete, set of scientific/mathematical fonts that we plan to make freely available - obviously Knuth's well-reasoned opinions are highly relevant. What he suggests, that somebody should be out there sponsoring font designers, is exactly what we're trying to do! But it sometimes seems hard to persuade publishers to part with their money for something they won't fully control. Even those who make tens of millions in profits seem reluctant to spend more than a few tens of thousands on something that will be freely distributed - despite the fact that it will likely save a lot in licensing and other proprietary-based costs. Is this a strange psychological problem here?
/. for highlighting this wonderful interview with Knuth.
Anyway, we're trying to work with both the Microsoft side of things and the Mozilla/MathML people, plus support TeX of course. As an advertising plug - if you would like to contribute your thoughts or experience (or cash) towards the effort, send me a note at apsmith@aps.org.
And many thanks to
Energy: time to change the picture.
Aw... Poor Raph! I have enjoyed the low-traffic / high-quality nature of advogato.org since the end of last year, and I was hoping that nobody would post a link to your site on Slashdot. Well, not only do you get a link to it on Slashdot, but even better than that: you make it to the front page. Ouch!
That being said, I read Knuth's interview when it was published and I liked it very much.
-Raphaël
I am all for information about computers but the trend I am seeing is that before you ever get a slight chance to learn anything cool you end up spending 20+ years studying the most dry uninteresting stuff imaginable.
:)
Meaning, that Computer Science is getting enough theory and history behind it where it resembles a real science (or engineering discipline). In the past, it has been more of: "See, here's how you program in C/C++/Java. And this is what a compiler and OS do. And here's 4 other things. Now go practice coding. Soon you'll be a scientist/engineer."
Besides that, it's all cool.
One of the things that struck me when I was reading "Digital Typography" is the intensive study that you did, especially in the area of math typesetting. When I was writing papers, using math formulas in TeX, I just typed in the commands and out came the math and it looked pretty good to me. It shouldn't have been surprising, but it definitely struck me how much attention you paid to the best mathematics typesetting of past centuries.
I do strongly think that people, when they start throwing computers at something, they think that it's a whole new ballgame, so why should they study the past. I think that is a terrible mistake. But also, I love to read historical source materials, so I couldn't resist. I had a good excuse to study these things, and the more I looked at it, the more interesting it was. But I don't think responsible computer scientists should be unaware of hundreds of years of history that went before us. So that was just a natural thing to approach it that way, for me.
I noticed, for example, that in the proprietary software market for publishing, that systems are only today acquiring features that have existed in TeX for a long time, for example whole-paragraph optimization. There's a big to-do about Adobe InDesign, which finally...
They finally implemented the TeX algorithm.
Did they implement the TeX algorithm?
Yeah, that's what they said.
Did you talk to the people?
I met three of four of them at the ATYPI meeting in Boston in October, but that was after I had heard about it, that some friends had found this in the documentation.
Another similar issue is TrueType fonts. TrueType fonts have this property of including instructions, computer programs effectively, in the font, to do hinting.
Well, I never met Elias or whatever.
Sampo Kaasila?
I don't know. I know enough about TrueType to know that it's a very intelligent design, that is similar to Metafont except that it strips out everything that's slow. So the way the hinting is done is by program, certainly. Of course, it came out maybe ten years after Metafont, so probably something got through somehow.
There was the F3 font that Folio was making, if I can remember the name, what the people in industry called it. Some of the people that I had worked with on Metafont went into making font designs that were similar to TrueType, but have not been successful.
There's a fairly major controversy with TrueType right now, that there a number of patents that are owned now by Apple. It's kind of interesting to me that that is the case even though it's for the most part derivative work of what was in Metafont.
I've been very unhappy with the way patents are handled. But the more I look at it, the more I decide that it's a waste of time. I mean, my life is too short to fight with that, so I've just been staying away. But I know that the ideas for rendering... The main thing is that TrueType uses only quadratic splines, and that Type1 fonts use cubic splines, which allow you to get by with a lot fewer points where you have to specify things.
The quadratic has the great advantage that there's a real cheap way to render them. You can make hardware to draw a quadratic spline lickety-split. It's all Greek mathematics, the conic sections. You can describe a quadratic spline by a quadratic equation (x, y) so that the value of f(x, y) is positive on one side of the curve and negative on the other side. And then you can just follow along pixel by pixel, and when x changes by one and y changes by one, you can see which way to move to draw the curve in the optimal way. And the mathematics is really simple for a quadratic. The corresponding thing for a cubic is six times as complicated, and it has extra very strange effects in it because cubic curves can have cusps in them that are hidden. They can have places where the function will be plus on both sides of the cubic, instead of plus on one side and minus on the other.
The algorithm that's like the quadratic one, but for cubics, turns out that you can be in something that looks like a very innocuous curve, but mathematically you're passing a singular point. That's sort of like a dividing by zero even though it doesn't look like there's any reason to do so. The bottom line is that the quadratic curves that TrueType uses allow extremely fast hardware implementations, in parallel.
The question is whether that matters of course, now that CPU's are a zillion times faster.
But for rendering, Metafont was very very slow by comparison, although I'm amazed at how fast it goes now. Still, it has to be an order of magnitude better, and certainly that was a factor in getting TrueType adopted at the time that it was, because machines weren't that fast then. So TrueType was an intelligently chosen subset, but certainly all the ideas I've ever heard of about TrueType were, I believe, well known in the early '60s.
Back to this issue of preserving the past. I was reading some papers of Edsger Dijkstra. For a while, he used handwritten manuscripts and then a typewriter to actually distribute the work. And, his notation became much more typewriter-like, that he would use an underlined A or a boldfaced A instead of the traditional \forall symbol.
I've gotten some of his handwritten notes, but I don't remember the typewritten ones.
I was looking at the proceedings of the Marktoberdorf summer school in '90, where there were a couple of papers by him and his group. In any case, it occurred to me that TeX has made the traditional mathematical notations so accessible to practicing computer scientists, students, researchers, etc. It's very likely that if there hadn't been something like TeX, in other words if mathematical typesetting had remained strictly in the domain of book publishers, and people who did publishing as their profession, it's likely that the standard notations in computer science would have become much more typewriter-like, kind of ASCII-ized.
That's interesting.
Preferential Voting: easy as 1-2-3
Actually, as a current student of "the art," I can say that there is quite a bit more to CS than one may imagine. Analysis of discrete algorithms, combinatorics, and number theory do play quite a large role in CS (we use Cormen, Leiserson, and Rivest's Introduction to Algorithms, which I find to be an excellent book); however, there is also the formal logic side. My formal logic class used Manna and Waldinger's The Deductive Foundations of Computer Programming. Honestly, I didn't care for the class, and hated the book, but if you truly wish to follow "The Art," your best path would probably be to forget learning computer programming and languages for a while. Honestly, learning a new language is a process that should take at most 2-3 weeks (maybe more if you are moving from structured (C/C++/Pascal) to functional (Lisp) paradigms), but the thrust of computer science is hardly the syntactical usage of one particular programming language, nor has it ever been. When I write programs (currently working on an operating system, and have done 3D games, paint programs, and others in the past), my time division is about 35% design, 15% programming, and 50% realizing that I typed >= rather than >, or + rather than -. Design is entirely language and platform-neutral. I create a pseudocode as I go to explain what my algorithm, data structure, or function should do. That is what CS as "the art" teaches - design independent of all bounds. Programming is then the implementation of that design - it will teach you things like platform-specific memory alignment, cache optimizations, etc., and how to take your elegant design and make it scream on the targeted hardware. It's much easier to learn the facts for a hardware platform and implement a canned algorithm than it is to learn the philosophy behind algorithm design. Computer science will teach you design, computer programming will teach implementation, and experience teaches debugging. If you just want to write cool programs, then Knuth's (or Manna's, or CLR's) books are entirely unnecessary, and you would be better served by a reference manual such as the Red Book. However, if you do find the art interesting, then be prepared for a lot of seemingly useless math, esoteric concepts, and trips to the mental ward. I find most of it very interesting, but there is a reason my friends expect me to end up in a rubber room before I graduate.
Can somebody post an example of literate programming? It sounds interesting. Is it anything like Sun's JavaDoc standard? It sounds much more verbose and functional than JavaDoc, though.
Jazilla.org - the Java Mozilla
It's 10 PM. Do you know if you're un-American?
Headline: Dr. Knuth and /. are wanted by the FBI for perpetuating a DDoS attack against www.advogato.org. The wicked combination of Knuth's name and /.'s front page all but splattered the funny tasting fruit ...
The language of calculus, of engineering, and of computer science is obscure to the uninitiated. This is not because it is obfuscated, it is because it is specialized and terse. It has to be specialized and terse to be sufficiently precise and accurate to convey concepts correctly and accurately. If it was to "protect" things, it would be constructed to blur the concepts and keep others (even initiates) from understanding them.
The world isn't a simple place. Some things require specialized knowledge, and the specialists to go with it. Specialists give rise to jargon; it's unavoidable. Stop being so bitter and whining that it's not written on the level of Go Dog Go, and stretch your brain to accomodate it.
--
"There's a word for people who live close to nature -
Time is Nature's way of keeping everything from happening at once... the bitch.
These books are not meant for script-kiddie hedge wizards. They were written only for serious practitioners of The Art.
Very technically I have been programming for at least 3 years now. I spent 2 years learning that dieing language called pascal (ever seen any apps w/source that used pascal as a major effort). I have been learning C++ for about a year. Genuinely I wish to practice "The Art" as you call it.
However I cannot easily gain the equivelent of a Phd to read just one book (that is essentially unacceptable).
I will check out the other books that have been recommended to me from the replies and see what they can do.
I just get really ticked to be inferred that I am a script kiddie just because I can't program my version of the linux kernel in lisp or something.
Slashdot social engineering at it's finest
After fighting through the /. Denial of service effect, I finally made it to the end of the interview. Honestly I had a hard time keeping up just with the interview, I haven't read any of his books but if this is any indication, I don't think I
will. I know he has a brilliant mind, but the abstractness of the thinking approach is tough to keep up with and made the interview rather dry.
I am about 17 hops away from the actual web server. How close are you exactly? Could you post the article in text form?
Slashdot social engineering at it's finest
Of for Heaven's sake drop the calculus requirements all together and just teach us REAL math when it comes to CS and nothing else... we need far more of it... I've heard many
many people say that Knuths books are wonderful and should probably be required reading for CS majors.
Problem is that you do need calculus to understand the book at least some of the stuff I was seeing. Those little funny curly S things and those little ' marks sure don't look like calculus do they?
Most of the interesting things (unfortunately) have a shit load of math behind them. That's how they "protect" their profession from the "rabble" and keep it expensive and elite.
Slashdot social engineering at it's finest
Oh, but they look so lovely on the book shelf. Also they really, really intimidate project managers. Finally when all else fails; if you throw one at someone, they stay thrown!
threadeds blog
Here's the Amazon link for reference (buy it wherever you want).
The part on hypergeometic series has been mostly obsoleted by later work. See the book A=B (Amazon or FREE download).
After fighting through the /. Denial of service effect, I finally made it to the end of the interview. Honestly I had a hard time keeping up just with the interview, I haven't read any of his books but if this is any indication, I don't think I will. I know he has a brilliant mind, but the abstractness of the thinking approach is tough to keep up with and made the interview rather dry.
More race stuff in one place,
than any one place on the net.
The site is back up now, but slow. There are two problems; one expected, one not. The expected problem is that Advogato only has a 128kbit/s upload (on an ADSL). Thus, it's gotta be really slow to the outside world.
/etc/rc.d/init.d/network restart brought it back up.
Second, the network has gone down twice. I have no idea why. The NIC is a Tulip something-or-other. In both cases,
The Advogato server code (mod_virgule) is handling the load fairly nicely. The load average is hovering around 0.65, and memory usage is quite reasonable. This is in spite of the fact that all pages are being rendered dynamically from XML.
It would be interesting to try to host the site on a really high bandwidth line.
LILO boot: linux init=/usr/bin/emacs
Advogato is on the slow end of a DSL. I was hoping that when it got slashdotted, somebody would put up a mirror. Oh well. I'll see what I can do to nurse the machine through the day.
LILO boot: linux init=/usr/bin/emacs
Of course it's not a small book, and it's hard to get motivated to learn something when you don't know WHY you need it. So I'd suggest just skimming the math in Knuth and work on MIX and the programming stuff, then go back later.
In other words, eat your cake and ice cream first, and then tackle the broccoli.
You definitely need to approach these books with the right attitude. They are not light reading by any stretch of the imagination. Each section requires careful thought for complete understanding.
You also have to get used to Knuth's writing style. I was reading a section on floating point representation, and came across a sentence that read
I don't know how long I stared at that sentence trying to figure out what he was talking about. Finially, I realized he was making a joke! (For those who don't get it, in the US, political liberals are described as being "on the left" and conservatives "on the right". Why, I have no idea...)-y
150 Opening BINARY mode data connection for slashdot.sig (129323052 bytes).
When is The Art of Computer Programming going to be finished?
I took the time and looked at a couple of his books. However I noticed really fast that in fact I could hardly understand a fraction of what was therin contained.
Incidentally what level of math expertice are they assuming? I have taken up through differential calculus and still hardly know a damn thing contained.
I am all for information about computers but the trend I am seeing is that before you ever get a slight chance to learn anything cool you end up spending 20+ years studying the most dry uninteresting stuff imaginable.
Slashdot social engineering at it's finest
Since nobody has posted the whole interview yet, I've put the page up here.
Enjoy.