The concept of abstraction was introduced in the last section to aid in the discussion of planning the solution to problems. Abstractions are central to the discipline of computing, and indeed to scholarly studies as a whole. They also play an important role in daily life. The purpose of this section is to discuss the concept of abstraction in detail, define the term precisely, and outline its uses in a number of fields including computing science.
The Western Judeo-Christian religious tradition holds that there is a God capable of holding in his thoughts all the details of the fine structure of the universe simultaneously. This knowledge, expressed as creative energy, brought the universe into being in the first place, and even now holds it together. Of course, not all moderns agree that God exists, much less is omniscient and all-powerful in this sense. At the same time, no one seriously believes it possible for any human being to achieve such universal awareness. Even mundane and ordinary objects (a chair, a tree, a cow, one human cell) are sufficiently complex to make such comprehension impossible. It has been centuries since a single human being could have even a passing acquaintance with all available scholarly knowledge. Today, it is not even possible for one person to learn the whole of any one discipline.
Fortunately, it is not necessary to have exhaustive knowledge about something in order to make appropriate use of it. Consider the automobile: One can enjoy riding in a car without knowing how to drive. It is not necessary to be able to build an automobile in order to drive one and not required that its builders be able to design one. The designers need not be able to produce the metals and plastics from which it is made. None of these must know how to refine the petroleum products required to run it. Road designers, builders, and mechanics are also specialists, and so are legislators, sales people, auto company executives, and parts manufacturers.
Each has different priorities for what must be known about an automobile. Each has an essential subset or extract of detail taken from all that is available to know about the subject. Each focuses only on the essentials to a particular role, and needs only a cursory acquaintance with details important to others.
The same is true in science. There, it is clearly understood that no object can be comprehended in every detail down to the sub-atomic. The concentration on essentials and the exclusion of details makes scientific understanding manageable, and even possible. Such a technique gives a researcher an intellectual handle on the subject that would be impossible if knowing everything were deemed to be the only adequate kind of knowledge. It is therefore possible to conceive of things by knowing an appropriate and sufficient subset of their properties. In the light of these examples, it is possible to offer the following definition:
One aspect of abstraction is deciding which are the sufficient essential properties to the task at hand, and which are details that can be ignored. This very much depends on the community within which the one doing the abstraction works, for to be useful, an abstraction must not only be meaningful, that meaning must also be communicated to others in the field. (If only one person understands something, and cannot transmit its essence to another's understanding, the abstraction is useless.) Therefore, the kinds of abstractions that come to be widely accepted depend on the level of knowledge and education of the community for which they are intended. For instance, a solar-system model for explaining atomic structure is sufficient for those who are not equipped to grasp the finer points of probability and quantum mechanics, but quite inadequate for researchers at the frontier of knowledge in the field. Likewise, there are a variety of models for explaining the workings of a modern economy, and these vary in complexity and usefulness depending on whose understanding is being addressed. The needs of most citizens are quite different from those of a politician trying to make a decision, or of a professional economist trying to provide the information for the decision.
This process of attempting to grasp a myriad of detail by the abstraction of broad outlines or essentials is not confined to the sciences or even to the academic disciplines that attempt to use the scientific method. Numerous examples are possible from all fields:
Thus, far from being the province of academics alone, abstraction is a process fundamental to all human activity. The totality of the abstractions people use is an important measure of the complexity of their society. The most sophisticated abstractions are those that allow people to perform complex tasks without much thought. Most industrial machines (and even bicycles) have to be operated abstractly--at a level of unconscious skill, for so long as the details must still be thought about, the task cannot be performed efficiently, if at all. (If you stop to think about what you are doing, you are likely to fall off your bicycle.)
While one could criticize the process of abstraction over many levels as removing people from "real" understanding, it is precisely such distancing that gives abstractions their power. It is not necessary to understand how cheese is made in order to enjoy it. Indeed, abstractions are the most useful when they are far removed from the thing being abstracted, when they have been refined to the point that the people who need them can usefully employ them in an automatic fashion.
So important and pervasive is the process of abstraction that it has a variety of specialized names arising from different disciplines and from the terminology adopted by the various people who have considered various aspects of this activity.
A digest is a summary of that part of the material deemed by the one making the digest to be the most essential. It is an attempt to filter the data, removing the non-essential, redundant, or irrelevant. For instance, the data reported from experiments are nearly always digested from the entire set obtained; this is necessary for brevity and clarity. Digests are useful as quick reference cards for the operation of computer programs, or complex equipment.
A model is a representation of something in a more concrete or accessible form than the original. It may be also used of a scale model for some proposed project. The term conveys the idea of explaining or showing by means of an analogy to something else that is supposedly better understood. (I.e. for which there are believed to be adequate abstractions already) The term modelling may be used by scientists to describe parts of the process of theory formation. Data from the real world is modelled in some form that can be stored and manipulated in a computer.
Theory formation is an attempt to abstract into some simple statement the workings of the subject under study. This term tends to be less concrete than modelling, for a theory is an attempt to define rather than to model, though in practice the distinction is often a fine one.
A paradigm is also a way of looking at a subject by way of analogy or example. It too is a model, but this term tends to be used in a broader sense to describe abstractions of considerable importance or size (a collection of related abstractions.) One example is the evolutionary paradigm, within which are many models for origins. Another is that of the Marxist "class struggle," to which paradigm all Marxist theories of political science and economics must be bent.
A meme is a (perhaps indirectly perceived) transmittable idea that is the basis of a social movement or a political philosophy. Its spread through a population can be studied in a manner similar to that of an infection, because it is the nature of a meme to induce the desire to proselytize. A meme can be benevolent (e.g., the ideals of democracy), fatal to its holders (e.g. belief in ritual suicide) or fatal to others (e.g., Naziism and Stalinism).
A world view is a complete set of philosophic or religious presuppositions within which paradigms and individual abstractions are formed. It constitutes the total way in which a person does abstractions (thinks) about the real world, and finds its expression within the various communities of which the person is a member. It encompasses the complete set of memes that a person possesses and spreads. One may speak, for example, of a scientific world view, of a Christian one, of a liberal one, or of an American one. Within each of these there exist numerous specific views of parts of the world. World views act on the individual both consciously and unconsciously. For example, a computer scientist is influenced in the choice of problems to work on, the means of seeking solutions, and the ethics of presenting those solutions to employers and the marketplace by some world view. Indeed, all of his or her professional actions are conducted within and must be evaluated in the context of a world view.
The mention of an abstraction term, such as the title of a theory or the name of a world view system, evokes in the hearer a vision of a some set of beliefs, views, or typical activities. That evoked image will invariably be to some degree inadequate or incorrect, especially if the hearer is not a part of the community that devised or is described by the abstraction. When such a misconception takes place, it is often because the hearer holds to some popularly believed ideas about the group in question, in which case the hearer's own (mistaken) abstraction is called a stereotype.
Plants, and animals, do not make abstractions; this is a uniquely human activity. Neither do computing machines originate abstractions, they are simply tools for the systematic examination or expression of human ones. Abstractions make thinking and communicating possible and allow people to understand and use the world and its processes, whether by science, computing machines, or otherwise. They make it possible to make, to build, to specialize and to cooperate. They are therefore the essential building blocks, not of science alone, but of human civilization itself. This section concludes with an attempt to abstract itself:
It is important to keep in mind, however, that useful abstractions must retain their essential connectedness to the real world. There may be many mental steps removed, but those steps should be clear and easily repeated or explained--otherwise the abstraction loses touch with reality and becomes useless.
Computers are tools for problem solving that enable people to hide the detail of data manipulation and calculations with a variety of abstractions. For instance, a word processor embodies a way of thinking of and working with documents that is quite different that if they were expressed only on paper. The graphical interface found on modern computers allows the user to perform very complicated tasks with a minimum of effort (at a greater degree of abstraction) by comparison with the verbal interface found on more old-fashioned machines. One need not know how to make or even to program a computer in order to make productive use of it for such tasks as word processing in a graphical context. However, this text is about programming computers, and it is useful to observe that:
- A computer program is an abstraction of a problem into a specially devised symbolic language (notation) for the purpose of solving the problem.
- A language (computing notation) is an abstraction designed for the purpose of writing and communicating other abstractions (programs.) It hides the details of the low-level machine language from the programs. It could be termed a meta-abstraction.
It is also important to note that within the discipline of programming itself, the important abstractions (about which there will be much more to say) can be grouped into two categories:
1. Data abstractions: These are the forms in which entities from the "real world" are represented in some computational notation. There are:
a. data representation abstractions (data structures) and
b. data manipulation abstractions (expression structures)
2. Machine abstractions: These are the ways in which the construction and operation of the computational process are represented. These pertain to:
a. the computing apparatus itself (machine structures) and
b. the instruction and manipulation of the machine (program structures.)
Of the four structure categories, this book is concerned with all but the computing apparatus itself, which category will receive only the brief treatment in this chapter. The other three (data, expression, and program structures) make up the main subject matter of any course in the art and science of writing programs. They will also be introduced in the remaining sections of this chapter, and will be specifically referred to in the programming goals for each subsequent chapter. Note that, depending on the depth of abstraction, these four may variously refer to single data items, simple expressions and instructions, entire data collections, complex formulas, whole programs, or something between.