You may have heard the term “abstraction” used before in the context of computer science. Abstraction is defined as the act of simplifying a system in order to reduce complexity and allow efficient design and implementation. Although this definition is complex itself, we can utilize the very concept of abstraction to break it down into chunks so we can understand it better. Let’s dive deeper into this fascinating concept: why is abstraction important and how can we all benefit from using it?
Let’s start with a simple example. When you use a pen, all you need to do is click it, bring it to the paper, and start writing. You don’t need to understand how the retracting mechanism works, what the ink is made of, or how the ballpoint design brings the ink out. You’re only concerned with what you’re writing.
Abstraction is how the manufacturer of the pen made it so you don’t have to worry about any of the pen’s inner workings. Even though a pen is moderately complex in its function, everyone knows how to use one because it is simple on the outside. If your pen broke and you opened it up in order to fix it, however, you would see all the springs, cartridges, and screws for the first time. This is the equivalent to peeking under the hood of something as straightforward, and at the same time, as complex as the Google search engine.
At the highest level of abstraction, you type what you want to search for into the rectangle in the middle of the screen and click Search. Go down one level, and you may start to see how the engine gets you the most relevant results and sorts them based on website popularity. Keep going down and you will eventually end up with the insanely complex code that crawls 25 billion pages per day, analyzing advertising patterns and following hyperlinks. Even further is pure compiled binary code that computers can read, with instructions on which values to store in which memory cells. At the very bottom is intricate circuitry, without which none of the above would be possible. Each level of complexity is hidden to the level above it, but dependent on the one below it. Binary depends on the computer’s circuits, but it does not matter how the circuits are working, as long they are working. Coding in a high level language like Python depends on compiling into binary, but it does not matter how the compiler works, as long as the code is compiled. Running a program depends on the code written for it, but it does not matter which language it was written in, as long as it works. This process is repeated over and over again until it reaches one of the simplest levels of complexity that can be reached – typing your search term and getting your results.
Understanding abstraction is an important skill that can be applied in several fields other than computer science, such as biology, art, and business, to break very complex processes down to a series of simpler steps that all rely on each other to function. This makes the process much easier to understand for both the creator and the user. Abstraction has allowed for some of humanity’s greatest achievements and innovations; imagine what it could do for you.