On 12/31/12 10:30 AM, Paul Homer wrote:
Now I know that sounds weird, but not if one accepts that a clunky, ugly language like COBOL was actually very successful. Lots of stuff was written, much of it still running. Its own excessive verbosity helps in making it fixable by a broader group of people.


For the waterfall approach used by designers behind COBOL implementations, the philsophy of "measure twice; cut once" is consistent with a formal approach. But if there are so many bugs that last for decades, and bugs that can just be fixed by superficial analysis as facilitated by COBOL's verbosity, then there is something seriously wrong with the design and/or verification in the process.

I think design without automated code generation and proof-checking support is passing the buck. Ideally, the principles underlying a program should be in that program, and not just as comments. If there are contradictions in the design, the program shouldn't compile. As the design is fleshed out to make a useful program, the programmer (now also a designer) should have the tools to continue to prove all of the pieces. At the end of the day, all bugs should be considered the responsibility of highest level designers. There should be no `cut' at all.

Of course, there is rarely the time or incentive structure to do any of this. Productive programmers are the ones that get results and are fast at fixing (and creating) bugs. In critical systems, at least, that's the wrong incentive structure. In these situations, it's more important to reward people that create tests, create internal proofs, and refactor and simplify code. Having very dense code that requires investment to change is a good thing in these situations. A `bad change' should be trivial in practice to identify: The compiler and/or test suite would not let it through -- an objective fact, not an opinion of `experts'.

Marcus
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to