Path: dp-news.maxwell.syr.edu!spool.maxwell.syr.edu!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!postnews.google.com!i39g2000cwa.googlegroups.com!not-for-mail
From: "Marshall" <marshall.spight@gmail.com>
Newsgroups: comp.databases.theory
Subject: Programming is the Engineering Discipline of the Science that is Mathematics
Date: 5 Jun 2006 17:41:08 -0700
Organization: http://groups.google.com
Lines: 105
Message-ID: <1149554468.101169.75440@i39g2000cwa.googlegroups.com>
NNTP-Posting-Host: 24.4.95.46
Mime-Version: 1.0
Content-Type: text/plain; charset="iso-8859-1"
X-Trace: posting.google.com 1149554473 19827 127.0.0.1 (6 Jun 2006 00:41:13 GMT)
X-Complaints-To: groups-abuse@google.com
NNTP-Posting-Date: Tue, 6 Jun 2006 00:41:13 +0000 (UTC)
User-Agent: G2/0.2
X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7,gzip(gfe),gzip(gfe)
Complaints-To: groups-abuse@google.com
Injection-Info: i39g2000cwa.googlegroups.com; posting-host=24.4.95.46;
   posting-account=s2xCFw0AAAD2mIwYYHAqjdsecwG0axmW
Xref: dp-news.maxwell.syr.edu comp.databases.theory:41049

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."


Marshall

