Friday, May 25, 2007

A casual discussion on Complexity

OOP is a lot about Complexity. I read somewhere that "fortunately,even in the most complex systems there seems to have an underlying order". A software is a complex system that is why Object Orientation is favourite to Programmers. When I searched 'define:complexity' in Google
I could understand something like "the quality of being intricate and compounded".

When I was a student, my parents insisted on daily update of lessons (whatever taught has to be revised on the same day). They believed it could reduce complexity regarding my studies. I never cared this in my teenage, as I had plenty of romantic dreams(like most boys). And I never executed the above plan! I remember my mother's nervous colleague who had a number of wallets for keeping money for different purposes. We all are afraid of Complexity!? We find out a variety of methods for handling it. But sometimes I feel that Complexity is worthy (That is a different story). Some people are much bothered about this complexity and the implications of it ..At last they take asylum of spirituality (Where they say they can find Brahma-The ultimate knowledge). I don't do Share/Forex Trading because it I find it complex. My mom found Mathematics/Physics very Complex. Some say Theory of relativity is Complex. Thus complexity has different facets.

A surgeon, a civil engineer and a software engineer were chatting at a bar. The discussion rolled around to whose profession was the oldest. The surgeon said that his was, since in the book of Genesis, God created Eve from one of Adam's ribs, and surely that involved surgery. The civil engineer countered by saying that before God created man, he created the heavens and the Earth from chaos, surely a feat of civil engineering. The software engineer just smiled and said "Where do you think the chaos came from?"

That one was a well known joke! (Chaos is state of disorder; It is pronounced like 'Ke-yos')
http://pespmc1.vub.ac.be/COMPLEXI.html(Try this and let me know whether it was useful).
I feel, complexity is a characteristic 'God'? has filled while creating the world. He filled Abstraction also here-see my previous posts. And things are as we see/experience today because of complexity. Is complexity just residing inside mind, or it is there in the universe. I believe it is not just a feeling but some thing filled in nature. I believe so because of my exposure to ' Dialectical materialism'. This is becoming too informal...! Let me stop here. My friend is waiting as we planned to go for a movie. I 'll try to have a more authentic post on Complexity and reorganise(edit) this post. I am in a hurry as he is waiting.

By the way, OOP helps handling this complexity inherent to Software Systems.

Tuesday, May 22, 2007

Interfaces -The Contractual Agreements.

An Interface is a contractual agreement between the publishers of the interface and the subscribers of the interface.The publishers assures that they will not change the interface specification. The subscribers are agreed upon implementing the interface without fail in their component.




Where I see an Interface...?

As OOP is derived from the knowledge of how humans perceive things around them, we should be able to find it around us. I see the charging mobile phone-Nokia N73. I see interface there! There is an interface specified by Nokia for attaching charger so that even third party chargers in compliance with it can be plugged and used. I have seen a many cheap non-Nokia chargers in stores. what makes it possible? Interface Implementation. I felt two things are taken care here at least-Voltage Conversion and Shape. If not a better conversion of voltage, the circuits would have been burned. If no structural matching, It would have been tough to plug it there.



I have a PC. I can attach monitor to it-LG, DELL,PHILIPS etc.

The PC maker as well as Monitor manufacturer is agreed upon certain standards. So that two other concepts are originated....
  • Polymorphism
  • Concurrent & Third Party Component Development

I 'll discuss these in another post.


Monday, May 21, 2007

Let Us Share!!

It was quite recently that I knew how intense the criticism and campaigning against a novel idea like Object Orientation are! I have a different perspective and wanted to post about it. OOP can be questioned and it should be (if it deserves). I understand that OOP is much criticised for it being a pedantic discipline! But I wish to express something else, now...................

I it is always nice to hear from you. You may want to express, share your opinion or even call this blog a scrap ..! Actually when I started the blog, I was not much confident. Constraints were more! Yet it happened!

I was not irritated by that guy who was a critique of OPP and called Object Orientation as well as this blog scraps. I don't deny the other person's right to express. I request you to share, criticize...this blog. Feel free to post a comment. It will be much appreciated, irrespective of the content. And no comments will be deleted here unless it contains socially harmful ideas!

Thursday, May 17, 2007

The clash of generations!

I came across an article titled 'OOP Is Much Better in Theory Than in Practice' by Richard Mansfield- http://www.devx.com/opinion/Article/26776 .

Which, as expected attempts to tarnish OOPS. The author seemed to be overenthusiastic to bend facts. It is widely known that Object Oriented Programming was a result of programmer's search for techniques for cost and complexity reduction as well as code reusability. During his attack on oops, Mr.Mansfield doesn't care about the pitfalls of structured Programming.

According to him, OOPS is just a theoretical exercise and lacks practical significance. He himself agrees that it may be resulting from the improper understanding of the technology-oops.
He complains about unnecessary layers!

This misunderstanding usually happens when one doesn't know OOPS well. Its quite natural because OOPS only makes one productive; It doesn't makes the impossible possible. Everything you achieve (end results, not classes or objects) using an Object Oriented Programming language is possible by a low level structured or even machine language...The OOP Code is ultimately a machine language code on execution. But as one knows, it is really tough to program in Machine Language. Are we really in need of assembly language codes everywhere?

After all, everything is a trade off between Efficiency and Maintainability. It is your choice. Most of the current C++,C# or Java Codes do use oops. There is no point in doubting the potential of oops.

Mansfield find OOPS useful while programming UI Widgets. This happens usually because of one's inability for Componentization and visualisation of domain classes as they are intangible. While it is easier to deal with tangible UI Widgets.

I am one of those who directly benefited from OOPS, It reduced the complexity, made our code much maintainable. and I am very confident of its practical significance.It gave me the confidence to simulate almost anything around us.
I should have taken care while critisizing Mr.Mansfield as I see his three decades of industry experience. But I believe irrespective of who speaks, fact is much more important. I don't want somebody propagating ideas that are regressive. Richard Mansfield's arguments are outdated, I believe. More or less a screed! His arguments doesn't seems to be well supported.
Its is just a matter of accepting something 'new'. OOPS is revolutionary!

Wednesday, May 16, 2007

OOP and OO Thinking..

OOP is Object Oriented Programming.But Object Oriented Thinking is different. OOP is a narrowed down thing! Object Oriented Thinking-Object Oriented Analysis, Object Oriented Design- is applied in Computer programming. Then It is named OO Programming. When I said OOPS is present everywhere I was mistaken. It would be correct if I said "Object Orientation is there". OOPS definitely is a stream or paradigm of Computer Programming. But in the broader perspective OO [Object Orientation] is a philosophical stuff. One need not be a programmer to understand Object Orientation ,Abstraction etc..It is there in his daily life. Most of us are living in a world of Object Orientation. OOPS evolved as a means of managing the complexity involved in Programming.It was resulting from the study of human cognition as well as Programming methodologies. There are many things common to the universe as well as A software. Complexity is just one of them. Chaos is there in the universe and ..in software! Chaos is defined as 'A state of extreme disorder and confusion' by web.
http://wordnet.princeton.edu/perl/webwn?s=chaos

The essence is Object Orientation and thus elements of Object Orientation are existent in nature. It is something which is closely related to human cognition [The conscious process of knowing or being aware of thoughts or perceptions, including understanding and reasoning].
And OO Programming[OOP] is the use of OO in programming.

Through OOPS, Programming turned out to be too real world like.....That's what happened.

And my frustration of being the 'abandoned programmer' is reaching new heights. The job is just for livelihood ..No passion!No enthusiasm! I have decided to search for another one.

Tuesday, May 15, 2007

Encapsulation

Encapsulation is another element of OOPS. I have felt that Encapsulation is very close to abstraction. A different perspective of Abstraction....? Both are linked together, I assume. Abstraction is something that is existent because of Encapsulation. Abstraction is a principle or quality while Encapsulation is a technique. Encapsulation is possible because Objects do have a quality called Abstraction.

I remember someone told me that Abstraction is implemented through Encapsulation.

There is another definition-"Wrapping up of data and function together in a same entity called class". I don't like this one! I have heard this many times interviewers uttering. Its a too narrowed down,Programming specific definition. Object Orientation and thus Encapsulation is not only a programming language specific discipline.It has much broader aspects that it is there in the universe.When these qualities are disappeared (or taken away by God!) we human beings have to adopt different means for interacting, apprehending everything around us!

Hence I go for this one.
"The process of hiding all the details of an object
that do not contribute to its essential characteristics; typically,
the structure of an object is hidden, as well as the implementation of
its methods. The terms information hiding and encapsulation are usually
interchangeable."


This again comes from Booch.

When u pushed the break pedal in ambassador car ,you didn't care that had a hydraulic or air break. While doing the same thing on a Benz, u never bothered whether the model had ABS. All those were smartly encapsulated inside and u have abstraction in the form of a 'pedal push'. 'All well hidden inside'.

I just replaced my Computer RAM knowing that it was non functioning. It was quite easier to push the new RAM in to the slot. Now my PC is OK! I just did without having chip level expertise. Encapsulation helped here.

There is one thing to note here -'Degree of Abstraction'.

I am actually trying to redefine my ideas.I see a plenty of authentic material in web which are quite helpful.

Monday, May 14, 2007

Life with OOPS!

' Object Orientation' or 'Object Oriented Programming [OOPS]' is a paradigm of computer programming.Its also a term that is used mostly by all but without having adequate knowledge.I would like to tell how fascinating it was for me, share my thoughts about it. And this can not be an authentic reference place,obviously.Be skeptic! If your intention is to learn OOPS from scratch, this may not be the right place.

I believe OOPS is rather a philosophy-the way human cognition perceives this world.And this knowledge is applied in programming to make things easier (to reduce complexity..they say!).A programming language that provides necessary construct so that these basic guidelines of OOPS can be implemented is said to be an Object Oriented Programming Language.

Nowadays, Am I losing that spirit about about OOPS which I had nurtured for years!?Might be... because the much business oriented Indian IT MNC culture has taken out much of my spirit were everything is about Profit and Loss, Resource Allocation ... contrary to the glossy ads they give in Times Ascend about Quality and Innovation.
Abstraction
Abstraction helps to interact with something without bothering into it's details.Abstraction defines 'looking into the essential characteristics'.Abstraction depends on who perceives-it is different for different observers.

"An abstraction denotes the essential characteristics of an object that distinguish it from all other kinds of object and thus provide crisply defined conceptual boundaries, relative to the perspective of the viewer."

Above is a precise definition given by Booch.

How I felt was...Abstraction is about our perception of something -guided by our own purpose or need.I remember somebody explained it as follows

To an artist once palm is all about aesthetics;he is concerned about keeping it's proportions in painting.But the same palm for an orthopedician who wants to have a surgery on it is perceived differently-that he sees bones and joints.

Also Abstraction is something 'God' has filled in universe(or in human mind?) that made things a lot easier-ie, irrespective of the internal complexities u can accomplish a particular functionality.It is like a driver has to apply brakes(push) to stop an ambassador car which is the same he has to do in Mercedes Benz or Ferrari to stop it,irrespective of the different breaking mechanisms each of these possesses.Abstraction comes in the form of a pedal -'A pedal Push'! Same with steering! u act always similarly having little concern over whether it is a power steering or not!


U have to turn on the Switch labelled 'LIGHTS' in the conference room.last week it was an incandescent bulb.now it has been replaced with a Fluorescent lamp but you don't bother about these-ur finger operates in the same way.Here U see abstraction.


Abstraction is omnipresent.you can c it everywhere....I never cared abt whether my company buildings are painted in blue or yellow!It was irrelevant (to me).But later I hav seen the painter fired for the wrong mix of colors while painting them(much relevant for him).I just cared compensation(?) and technology....I just looked into the essentials.....!

Its getting pretty late.Time for a coffee& Cigarette. This week, I will add more here..... Interfaces!Encapsulation...!