Why I run away from Knuth
lispmachine.wordpress.com
lispmachine.wordpress.com
The following excerpt sums it up:
"...I am an average man, with an average IQ. I could have have failed the Mathematics exam of 10th class in 1996. I was very poor at Mathematics and I was expecting only 22 or 34 marks out of 100 and anything less than 33 means you have failed the exam but I purchased 2 very heavy-books of Mathematics, which our teacher called best references books for 10th class and studied them at the cost of my health for 2 months and then I got 83 marks but those health problems, the pain in the neck are still with me after 12 years ) . Since I was weak in Mathematics may be thats why I don’t like Knuth’s style ..."
Though they were programming books but they were not
written to show you the reality of what happens when you
use scp to copy file over a network. *How that scp program
looks like and Why it is so strange at 1st.* Those books
will never tell you ( in code ) that their could be
errors, their could be failures, their could be some
problem in making a connection, that, for obvious
reasons, you have to use ” -ansi -pedantic -Wall -Wextra”
while working with GCC but all we learned were TURBO C
and a book on DOS 6.2 ( this shitty-book had cost me my
precious 600 rupees )I put Knuth in the same category. He
just explains, explains and explains the algorithms, with
100% Mathematics, in the most detailed manner ever done
and leaves the applications of those algorithms up to
you. They are not designed for people like me.
He would rather read a book that tells him about the possible errors that the scp program might print out instead of a Knuth book. Got it. Back to my regularly scheduled programming.There could even be wrong usage of "their" 3 times in a row in an error message!
I think the problem with reviews like this one that say "I wish this guy had written a different book" is that they refuse to take the work and the author on their own terms. TAoCP is obviously on a mission to rigorously define algorithms at the heart of computer science, compare them, and make provable statements about their complexity. On those grounds, none of the pedagogical texts the author prefers holds a candle to the blinding glory of TAoCP. (Of course, they weren't really trying to.)
It's the same with all kinds of art. Come to it full of expectations that the art doesn't fulfill, and you won't make the connection... but that's not the art's fault.
Why does this lessen the value of books like Knuth and CLRS? And what does it say about the boring projects the author works on?
The truth is, in a business app, wiring up the interface to a database is usually not the hard part. The hard part is dealing with political bullshit, dealing with people, making sure the interface is right, gathering domain knowledge and understanding users' needs, deciding what features matter and which don't given your budget and time constraints, and other things that have little to do with J2EE, .Net, and other ephemeral daycoder staples: these are high-level issues anti-intellectual philistines like the author of this post flatly refuse to acknowledge the significance of.
It is possible to artificially fabricate situations in a business where invoking deep, powerful ideas from computer science is necessary. But often there is a much simpler solution that necessitates much simpler techniques: this is the right thing to go for, even though solving the wrong problem may have an appealing, elegant solution that proves that you're a really smart person. Knowing when to be a fancypants computer science whiz and when to make a 5 line call to an existing library is really where maturity and mastery come in to software development, IMO.
Knuth is not for everybody. No question about that. But for people who are interested in the area he covers, there is no one better.
I feel that the best way to approach actual algorithm implementation is to see what Knuth has to say about it in terms of virtues of some algorithms vs others and then to study the environment it will be running on to tweak the general algorithm.
http://www.softpanorama.org/Lang/c.shtml
Donald: I mentioned earlier that MMIX provides a test bed for many varieties of cache. And it’s a software-implemented machine, so we can perform experiments that will be repeatable even a hundred years from now. Certainly the next editions of Volumes 1-3 will discuss the behavior of various basic algorithms with respect to different cache parameters.
In Volume 4 so far, I count about a dozen references to cache memory and cache-friendly approaches (not to mention a "memo cache," which is a different but related idea in software).
I remember reading Volume 1 where he notes how he is not happy with current architectures, which is why he introduced MIX. I guess I wrote my earlier comment from how I look at Knuth, perhaps not how it was intended. Haven't seen Volume 4 yet though.
I don't know Knuth's mind exactly, but it seems to me he decided to set up shop at the core, at theory and algorithms, to set the science on a solid foundation going forward. So it's fundamental algorithms, arithmetic, searching, sorting, and lately graphs and combinations.
There are enough people writing in their specialties, and there will always be incentives to go baroque and novel. That's how we get stupid stuff like my thesis, or 8% faster neural network training, or the paper on implementing a Turing machine in C++ templates.
http://ubiety.uwaterloo.ca/~tveldhui/papers/2003/turing.pdf
It takes a special kind of person to forge ahead slowly, for decades, on the field-defining work that he does. The other kinds of scientists (and software engineers, for that matter) are all too easy to find.
(if pointy-haired-boss
(progn 'do-politics)
(format t "write code & enjoy ;-)"))
You don't need the progn. :)Anyway, I was thinking he meant funcall instead of progn, but in that case he should just have written (do-politics).
Finally, shouldn't that be pointy-haired-boss-p? ;)
Heh. I almost thought so too, but the variable could be referencing the boss himself rather than information about his existence. Somehow I think it's more Lispy that way.
And (progn 'do-politics) does look like a mistake for (do-politics) but then again I kind of like the fact that the form evaluates to a useless symbol in the pointy-haired case.
Really, there are all kinds of things one could say about this little expression. One could write an entire critique. :)
(if (pointy-haired-p boss) ...
Ah, coding by committee. How pointy-haired of us :) (if (and boss (pointy-haired-p boss)) ...
coding by committee. How pointy-haired of usI object. This is sarcastic pair programming!
By today's standards, it does have a few fairly academic examples (if I wanted to convert fahrenheit to celsius, I would use google), but otherwise it has excellent examples of functional code written in a concise style to clearly demonstrate how to use the language to get things done.
The author mainly seems to be implying that K&R2 is "totally not related to what [the author is] doing right now as a programmer in some company."