[EMAIL PROTECTED] wrote:
----- Original Message -----
From: "John Stanton" <[EMAIL PROTECTED]>
To: <sqlite-users@sqlite.org>
Sent: Saturday, April 15, 2006 12:09 AM
Subject: Re: [sqlite] Re: Structured or Object-Oriented



[EMAIL PROTECTED] wrote:

----- Original Message -----
From: "John Stanton" <[EMAIL PROTECTED]>
To: <sqlite-users@sqlite.org>
Sent: Friday, April 14, 2006 1:32 AM
Subject: Re: [sqlite] Re: Structured or Object-Oriented





I was always impressed with Dijkstra's contention that a programmer's
most important quality is a familiarity and skill with mathematics.  The
ability to think in abstract terms and understand the concept of proof
of correctness is certainly more important than learning a certain
methodology and blindly applying it.
JS


I agree with the basic idea except in that it does not really relate to
mathematics as such:
'The ability to think in abstract terms and understand the concept of

proof

of correctness' could be considered a basic principle of philosophy and

by

application of science;
In the 1970's I was studying biology and the most earth shattering
concept/rule that came my way was 'always relate structure to function',

a

principle which 'encapsulates' OOP in five words (or four if you remove

the

'always');
Biology in the evolutionary sense is not concerned with correctness but

with

the 'fittest', that is, that which functions best;
there is no proof, correctness or methodology, only that which works;



There is no correctness in Science, and that certainly applies to
Biology.  The scientific method has no "correct", only hypothesis and
observation.  On the other hand Mathematics, a non-scientific
discipline, has absolute correctness by proof.  "Computer Science" is a
bad term for a discipline which is based on the concepts of Mathematics,
not Science.


I would not myself have excluded Mathematics from the Sciences:
I have always regarded it as the most abstract of the sciences;
Whereas this abstraction is sometimes its strength in relation to computer
science,
it is sometimes its weakness: sometimes programmers are so cocooned in their
abstract internal world they seem often to have difficulty interfacing with
the 'real' world sufficiently to come up with efficient practical solutions
(unable to relate structure to function!);


As you would have discovered from biology, the principles of natural
selection etc do not guarantee good designs, only ones good enough to
survive until driven to extinction by a better combination.


That's my whole point: the 'good' designs are the ones which exist;
Mathematics is also undergoing its own evolution.


For example
the genetic code is not elegantly designed by a mathematician but is
just the first combination which worked adequately.  If the biological
method worked well there would be no disease or genetic defects, just
organisms which lived forever like Euclid's axioms.


The biological method works 'well': disease and genetic 'defects' are
simply aspects in the unfolding of the genetic code. Euclid's axioms
don't exist in the real world, they are human abstractions:
it may be possible to prove that there is a relation between the radius
of a perfect circle and its circumference, but unfortunately the perfect
circle
does not exist, therefore no radius and no circumference.

It's interesting that you use words like 'good', 'better', 'elegant',
'defect', 'correct'
in ways that imply value judgement, where as a biologist I would usually say
more or less functional: you notice that I used Darwin's term 'fit':
I think that programmers should strive for the 'fit' solution;


I would counsel programmers to look to correct designs rather than
pursue the biological approach and be like a monkey running up and down
a keyboard in an attempt to compose a new sonata.


The biological analogy that I proposed was based on the fact that
most biological study is based on the structure/function dichotomy,
and that anybody in computing could benefit from such a simple paradigm;
That you cited the sonata as an example of correct design is interesting,
in that the rules of correct design do serve as tools to composition, though
the
uniqueness of expression in the sonata will often derive from a knowledgable
breaking of those rules: trying to define poetry or music using Euclid would
probably hardly satisfy;
Neuroscientists might differ, though they will have a few books of theorems
to produce yet.

I am not trying to underplay the importance of mathematics, but I suggest
that other disciplines
(in my case biology and general sciences, precision craftsmanship and
design, and musical training)
can also contribute to working in computing.

P.S. If anything its the programmers who resemble a monkey running up and
down
a keyboard in an attempt to compose a new opus (I include myself in that
forlorn brood)

Happy Easter

Kevin

These days they teach the Philosophy of Science, and students get to understand why Mathematicians are awarded Arts not Science degrees.

Although it seems highly pedantic it is actually very important that programmers have an insight into what they are really doing if they are to advance the art. Are algorithms discovered or invented? Modern opinion is that they are invented and hence can be patented, not discovered like the laws of gravity etc, which are definitely not patentable. That puts computing into the arts area along with mathematics.
JS

Reply via email to