Peter Wood <peter.wood / worldonline.dk> wrote:
>
>"Ben Tilly" <ben_tilly / hotmail.com> writes:
>
> >
> > I like analysis.
> >
> > There is an area of algebra that is practically a litmus
> > test for the gap.  That area is category theory.  The
> > entire point of the subject is nothing more than finding
> > canonical constructions to turn problems in one problem
> > domain into problems in another.  Even though the actual
> > translation process is pretty much trivial, often things
> > which are very hard to solve in one domain are radically
> > easier or at least doable in another.
> >
> > I am competent at category theory.  I understand why it
> > is useful.  But while I am doing it, it feels like
> > meaningless symbol manipulation.  I don't enjoy it.
> >
> > When I came to programming I noticed this thing called
> > OO programming.  As soon as I figured out what it was
> > and saw people doing it, a little light went off in my
> > brain that said, "This reminds me of category theory."
> > Indeed EVERY single person I have found who knows both
> > math and CS well enough to know what category theory
> > and OO programming are either likes both or dislikes
> > both.
> >
> > Unsurprisingly, I find that I am quite capable of doing
> > OO.  I understand exactly why it is useful.  But when
> > you begin talking about things like design patterns it
> > feels like meaningless symbol manipulation and I don't
> > enjoy the process very much.
> >
>
>This was a very interesting post.  I would like to ask you whether you
>think the following description fits the algebra/analysis gap:
>
>(The following is from _Paradigms of Artificial Intelligence
>Programming_, by Peter Norvig, discussing two alternate paths to follow
>in programming)
>
>(1) Use the most straightforward mapping of the problem description
>     directly into [...] code.
>
>(2) Use the most natural notation available to solve the problem, and
>     then worry about writing an interpreter for that notation.
>
>The second approach often works nicely in Lisp, which was designed to
>be "an *algebraic* list processing language for artificial
>intelligence work" (my emphasis, quote from _The History of Lisp_,
>McCarthy, 1979).
>
>Christian (and presumably you?) would appear to favour (1).

I would say that it is somewhat orthogonal.  After all
mathematicians of all stripes are noted for inventing
new notations to discuss problems.  Mathematicians will
solve problems in a straightforward way if that is
convenient.

Based on personal experience I think my complaint about
"meaningless symbol manipulation" is key.

I think it is fair to say that an analyst accumulates
ways of understanding their subject.  The manipulations
and transformations that they accumulate map very
nicely onto internal understandings of the problem
space.  Indeed very long sequences of necessary
manipulations can quickly be recognized as being what
will work based on conceptual principles.  You often
hear people say, "From here it is a matter of filling
in the epsilons and deltas."  Likewise analytic
constructs like a Fourier transform maps very well
onto a conceptual understanding of the problem space.

An algebraist, by contrast, accumulates formalisms and
manipulations that have proven effective in the past.
They are then willing to try formal manipulations
because the pattern is likely to be successful, even
though it doesn't fit particularly well into any
understanding of the problem domain.  In fact
algebraists often move problems from one problem
domain to an unrelated one because they think it will
be easier to manipulate.  In fact the key construct
of category theory - a functor - is exactly that.  A
type of mapping of problems from one problem space to
a new one where you hope you can manipulate things
more easily.

The difference is seen strikingly in the types of
"higher order" constructs each comes up with.
Analysts come up with constructs (eg L2) which have a
strong conceptual association with the original space,
and considerable structure of their own.  Algebraists
take formal manipulations and seek higher-order
abstractions about the kinds of manipulations they do,
at every step moving away from the original problem
spaces that motivated them.

I find it amazingly characteristic that Christian was
asking what _concepts_ Ruby had to offer the world.
Concepts are ways of applying meaning to problems,
which is what analysts rely on for gaining intuition.
But by and large algebraists do not produce concepts.
They produce useful _formalisms_.

It is also classic that Christian would complain that
transforming a problem from one problem domain to
another doesn't do anything useful.  You have merely
restated the problem.  Well algebraists do that all
of the time  - moving to one with the richer set of
understood ways to manipulate it.  It is much rarer
to see analysts try that unless the problem domains
are tightly intertwined, it ruins their intuition!

Conversely I find it striking that Matz likes OO and
then produces a language notable for the ability to
consistently apply a useful and flexible set of
manipulations anywhere, but without (by his own
admission!) anything new conceptually...

In math there is a constant interplay between these
two fundamental approaches to the world.  It is very
rare to find someone who enjoys both.  Yet very often
the most interesting developments happens when one
group finds ways to move into areas created by the
other...

Cheers,
Ben
_________________________________________________________________
Get your FREE download of MSN Explorer at http://explorer.msn.com