Mathematics and Software Engineering (was slide: useful function? )

Frank Atanassow franka@cs.uu.nl
Tue, 3 Dec 2002 21:18:01 +0100


Markus.Schnell@infineon.com wrote (on 03-12-02 18:18 +0100):
> Perhaps I should rephrase:
> > There's too much mathematics in it, I'm not a mathematician
..and later...
> > lot of mathematics.  One of the things I like about FP is that it
> > demands more mathematical sophistication of its practitioners, which,
> > contrary to some opinions, I think is a Good Thing.
> 
> I'm fully with you there, but - as someone already pointed out - I don't
> want to need a math major to read a paper regarding programming.

How many times has this phrase been uttered, I wonder...!

The truth is:

   You DON'T need a math degree to understand such papers.

This may come as a shock, but the reason for this is that they are not written
by or for an audience of mathematicians, but rather for an audience of CS
researchers who actually possess---wait for it---CS degrees! :)

Now, admittedly, there is a lot funny notation, jargon and special concepts in
PLT papers. That's why a few people have undertaken the task of writing
textbooks, surveys and tutorials for people who did not come into this world
with the Library of Congress preloaded in their brains. Two good books which
come to mind are:

  John C. Mitchell. Foundations for Programming Languages. MIT Press, 1996.

  Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002.
  
I've also collected some freely available ones here:

  PLT Online
  http://www.cs.uu.nl/~franka/ref

That was CS and PLT. Now let's talk about mathematics and algebra.

It doesn't take a degree in mathematics to do or understand mathematics. The
people who get degrees in mathematics get them, not in order to do
mathematics, but rather in order to create/discover (do you favor Plato or
Brouwer?) _new_ mathematics.

People nowadays use the word "mathematics" as if it were some exotic beast you
can only find in the hinterlands of darkest Africa!  Every field, even
something as mundane as accounting, has its wildly esoteric corners. No one
expects programmers to be experts in twistor theory or inaccessible
cardinals. Hell, no one expects CS researchers to be experts in those bits
either.

Elementary algebra is not one of those esoteric bits. As mathematical topics
go, it's simple, fundamental, ubiquitous and closely connected to FP. It won't
gobble up your grandmother or demand your first-born child.

At a guess, I think most FP programmers could easily get up to speed on the
basics of constructive universal algebra in the context of FP---signatures,
initial algebras, catamorphisms, free constructions, monads, etc.---in the
space of a workshop-length course.

It's common practice for programmers in industry to take training courses on
things like Java beans, ActiveX controls and UML; why not algebra, or proof
theory or operational semantics? At least those things are sure to survive
longer than the latest buzzword technology...

-- 
Frank