Search This Blog

Saturday, July 28, 2012

We dont need no Ooooo-Orientation – 4

The Grandeur of The Absolute

From the time – probably millenia ago – when humans first learnt to think ahead of their animal neighbours, we've been able to make certain statements that (presumably) animals can never conceive – abstract generalities.

So for example, a baby calf can recognize its mother cow with a greater unerring precision than a human baby's, yet when the human baby grows up, it can make distinctions out of the reach of our bovine brethren: eg
  • my mother vs motherhood
  • motherhood vs love
  • cheap love poetry vs hi-class love poetry
  • etc
In short, humans are very comfortable

dealing with abstractions as though they were concrete.


Now I have a conjecture, viz. that grand generalities have some hormonal trigger for making us feel elated (a grande-generality-pheromone maybe?) so that statements like
  1. Nothing in the universe can go faster than the speed of light
  2. Every pair of bodies in the universe attract each other according to a trivial-to-state mathematical law irrespective of their distance or relative size
  3. Anything that can be computed by any computer whatever (invented or yet to be invented) can be computed by a Turing machine
create a certain tickling feel-good that a 'normal' (non-general) statement like say: My tea has less sugar does not produce.

And from this addiction to this feel-good-factor, people then start trying (as with all addictions) more and more desperately to create grander and grander generalities.  In a few cases (like the ones cited above) they may actually succeed and so Newton, Einstein, Church and Turing justifiably become famous.

Unfortunately these are the exceptions.  In the vast majority of cases, the quest for generalities only produces rubbish.  So lets see how the…

The Philosophy of OO

fares in this regard.  OO starts off its philosophical sojourn with the dogma:

Everything is an object

I will start with a variation that is slightly less nonsensical but easier to debunk

Everything can be modeled as a class

Now if we start looking at the justifications of this statement we would find certain methodological directives such as

Identify the nouns in the use-case and make them classes

In itself this is – as a methodology – not objectionable.  So for example if we are presented with the standard example of a customer coming to an ATM and making a transaction, this methodology tells us that it may be a good idea to make customer and ATM into classes – so far so good.
And what about transaction? Yes we could make it into a class also, but as we shall see, blanket-adding the set of abstract nouns into the set of common nouns as class-ifiable objects gets us into trouble.

So for example, if the use-case contained a statement like:
In order to safeguard customer-satisfaction, the ATM's performance shall not degrade beyond 3 seconds response time.

So now – according to our methodology – we need to make performance, response-time and even customer-satisfaction(!!) into classes.

What's gone wrong?

Some properties are directly reify-able, model-able, whereas others often the most crucial ones, can only be emergent and not directly reified within the system.
This is a cornerstone of computer science.  Its most famous form is:
  • The halting problem is unsolvable – Turing

Other more general though less well-known analogues are:
  • All non-trivial questions (about programs) are generally unsolvable – Rice theorem
  • No (reasonably powerful) system can contain its own proofs – Gödel's theorem
  • Gödel's phenomenon is natural and widespread rather than pathological and unusual – Chaitin's information-theoretic version of Gödel
Quite simply, the problem of correctness is unsolvable because all the data and the logic for any non-trivial system are not modellable/reifyible into the system.

The subtlety of the problem has tripped many very smart people so needs to be stated carefully:
  • To be useful, a system would have to model enough of real-world data
  • To be executable, a system cannot model all the relevant data
  • This does not apply to toys (note the 'power' requirement in Gödel's theorem)

In short:

Everything can be modeled as a class
is Grand Bunkum

Now since I am in the process of making (grand general) broadsides, let me say that similar things can be said for the logic and the functional paradigms as well

Also the "Everything is an object" needs separate handling. I'll write about it when I feel well enough to handle more heavy-duty bullshit…

For now:  Some earlier posts (not quite complete) on OOOOO-nonsense:  1, 2, 3

1 comment: