Abstraction

Abstraction is largely the story of computing. Software developers have been building abstraction upon abstraction for decades now. Lev Manovich (of the CUNY Graduate Center) captured this clearly in his book Software Takes Command, and my thinking about this topic is influenced by his book. Abstraction makes life easier by simplifying tasks and making complex processes easily understandable to humans.

For example, in many programming languages, tasks can be written as functions. Functions allow us to abstract away complexity. Because complexity can be hidden away inside a function, someone using the function often does not necessarily need to understand its inner workings; for some purposes, they just need to know what it does and how to run it. Related functions are often bundled into libraries, giving programmers a ready-made toolkit of abstractions that are relevant to the specific task they are working on.

The basic building blocks of programming languages, such as functions, objects, and so on, are powerful tools for making and using abstractions. These abstractions allow us to greatly simplify our work, because we can let the abstractions do the heavy conceptual and computational lifting. Crucially, we have access not only to the abstractions that we’ve built ourselves, but also to many, many abstractions made by others. We build upon their work as well as our own. To borrow from a popular saying about turtles, computing is abstraction all the way down.

This entry was posted in software. Bookmark the permalink. Both comments and trackbacks are currently closed.
  • Subscribe to this blog

Skip to toolbar