[Edu-sig] Re: How do we tell truths that might hurt

Scott David Daniels Scott.Daniels at Acm.Org
Sat May 1 13:58:13 EDT 2004

Arthur wrote:
>>The key skill to impart and develop is surely *thinking* clearly and
>>learning how to express that clear thinking in the appropriate language,
>>which include speech, prose, computer programming and also Mathematics.

> Computer programming is mathematics. 
I would find this a lot easier to swallow (though I might still quibble)
if you, like Dijkstra, wrote, "Programming is one of the most difficult 
branches of applied mathematics".  I believe I could have been a rather
mediocre mathematician, but I instead became a fairly good programmer.

Dijstra's claim is about the difficulty of programming, rather than its
position in applied mathematics.

Many of his claims in the cited article flow from the quote, "The tools
we use have a profound (and devious!) influence on our thinking habits,
and, therefore, on our thinking abilities."  The tools are improving.
One of the reasons he denigrates FORTRAN and COBOL so severely is that
they have remained fairly fixed, while more expressive and useful
language ideas have been explored and agreed to.  Continuing to use
them to write and maintain programs cripples us.  This quote _is_ a
dated communication, I expect a few copies of IBM might be replaced
by Microsoft, Oracle, or Sun were the memo to be written today.

Python is one of those "better tools" that changes how you think.  A
huge reason that python is so popular with good old coders is that it
closely resembles the way we sketch the solution to a problem, without
falling prey to the problems Dijkstra alludes to with APL.  It is
intriguing that we can execute a language so close to our stripped down
communication.  Python is one of those languages that seems to embrace
the current idea that a more readable program is a substantially better
program, and I believe that is one way it outpaces APL.  The second
advantage for python is inter-operation.  C was designed to replace
assembly language (which it has except for special apps).  Because
Python has a well-defined way to communicate with C, and because it
doesn't insist on being "fully in charge," Python intercommunicates
quite well with many other language systems.

So, to sum up, I very slightly believe both:
 > Dijkstra is wrong,
These statements are problems at a point in time (1975).  Some things
have improved since then.

 > I am misinterpreting what Dijkstra means.
Well, since I learned to program in 1966, I _certainly_ believe the
task was harder then than it is now.  We actually know more about what
a usable set of abstractions is.

-Scott David Daniels

More information about the Edu-sig mailing list