The Power and Value of Abstraction For Programmers
The Power and Value of Abstraction For Programmers
The Power and Value of Abstraction For Programmers
As an Introduction
"Value is that which one acts to gain and/or keep." It is that which we strive to achieve or preserve through our actions. I hope there will not be a disagreement in defining value in such manner. However, I expect one legitimate question to arise in the mind of the reader: How is abstraction to be a value for practical work? Well let us see together So why do we need to acquire or preserve the value of abstraction? Because, abstraction is powerful tool which enables us to make complex tasks simpler. And no less complex is system programming. But before discussing the details of the power of the value of abstraction, I would like to quote a discovery from a psychological study experiment. The aim of the experiment was to know how much birds are able to deal with numbers. The result of the experiment is summarized as follows: "When crows were gathered in a clearing in some woods, one man entered the clearing and walked on into the woods. As soon as he appeared, the crows hid in the treetops; they would not come out until the man returned and left the area. Then three men entered; again the crows hid. This time only two of the men left, and the crows did not come out; they knew that one still remained. But when five men came and then four left, the crows came out apparently confident that the danger was now over. These birds, it seems, could discriminate and deal with only three units; beyond that, the units blurred or merged in their consciousness. The crow arithmetic, in effect, would be: 1, 2, 3, many." Without the help of the abstract concepts "number" and "counting", our mind is also capable of dealing with limited number of units, probably not more than ten units. Nevertheless, we are able to surmount this limitation and we can deal with virtually infinite number of things. How is this possible? We possess the power of abstraction: the process of directing our attention to the feature/features of an entity given in direct experience, consider them in isolation, abstracting them, and ignoring the other features simultaneously given. When we apply the same process to mental entities, it becomes abstraction from abstraction. And there is no limit to the kind of abstraction that we can form. It is our ability to regard an entity as a separate member of group of similar members that gives rise to the formation of the concept of "unit" which in turn helps us form the abstract concept "number" and thus be able to count infinitely. This is the distinctive method of cognition that separates human beings from the rest of animals. That we human beings deal with abstractions in every aspect of our day to day activities is so natural and so automatic to the extent that the question of what and how we are doing it never
occurs to us. It is not the case that sometimes it occurs to people that they are doing some abstraction and ask: "what is abstraction? And how are we doing it?" and then finding the answer for such questions is difficult, they discard the question as irrelevant, and continue doing abstraction. Of course some people do that. But to many people, it has never occurred to their mind the idea that they are using abstraction, in the same manner that a horse grazing grass in the field, never occurs to it that it is grazing. It simply goes on grazing as long as there is something to graze. Ironically, it was because few men had utilized the power of abstraction that helped man to come out of his cave and enjoy food, shelter, clothe and also art. It was because, few men had consciously chosen to employ the power of abstraction in some fields, that the slow, laborious, and wearisome progress of human civilization had been transformed, once and for all, in the last three to four hundred years. There are many examples to mention, but I chose two instances from the field of science and technology that will shed light to what we are talking about- the discovery of calculus and the conception of computers. Discovery of Calculus Newton utilized two concepts, change and approximation, to find and devise the system of calculus. People have known and used these two concepts since thousands of years before him. But no one had ever thought for a split second, that these two concepts are impregnated with the seeds of a revolutionary mathematical method that could transform science thousand folds unprecedentedly. The genius of Newton did. And that would open a new vista of civilization that could change human history for ever. What Newton did was that he observed that some things undergo change in which the rate of the change can be calculated accurately. However, often times, a lot of other things do undergo change with some kind of irregularity which is difficult to determine the rate of the change. He asked one question: Can I approximate the irregular rate of changes by those which I can determine accurately so that I can determine the irregular rate of changes in exact measure? and the question of how far we can take the degree of approximation, brought about the concept of limit. The rest was detail. The conception of Computers Ada Lovelace utilized the connection between the concepts of state of a machine and numbers. Of course, we can say people had known what relationship numbers have with the state of things particularly pebbles since the invention of Abacus, back in the ancient times. but it took the genius of Ada, thousands of years later, to recognize the capability of Charles Babbages analytic engine, to encode numbers in terms of states, enables human beings to program the machine to do a lot more things than mere calculation and number-crunching. That was the birth of modern computers and computer science! Having seen the way abstraction has played a role in transforming our knowledge and way of living, in general, lets now turn our attention to that of applying or tailoring, the value of
abstraction to our own environment- in what manner are we going to benefit from the power of abstraction- with regard to our own context (as programmers)?
Conclusion
Throughout human history, there has never been scarcity of resources. There was only scarcity of men who use the power of their mind consciously to bring about more resources.