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