Reflections On Abstraction: Philosophy, Art, and Computing

This post might be a little deviant from my usual tech-focused blogging, but I think it's still relevant to tech—especially the abstraction section of my previous post.

The concept of abstraction is all around us. We may not actively think about it, but if we put on our analytical lens for a day, we will be surprised by how much we deploy this concept in our thought, craft, and technology.

I define abstraction as the process of hiding the details or focusing on what really matters. Here, I will present a collection of reflections and examples of fields that use abstractions in multiple similar yet seemingly different ways.

Philosophy

Abstraction is defined as the thought process wherein ideas are distanced from objects. Abstract is the opposite of concrete. If we think of a physical object like a book or chair, it is concrete. If we think of the concept of writing, this is abstract.

Let's take, for example, the common phrase "A cat is on a mat." If I asked you to imagine that, you would probably imagine any random cat you could remember sitting on any random mat you can remember. And that is what I usually want to happen. In most cases, the breed of the cat, and the material of the mat, for example, are negligible details of the idea I am trying to convey or discuss.

This nature of abstraction is very powerful. It allows us to think of the same concept but with different mental depictions of it. What may make you want to say it's the same but different.

In logic, this is utilized to build formal systems. A formal system builds a theoretical organization of objects based on implicit relationships using a set of rules. For example, in number systems, sets are used to categorize values, and rules are used to define how values are constructed and manipulated.

Art

First, we need to distinguish between abstraction in art and abstract art. Abstract art is a genre of art that heavily utilizes abstraction. Think of abstraction in art as a scale rather than a binary categorization. The more abstract a piece, the less it resembles the physical world. The more abstract a piece, the less guided the viewer in understanding it. It leaves a lot of space for the viewer to interpret it on their own. And this is a critical component of abstract art.

But that does not mean you have to go all the way. Many paintings and sculptures try to resemble the essence of the real world but skip the parts that do not convey the scene or the emotions that the artist intends.

Computing

Abstraction is one of the most fundamental concepts in computer science, and it can be divided into two broad categories. Abstracting computer concepts and abstracting business concepts. To abstract a computer concept is to hide the details of its inner workings and provide an interface to interact with it. A very common example is predicate abstraction (borrowed from Logic). You want to make, let's say, a sorting algorithm that can sort any arbitrary set of elements. And how can you make such a magical algorithm that does not know the type of its input beforehand? You make the condition on which you compare the elements in the input as part of the input. In other words, if you want to sort a set of integers in ascending order, you pass your integers to this algorithm and give it the sorting operator (the < operator in this case). This way, we abstracted the details of sorting from the details of comparing the values.

On the other hand, business abstraction encompasses almost all of our product work that the end customer interacts with. When building any sort of a product or a feature, you are abstracting something. For example, let's say you're adding a presets feature to an audio mixer. If you press, let's say, the chamber preset, the mixer will have the proper echo, reverb, and gain levels set to simulate a chamber effect. By you adding this feature, you are abstracting the details of configuring the mixer.

How does that tie together?

As we saw, the idea of hiding details and focusing on the essential concept is something that happens all the time around us. It is the foundation of fields like philosophy, art, logic, and computing. Actively looking would show us countless examples in our everyday lives.

Understanding which level of abstraction we are working with and thinking accordingly is a skill one needs to develop and master. Mastering this skill would allow us to become more productive and more innovative.

Show Comments