Abstraction

Abstraction is a term used in Computer Science and defined as the process of removing unnecessary details from a problem. It is therefore a type of simplification technique where we concern ourselves with the external logic and behaviour, ignoring its internal details. In computing, the application of abstraction tools allows us to view complex systems in a simpler manner that would otherwise be overwhelming if viewed in entirety. It allows us to draw our attention to the more pertinent principle of how one sub-system interacts externally with another. It therefore makes it easier to comprehend a part of the system that is relevant to our specific task.

In computing, logic gate symbols such as NAND, NOR, OR, XOR, can be thought of as abstraction tools because a computer designer uses only the symbols in his circuit, and ignores their electronic construction. Therefore, these symbols provide a layer of abstraction as they shield the designer from unnecessary detail such as transistor biasing and voltage levels. The only detail the designer concerns himself with is with the external logical behaviour.

Another example is a computer language, where humans provide commands at a higher level of abstraction, which is easier to understand. However, we leave the precise details such as the implementation of the high-level commands to the compiler. The compiler therefore provides a layer of abstraction because it hides the unnecessary details from the programmer.

Programmers usually do not concern themselves with RAM chip construction, refresh signals, or how transistor circuits electronically store the data. This is because they use arrays and variables, which are abstraction tools that hide the unnecessary details of data storage. For example, variable assignment is a tool that allows programmers to apply abstraction. In a computer program, they may declare the following.

PI=3.1415

This allows them to use PI in their algorithms without having to express the actual number, or state where to store it electronically.

The central meaning to abstraction is therefore information hiding, when we convert any complex system into a black box, and remain concerned only with its external behaviour, completely ignoring its internal details. The idea of abstraction is extremely important in Computer Science because it leads to concepts such as object-oriented programming.