Coverity has a program that reads other programs looking for errors. The company started as a research project from Stanford (how unusual!) and the Communications article is really about what they found in commercial world. One thing they found was a lot of crappy programmers.
Upon seeing an error report saying the following loop body was dead code
“No, that’s a false positive; a loop executes at least once.”
Another thing they found is that “it’s more of a guideline than a rule” is a common theory among compiler writers – something that is an interesting problem when your program has to parse code to understand it. Microsoft’s “precompiled” header files feature is a great example of a non-value add. Here’s an amazing observation:
On the other hand, C# and Java have been easier, since we analyze the bytecode they compile to rather than their source.
What that says about the state of the art in abstract specification of programming languages is important. Perhaps byte code is a better target for all sorts of other program transformations including efforts to extract parallelism.
The article also gives a flavor of what its like to fall out of the university programming environment and wander across the strange lands of commercial practice where fossils still walk, unsolvable problems are routinely solved, and solved problems are impossible.
I liked the advice to make presentations to as large a group as possible in the interests of attracting at least one smart person who will get it. There’s nothing more despiriting than a presentation to a technical group that is in that sort of sullen defensive mood in which lousy practice and ignorance is a fortress of job protection.