Tuesday, October 22, 2013

Object Oriented Love

I seek simple words to express simple fundamental conceptual models for high level problem domains.....like Money.  That quest for for pervasive simplicity to organize complexity finds a method in the Object Oriented Paradigm. The link is to explanation that was on the first page of a google search on the "in qoutes" term.  There were many more google hits expressed in different ways but all dealing with the essence of the paradigm.  Note that the link I picked does not contain single line of code but nevertheless it is programming.  Programming at a high level that discovers basic structure that may, much farther down the line turn into a million lines of code.  I really can't go very far down that line but I can make a good "climbing a tree to the moon start with the focus on the problem domain of Money.

Object Oriented approach is universal.  It is embedded in our Natural Language.  It is itself a language but a more structured a step beyond Natural Language language that reduces ambiguity (like the language of law or medicine).  I think that it was born of the need to bridge the gap between programming lines of code and the purpose of the program code expressed in a natural language mission objective.  Maybe the gap began to widen with the first line of code was written to express a refined natural language narrative conceptual idea like one thing and another thing are two things.  1+1=2.  In the information age when every single thing has its own attributes and behaviors in relationship to communication with all other things it becomes more complicated.  Just the operating system alone necessary to program what a computing machine does requires millions of lines of code. 

Our brains are our own personal computers with millions of lines of code relating the attributes and behaviors of the conceptually represented things in our heads.  Somehow we fill in the big gap between all those lines of code and the meaning of higher level conceptual structures they generate, or were they generated by the higher level structures?  Works both ways I suppose.  It works well but ambiguity is still there, we just continue to reduce it with better ways to bridge the gap between the high level concept at the top and the lines of source code that support it at the bottom. 

Decompose or  "top down break down" starts with a complex entity at the top, like an animal and breaks it down to its parts.  Conceptually it does that in biological terms or physically in terms of decay. 

Assembly or "bottom up putting together" starts with all the piece parts at the chosen "bottom" level and builds up to a complex entity at the top.  Like and animal or Money.  "Bottom level" is an arbitrarily chosen granular level since all "things" physical or conceptual go to a bottom granular level that we have not found conceptually or physically.  The lowest level we go conceptually is the lowest level of granular reality which seems to be the presence/absence of a thing and the concept that a thing can conceptually be present by virtual of its absence.  Beyond that is all metaphysical world where there is probably big bang theory too but going there is a matter of faith.  The lowest granular level of the real or conceptually world structure is far enough for me.

The "gap' between the top and bottom is something we have been filling in with structure since the world began.  Creating an abstract model of a real world and an abstract model of the conceptual world.  In our heads and increasingly with the tools we use to assist us in the work of filling the gap: Language.

So:  What's Love got to do with it?

Simple:  It is a top level concept full of ambiguity, almost analogous to Money.  Difficult to understand.  Object Oriented Analysis cuts the ambiguity and structures the gap between the top and the bottom.  Thinking about an ambiguous thing like money was an exercise to tackle an even more ambiguous problem domain.

This was not a simple blog entry yet it strove to make the complex manageable.  Managing complexity is not a simple thing?

The next blog will attempt to manage it better by discovering the object properties and its behaviors.

No comments: