What is abstraction?
Definition
Abstraction is the process of generalising complex events in the real world to the concepts that underly them, tucking away the complexities of the situation.
Explanation
This may sound a little, well...abstract, but you'll probably be surprised how often you rely on abstracting things away in your life.
Academics in particular have a bad reputation for relying on abstract concepts to explain their point, rather than communicating with concrete details. But the process of abstraction can help us understand the real world by hiding the confusing details, leaving us with general concepts that hold true across domains and can be applied in different situations.
The idea of abstraction is used heavily in computer science, so we'll start with the no-math explanation there, and then show how examples of how this concept applies elsewhere in your life.
Examples of abstraction
The concept of abstraction is key to making computers work. Computers only understand 1s and 0s, otherwise known as binary or machine code. It would be very time-consuming if a programmer who wanted to programme a computer to play tetris, had to individually write out all the 1s and 0s themselves.
To avoid all that work, programmers develop higher-level languages to control the machine code. Those 1s and 0s are bound up in the syntax of a higher level programming language that is built on top of this machine code.
Python, PHP and Java are all examples of a particular type of higher level programming language called an object-oriented programming language. A human programmer can write their software in these easier-to-use languages, and then the computer converts the script into something it understands - the machine code - via an interpreter or compiler. Everybody wins.
Chess
No two chess games are the same in terms of the exact moves that are played, yet there are some general ideas that can be useful in different scenarios. 'Control the centre of the board', 'protect the Queen', and 'keep your pieces away from the edges' are all abstract ideas rather than particular moves per se.
These in turn can be abstracted away into ideas like 'creating a positional advantage' and 'keeping pieces active'. Can you see how 'control the centre of the board' and 'keep pieces away from the edges' are a subclass of 'creating a positional advantage'? They each have common features that we have unified into one abstract idea, moving up one level of abstraction.
At the lowest level, the implementation details - the sequence of individual pieces moved on the board - are different for each chess game, but the abstract ideas remain the same. Algorithms built upon algorithms.
Abstraction in real life
If you're looking up a synonym in a thesaurus, you probably have an abstract notion of the idea you want to convey, and you begin searching for the right word to match your abstract idea.
You can drive a car without knowing how the internal combustion engine works, you can walk to the shops without knowing how your brain stem is controlling your walking or breathing rate, and you can pay for your groceries using our universal abstraction of ‘value’: money.
In all of these situations, the overwhelming complexity is hidden from view so that we can actually get something done.
Also check out:
What is Abstraction?, Less Wrong