Abstraction means hiding the non relevant details from the user of a system. This is used to reduce complexity by fixing the desired input and output of a system.
Abstraction is something which happens naturally whenever we are talking about anything. For example if I say : "I slept yesterday at 11pm". Here I am talking about the activity of sleeping. For a listener or reader of that sentence it is one action - sleeping. But actually that one action abstracts or hides details about few more actions - making bed, manage room temperature, turn off light, etc. Now these actions are also abstractions for some more actions , like making bed means setting up pillow and blanket, changing cover etc
So we see that each label for an action hides behind it more details of actions or rather a label represents a set of labels or actions. Everything can not be labels else there will not be actual work done. So there is a set of real actions and then there is a hierarchy of how we label them usefully to hide complexity of all the small real actions - this is abstraction.
Another common example is Car - what I need to know to drive a car ? Steering, Clutch, Brake, Throttle, Gear changes, Hand Brake. Now Let's pick one, say Throttle pedal - all the driver needs to know is that when it is pressed - the speed of car increases and when the foot is lifted off it, it comes back up and the car does not accelerate anymore. But what details is it hiding behind the hood? Depending on which car you are driving that Throttle pedal might have different implementation - some maybe just electronically controlled, some using metallic wires to turn on air shaft to get more air to engine and gasoline intake regulated by sensors, some may be manipulating the amount of gasoline when wire is pulled rather than just air etc
Unless things don't break - which they eventually will - user just cares about the Input and Output or the simplest tag abstracting out all the details. But when things stop working correctly - for example say throttle wire gets stuck at full throttle and for no input car driver is still getting maximum output. One needs a way to fix it - one has to peel off the layer of abstraction to fix that issue or one can call an "Engineer" to fix it !
Every form is a symbolic representation of something more behind it. For example a face is an abstraction of emotions and thoughts in a persons mind. Interestingly the final abstract impression of emotion delivered by a face is something which is supposed to map the internal emotion. The intermediate details of which muscles are moved or how a picture of face is drawn using light and shadows becomes irrelevant but not unnecessary. In an art form which an artist draws he needs to be very well aware of what and how is he drawing and he has to be aware of all the details and abstract them out properly for an observer to connect seamlessly with the face. In case of a real person, this gets more complicated and real - humans have many layers, some which they think they can control but can not and some which they can. Some which are built by what they have been doing or thinking the whole day, some having impressions of what thoughts they were having for many weeks or years. In this case - all the details just render a real image at a single point in time and how the observer perceives it is an abstract impression. Observer can use some symbols or words to describe some parts of that impression but most details are hidden away in the impression itself.
[ref]
No comments:
Post a Comment