Frankly, I wouldn't want to argue with Knuth on very many things. While I don't get literate programming, I suspect he understands something that the rest of us don't (yet).
Well, he is suspicious because he assumes people using XP are programmers. That's not correct.
The idea behind XP is to get somewhat usable code out of non-programmers. Why companies don't just fire people that can't program, I'll never know... but XP does seem to work. Instead of getting unmaintainable, untested, half-working garbage, you get unmaintainable, tested, two-thirds working garbage.
Oh yeah, now I remember why these programmers exist. Companies seem to value quantity over quality of programmers. That way people can be sick or go on vacation and you'll still get your two-thirds-working code. BRILLANT!
I'm not sure I buy this logic either. Programming is right in the name, and some proponents of XP are good programmers. And, I really don't see how horrible programmers would be made better by poor techniques (which I believe some aspects of XP are).
XP makes programming less like a creative art and more like checking off items on a to do list. You can't teach art, but you can sort of get people to do stuff on a list. Hence XP.
I'm really interested in why people don't get LP because it was love at first sight for me, in theory at least. It'll help bridge the gap between writing journal papers that contain the theory and the code that implements/demonstrates the theory.
The other day I got some code (calculating and displaying the Cramer-Rao bounds on radar parameter estimators) written by one of my professors who gives stunning lectures and writes excellent papers. The coding style was straight from the 80s... think Fortran. I think that's because nobody ever had to read his code, so although he got great at lecturing and writing, he never got to practice coding. And I think LP will help avoid that and encourage people to combine documentation, code, and theory.
I think a very different set of constraints exist for web programmers and indeed for my own php/mysql-style apps, I can't imagine doing LP.
Yes, by some definition of "web programmer". (I work on Virtualmin, Webmin, and Usermin. So, a large percentage of my work is back end systems management with a web front end.)
I've merely never committed the time to doing a project with LP. Which is why I included a (yet) in my comment. I'm not ruling out the possibility of some day falling in love with LP. It just hasn't happened so far. I think it's one of those things that requires quite a lot of up-front commitment to make use of, and so many projects start off as tiny "throwaway" projects and eventually grow large (or don't).
I'm not sure why he thinks literate programming source code is hard to parse. I would just implement it like this; normal text is normal text, program text is indented two spaces. Example:
This is a super-fun algorithm. It is a function of super-fun-arguments, a list.
He seems to have a habit of always telling us how long it took him to do something, as though the amount of time it took makes it more or less impressive...
I remember people doing this when I was 13 and hung out in graphic design forums - "This took me about 35 minutes...what do you think?" - it wasn't cool then, either.
'If the comments and code disagree, then they are both probably wrong!' - I think that's from Code Complete by Steve McConnell, I'll check tomorrow.
BTW, does anyone here rate Code Complete? I heard great things about it, but by the time I got round to reading it I found most of it was either out-of-date, blindingly obvious, or stuff I'd already been taught or worked out for myself.
If more than a few people with print design experience would say that the leading in his PDF is good, I'll eat my hat. Admittedly, the document is good; the leading is poor.
Does anyone know how hard it is to write a code highlighting mode for vim where it uses normally uses latex highlighting, and then switches to C or Python or whatever programming highlighting inside special delimiters, like "\code{}"? Then I can just write a perl script to mimic tangle and weave, creating code-only and latex-only text files.
17 comments
[ 7.9 ms ] story [ 161 ms ] thread- tex / latex rocks
- lp not so much
And, I share his suspicion of most XP techniques.
Well, he is suspicious because he assumes people using XP are programmers. That's not correct.
The idea behind XP is to get somewhat usable code out of non-programmers. Why companies don't just fire people that can't program, I'll never know... but XP does seem to work. Instead of getting unmaintainable, untested, half-working garbage, you get unmaintainable, tested, two-thirds working garbage.
Oh yeah, now I remember why these programmers exist. Companies seem to value quantity over quality of programmers. That way people can be sick or go on vacation and you'll still get your two-thirds-working code. BRILLANT!
I'm really interested in why people don't get LP because it was love at first sight for me, in theory at least. It'll help bridge the gap between writing journal papers that contain the theory and the code that implements/demonstrates the theory.
The other day I got some code (calculating and displaying the Cramer-Rao bounds on radar parameter estimators) written by one of my professors who gives stunning lectures and writes excellent papers. The coding style was straight from the 80s... think Fortran. I think that's because nobody ever had to read his code, so although he got great at lecturing and writing, he never got to practice coding. And I think LP will help avoid that and encourage people to combine documentation, code, and theory.
I think a very different set of constraints exist for web programmers and indeed for my own php/mysql-style apps, I can't imagine doing LP.
Yes, by some definition of "web programmer". (I work on Virtualmin, Webmin, and Usermin. So, a large percentage of my work is back end systems management with a web front end.)
I've merely never committed the time to doing a project with LP. Which is why I included a (yet) in my comment. I'm not ruling out the possibility of some day falling in love with LP. It just hasn't happened so far. I think it's one of those things that requires quite a lot of up-front commitment to make use of, and so many projects start off as tiny "throwaway" projects and eventually grow large (or don't).
This is a super-fun algorithm. It is a function of super-fun-arguments, a list.
We start by parsing the super-fun-arguments into lists of foobars. See page 1234 for the parse-into-foobars utility function. OK, I'm bored now. But this is only tedious because I'm writing about irrelevant details (we all know what defun does, after all).I remember people doing this when I was 13 and hung out in graphic design forums - "This took me about 35 minutes...what do you think?" - it wasn't cool then, either.
Dave Storer
Cedar Rapids, Iowa
2) Find link to the document; click link.
3) Error detected -- surely this loathesome-looking PDF isn't the fucking awesome document in question!
4) Hit back, re-parse intro looking for link to real document.