An Appreciation of Abstraction
Abstraction in Python
It has only been in recent months that I started to learn about the concept of abstraction. My desire to understand abstraction came very much out of necessity. One of the challenges in learning a new technical skill is the terminology that accompanies it. When I started to learn Python earlier this year I came across new terms such as refactor, recursion, inheritance, object oriented programming, functional programming, and the the aforementioned abstraction. I had heard the concept of abstraction being banded about in the arts and humanities but I never really gave it too much thought. When I would sometimes look at abstract art I wasn't aware of design principles or how a cultural narrative could be woven into a work of art.
What is Abstraction?
Abstraction is a process of removing unnecessary detail in order to shine a light on the bigger picture behind the detail. Abstraction in programming allows higher level ideas to be discussed without getting bogged down in the necessary detail that accompanies the implementation of an idea.
Abstraction as a form of Minimalism
Abstraction helps to remove the white noise and I see it as a form of minimalism. Earlier this year I was willing to entertain the idea of minimalism. I liked how my newly decluttered house seemed to be a reflection of a decluttered mind. I looked past minimalism taken to it's extreme and took the underlying principles that it is built on. I see abstraction in a similar vein, without abstraction my thinking would be bogged down in the minutia and the bigger picture would not seem as accessible to me as it truly is.
My interpretation of Abstraction
I have been using abstraction for many years now without even realising it was a tool in my toolkit. When I decided to learn Spanish and Italian in 2010 I needed to use abstraction to create an optimised learning plan. Abstraction allowed me to see the similar word structure order in the latin families. It allowed me to avoid getting bogged down in the exceptions between the languages and freed me to focus on the similarities. Abstraction created the bridge with which Italian and Spanish became accesible to me. Abstraction was the difference between spending years learning a language and spending a couple of months. Now that it is a clearly defined tool I am now free to use it more often with less thought.