[net.followup] Re Dijkstra and Mathematics

sibley (05/13/82)

"Mathematics is what mathematicians do."

Mathematicians do not solve differential equations or spend
their time evaluating really tough integrals.  In fact, the
best people at doing this sort of thing are engineers and
physicists.  Neither do mathematicians search for bigger and
better trig identities.  They prove theorems.  They prove
intersting theorems, but 'interesting' is hard to define.
Hence, the definition above.

As a mathematician myself, I can tell you that what I do bears
no resemblance to Dijkstra's suggested approach to programming.
Certainly theorems do not 'prove themselves' the way he implies
that programs 'write themselves'.  (I don't think programs
write themselves either.)  When I start thinking about a
potential theorem I don't even have any assurance that it is
true.  This makes it very different from programming.  A
programmer always (well, almost always) knows that what he
or she wants to do is possible.  The problem is 'how'.  After
I decide that a theorem is true, i.e., have a convincing sketch
of a proof, begins the tedious part -- writing down a detailed
and correct proof and then going through the hassles of
publication.  My experience is that this part might be a
little like programming.

In fact, when I start thinking about something, often I don't
have even a potential theorem in mind.  I'm just trying to
understand how something 'works'.  The important insights
become theorems.  This seems entirely unrelated to writing
programs.

'Proofs of programs', BTW, come under the heading of
'uninteresting' above.  Proving a program does what you
claim is just boring.  It may be important, but it's still
boring and not mathematics.  I might accept 'mathematical'
in the sense that it resembles mathematics without being
part of it.  Note, however, that theories about how programs
might be proved may very well be mathematics.  Just doing it
is not.  I guess this means that what Dijkstra does may be
mathematics, but what he suggests programmers should do is
not.

Dave Sibley
Department of Mathematics
Penn State Univ.
psuvax!sibley