Re: Programming is the Engineering Discipline of the Science that is Mathematics

From: Cimode <>
Date: 7 Jun 2006 05:41:04 -0700
Message-ID: <>

A few comments on the following interesting description of relationship between math and other scientific areas.

Marshall wrote:
> Elsewhere, I commented that:
> Science : Engineering :: Math : Computer Programming
> Science is a methodology for study that is intimately anchored
> to the natural world. Physicists, chemists, biologists, etc. may
> form their hypotheses, but these hypotheses are not interesting
> until their usefulness is checked against the actual world we
> live in.

If I follow your imply that hypothesis are interesting (relevant) if useful. *Usefulness* is a consequence of sociological and environment context (what is considered *useful* in one context (cultural, geographic, historic...) may *not* be considered *useful* in another context). Following your reasonning leads to accept that the principle that hypothesis interest (and relevance) is determined by sociological and environment context and is not therefore universal. Don't you think this is a paradox ?

> Mathematics, in contrast, is much the same kind of methodology
> as the other sciences, but it is not anchored to the natural world.
> A mathematical idea may be useful all by itself, without needing
> empirical verification of any kind. Thus we may derive use
> from hyperbolic geometry without ever going out in to the
> natural world and testing whether two parallel lines ever meet
> or not. Indeed, we would not be able to locate parallel lines
> in the natural world, because none exist there.

// Mathematics, in contrast, is much the same kind of methodology  as the other sciences, but it is not anchored to the natural world.// Vague. Please clarify *anchored in the natural world*.

//A mathematical idea may be useful all by itself, without needing  empirical verification of any kind.//
Mathematics can hardly defined by its usefulness as usefulness is context defined and mathematics is not... (relevance would be a better term don't you think?). Could you give an example of a mathematical idea that meets these criterias of definition?

> Mechanical engineering, chemical engineering, etc., all are
> effective because they build on scientific principles, and from
> truths discovered via science. The laws of the natural world
> are the laws of engineering, and the engineer who understands
> this is a successful engineer.
> Software engineering, or simply programming, is the engineering
> disipline of Mathematics, in the exact same way that chemical
> engineering is the engineering discipline of the science of chemistry.
Risky. Several other domains of engineering may pretend to the same relationship to math.

> And because of this, we should regard a computer programmer
> who believes that mathematics has nothing to offer him the
> same exact way we would regard a chemical engineer who
> believed that chemistry had nothing to offer him, or a mechanical
> engineer who didn't think that physics mattered to his job.
> Fortunately for the chemical engineers of the world, and
> for the people who rely on their work, the idea would be
> immediately rejected as ridiculous by anyone in that
> discipline. It is unfortunate that the same is not true for
> us programmers.
True. Math programs in Computer Science curriculum are deeply unsufficient and low level in America. Coming from a European academic background and having studied in an American university through a computer science program, the most difficult level of math I have found was european high school equivalent. I was so bored in math classes that I would take a chance to work on programming homeworks during math class time.

> I lament the amount of time I spent studying OOP when I
> could have been studying math. At the time, I still regarded
> programming as a fuzzy discipline, not amenable to
> formalisms. I see now that I was simply surrounded by
> fuzziness as a cultural norm. The fuzziness was a social
> disease, not an attribute of the discipline of programming.
Indeed a very good point.

> Let us hope that our profession may one day recover from
> this love of fuzziness.
I hope to be wrong but I am pessimistic. Things are getting worse and worse everyday.

The "Law" of Demeter is as hard to
> master as a hula hoop, and about as useful. Let us instead
> study abstract algebra, set theory, type theory, or what
> have you. Though these are all much sterner mistresses
> than Demeter, the rewards are proportionally greater.
> -------------------------
> >From an interview with Alexander Stepanov, author of the STL:
> Q: What do you think of OO? Is it a good style of programming?
> Is there a necessary and useful tool for learning OO?
> Stepanov: I try not to think of OO. I am not impressed with their
> approach to programming. Quoting from my interview to an
> Italian journal: "I find OOP technically unsound. It attempts to
> decompose the world in terms of interfaces that vary on a single
> type. To deal with the real problems you need multisorted
> algebras - families of interfaces that span multiple types. I find
> OOP philosophically unsound. It claims that everything is an object.
> Even if it is true it is not very interesting - saying that
> everything is
> an object is saying nothing at all. I find OOP methodologically
> wrong. It starts with classes. It is as if mathematicians would start
> with axioms. You do not start with axioms - you start with proofs.
> Only when you have found a bunch of related proofs, can you
> come up with axioms. You end with axioms. The same thing is
> true in programming: you have to start with interesting algorithms.
> Only when you understand them well, can you come up with an
> interface that will let them work." I repeat: programming is
> about algorithms and data structures, not about inheritance
> and polymorphism.
> Q: What is the relationship between Mathematics and Computer Science?
> Stepanov: Computer Science is a mathematical discipline. Quoting
> from Dijkstra: "As soon as programming emerges as a battle against
> unmastered complexity, it is quite natural that one turns to that
> mental
> discipline whose main purpose has been for centuries to apply effective
> structuring to otherwise unmastered complexity. That mental discipline
> is more or less familiar to all of us, it is called Mathematics. If we
> take
> the existence of the impressive body of Mathematics as the
> experimental evidence of the opinion that for the human mind the
> mathematical method is indeed the most effective way to come to
> grips with complexity, we have no choice any longer: we should
> reshape our field of programming in such a way that, the
> mathematician's methods become equally applicable to our
> programming problems, for there are no other means."
> Marshall
Received on Wed Jun 07 2006 - 14:41:04 CEST

Original text of this message