-----Original Message-----
From: cctalk-bounces at
classiccmp.org [mailto:cctalk-bounces at
classiccmp.org] On Behalf
Of ANDY HOLT
Sent: 27 September 2014 21:07
To: General Discussion: On-Topic and Off-Topic Posts
Subject: Re: Who is the world's oldest working programmer?
On Sat, Sep 27, 2014 at 12:50 AM, Dave G4UGM
<dave.g4ugm at gmail.com> wrote:
On reading [Dijkstra's] quotes he sounds very
bitter and twisted
about all the languages in common use in commercial and scientific
computing when he wrote that quote (around 1975 I believe)...
He slates Basic, Cobol, Fortran, APL and PL1..
Because they all sucked, for various reasons. Being in common use
doesn't mean that they're good in any absolute...
Dijkstra's key interest was proving program correctness (he was a mathematician).
All the stated languages had features that made this difficult - if not outright
impossible.
When mathematicians can't prove something, they try and transform it to something they
can prove.
So rather than prove the correctness of the original program, use tools to re-structure
and re-write the program in such a way that the difficulties are eliminated.
For example look at the techniques used to unravel the wonderful obfuscated 12 days of
Christmas....
http://research.microsoft.com/en-us/um/people/tball/papers/xmasgift/
I am pretty sure tools be developed to take a program with the issues you mention and
from it produce a functionally equivalent program, whose correctness would be more easily
provable..
But he didn't have a good answer when I asked him if this didn't just push the
problem back to the program specification, not to mention the problem that in "the
real world" specifications received frequent modification.
Indeed, as how do you specify the functional requirements of a program in way such that
there are no ambiguities in the specification? Well perhaps you write pseudo code and I
suggest that if you write pseudo code, then can I suggest it would be possible to produce
algorithms for converting the pseudo code to most any language in such a way that the
converted code will be provably correct....
Proof of program correctness is one of those things
that I feel "would be nice, but will /never/ happen for real applications".
Trying to prove an arbitrary program implements a specific function is challenging....
Dave
G4UGM
Andy