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