Knuth: All Questions Answered
sunhou writes: "The AMS published a lecture by Donald Knuth called All Questions Answered (pdf), where Knuth simply responded to questions from the audience. Topics ranged from errors in software ('I think Microsoft should say, "You'll get a check from Bill Gates every time you find an error"') to how he gets distracted by fonts on restaurant menus, to software patents. There were some really good questions (and responses)."
a) because it's slashdotted
b) because the link is a pdf and I don't feel like switching over to my Microsoft system to read it. Since Acrobat is closed source, and the only free PDF readers are shit, I have no way to easily read his document.
Now, I've read the first three volumes of TAOCP, and I have all the respect in the world for Knuth. He's a brilliant guy.
However, I think he has an counter-productive obsession with typesetting. TeX is great for formulas, and PDF is great for sending stuff to a print shop... but most of us just need to communicate plain english characters (whether prose or code) efficiently an effectively, in a manner that work on all platforms. Plain ASCII works best for me. HTML is pushing it.
There is something just plain wrong about seeing "All Questions Answered (pdf)".
Someone put the text of the actual interview in comment #3175581 but it got modded down to 0-redundant. It shouldn't have been modded that way since it wasn't redundant when it was initially posted.
You wanna SUCK MY ASS?
You can! I'll let you!!
As my father lik@(munch munch)...
The old joke, "if builders built buildings the way programmers wrote programs ..." is still frighteningly true; other engineering professions do not often have a commonplace equivalent of a blue-screen or core-dump.
;)
.NET or the common language mangler.
There are several problems with this, and I tend to get ticked when I see this quote tossed around.
Firstly, software is only as reliable as the language it is written in. That may sound trite, but the reality is that your language (at least in computer science) limits your ability. This is why Perl and Python are taking off, why Lisp is returning, why everywhere you look we're fleeing from C and C++. It is much, much, much harder to write secure code in C than Python, Perl, Ruby, Java, or even C++ given the standard template library. x = raw_input() can't overflow, blow the stack, overwrite important memory locations or in other ways fuck my program. That kind of security comes at an incredible cost in C---but you get it for free in every other language. But we aren't brought up to value security like we value efficiency in school. 2% of us move on to assembly to optimize their algorithms, 80% stay with C because it's the first language they know, and the rest hurry up and use Java or Perl. It's a depressing fact that lazy people like myself, who program in Python, Eiffel, or C++ because we are simple-minded and dislike complexity, and who are quite often the only people who understand *conceptually* the ideas in CS, are also the ones who are ignored, who persist in our laziness despite the attitudes of those around us, and who have such difficulty selling our ideas to other people! It's embarassing that I can do in 50 lines of Python what it would take someone 500 in C to do, even if they had the appropriate libraries! Now ask them to make it secure, if you want a great laugh! They cannot... But when have you ever seen anything written in a language *other* than C segfault? (matlab doesn't count) Half of Lisp's good reputation, when it had one, was because it was cured of that. Python, Java, Eiffel, and C++ all have exceptions to help the programmer cope with EXCEPTIONal situations, why doesn't C sympathize? Instead we get "errno" and hundreds or thousands of EXXXXXX error code constants. Fuck that. The new generation wants a real solution; a solution that doesn't begin with C[++|#|objective]
Secondly, quality of code doesn't matter to the users anyway. If it takes 25% more C code to make something work in the last funky 2%, well it's got to be out by yesterday so forget it. C++ would be great if we could have more flexibility with the libraries; the Be people spent serious time and effort in making their system libraries expandable. (If they hadn't, we'd wind up with the MFC instead of the highly-praised BeOS model.) When Windows crashes, no one is surprised. When IIS drops a few hundred users, it's written off. When MS-SQL mangles a couple rows, it's rare. When I can't connect my modem to my ISP, the phone lines are too old. These are all excuses, but in reality, you can fuck people 2% of the time and it won't be a problem, especially on this scale. Everyone knows that Microsoft's software is shit, but can we prove it? Our bad experiences are usually buried in the last fractions of a percentage point that they can legally ignore. If a building killed 2% of the people in it, it would be a problem. Nobody dies if eBay loses one of my bids. How do we even diagnose these problems when they are that rare? It's not often that every test reality will throw at your program is available to you to know while you are designing or implementing your program. Even if they were, the people programming in inferior languages like C don't always have the luxury of doing extensive tests. There is "make" for building, CVS for versioning; where is the analog for testing? Saying quality control in programming is lax may not be an understatement, but what if we were in the towel profession? Would it matter if 2 out of 100 towels just were no good? Don't take yourself too seriously---where it is a life-or-death situation, they aren't using the same languages. They're using Ada!
Third, the language you would want for this purpose has already come and gone. Eiffel had every feature it could to support the ideology of software engineering. It was a terrible flop in spite of the fact it was, and continues to be a great idea. Merely knowing these features exist in any language makes me unhappy that they don't exist in C++ or Python, or any other language people can actually use. ISE somehow remains profitable without any non-commercial interest. I have to wonder where they are used, because my only experience with it that wasn't purely motivated by my own interest was that Object Oriented Software Engineering was recommended to me by many people as a great book to learn about object-orientation from. I would be tempted to say government work if that weren't Ada's niche already. Perhaps it is education, but it certainly isn't popular around here. SmallEiffel hasn't been updated in how long? Instead Eiffel leaves the earth to be one with BeOS on the great hard drive of the sky. Or something.
To summarize: 1) it's C's fault, we all know it, and we're leaving it in the dust as of now, 2) you're comparing apples and oranges, and 3) learn Eiffel.
Remember, it's only as bad as it is today because people refuse to change. It doesn't have to be this way, and in fact, I believe it is changing for the better. Not everyone is drenched in their own anticipation of
--
Daniel