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

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Tue, 06 Jun 2006 01:16:22 GMT
Message-ID: <GH4hg.18138$A26.418865_at_ursa-nb00s0.nbnet.nb.ca>


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.
>
> 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.
>
> 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.
>
> 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.
>
> 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.
>
> Let us hope that our profession may one day recover from
> this love of fuzziness. 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:

> http://www.stepanovpapers.com/CPCW_Interview.pdf
>
> 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."

Hear! Hear!

I feel cheated that predicate logic was never taught to me in highschool. I see no reason to exclude it from the curriculum, and it would much better prepare students. I also feel cheated that my education failed to teach me enough useful statistics. Received on Tue Jun 06 2006 - 03:16:22 CEST

Original text of this message