Thinking abstractly



All timestamps are based on your local time of:

Posted by: stak
Tags: abstraction
Posted on: 2023-06-03 09:45:06

Ever since I read The Information I've been noodling on the idea of abstraction. By this I'm specifically referring to the software engineering concept, where you have a bunch of complexity that you hide behind a simplified interface at different layer of abstraction, usually as a means of managing complexity.

That's a lot of words but it's something we do and use literally all the time. Here's a simple everyday example: say there's an apple in a cupboard and you want it but can't get it yourself, so you ask somebody else: "Would you please bring me the apple in the cupboard". This is an instruction at a pretty high level of abstraction.

You could accomplish the same goal using lower-level instructions, such as "Would you please walk over to the cupboard, open it, take out the apple, close the cupboard, walk over to me, and put the apple in my hand." Whereas the high level instruction was more goal-oriented, we can think of this as more action-oriented.

And you could imagine going into even lower-level abstractions by describing how to e.g. contract specific muscles or activate specific joints in your body to accomplish those actions. This might be considered a mechanism-oriented level of abstraction.

A couple of interesting notes on this.

First, the concept of "high" and "low" level abstractions is relative. In the example above, an even higher level abstraction would be, for example, "I want the apple to be in my hand." This might be considered a declarative- or state-oriented level of abstraction. That being said, this is still a very wishy-washy description of a level of abstraction, and I would love to see a more rigorous/numerical definition of it.

Second, given the nature of the problem, some abstractions are more appropriate than others. I would argue that solving problems at the correct level of abstraction is the best way to ensure the problems "stay solved" in the sense that the solutions don't need to be revisited or tweaked over time. I have found this time and again in the domain of software engineering and believe it applies in other domains as well. I'm specifically thinking of the way laws are formulated in response to problems, but often have unintended consequences because they are targeting the wrong level of abstraction and don't generalize well to new situations.

Finally, I believe that the concept of abstraction is severely under-emphasized and under-studied. Finding a way to measure the concept of abstraction numerically, the way Shannon did with the concept of "information" will unlock whole new fields of science and research. Bring able to quickly find the right level of abstraction at which to solve societal problems means that we can save tremendous amounts of time and pain, so the potential upside is huge.

[ Add a new comment ]

 
 
(c) Kartikaya Gupta, 2004-2024. User comments owned by their respective posters. All rights reserved.
You are accessing this website via IPv4. Consider upgrading to IPv6!