Let’s drop down a rung and make abstraction concrete.
You’re walking across a street. This is a photograph of what you see.
This is your context. What is its abstraction? There’s no way to know because you don’t know your purpose here, your question.
You ask yourself, “What colors do I see?” Now you have a question and you’re on the ladder of abstraction.
You start speaking very informally about the context, perhaps comparing one shade of green to another. You ask yourself, “What’s important here?” and decide it doesn’t matter whether the green thing is a car or a tree. All that matters is its greenness. This is abstraction. You’re removing aspects of the context that are inconsequential to your question.
Now you have to decide how to represent the consequential aspects. You could represent them with words:
A lot of grays on the street and sidewalk. Light blue in the sky. Red on the curb. Different shades of green in the trees and on a car.
Different representations are more useful for different purposes. This representation might work if you were writing some prose about the colors. If you wanted a more precise representation, though, you might turn to a histogram of the red, green, and blue values.
Now if the question changes, the entire ladder changes. If your question is, instead, “How do I get home from here?” different predictions are useful, different information becomes consequential, and the representations of that information will look nothing like the histogram we used to examine color.
A useful abstraction of this scene would be an overhead view of the terrain.
Of course, we only care all that much about the roads, not the trees or houses in between them, so we abstract all that away.
If our purpose here is to create some kind of enormous geolocation system, we don’t really care whether or not a road curves. We just care whether or not the road connects one intersection to another, or, abstracting those terms a little, we care whether or not an edge connects one vertex to another in a graph:
An array would be a representation of the graph that’s friendly to manipulation by a computer, though as a human, I miss a lot of the visual information we’ve abstracted away.
Great. But not perfect. This representation will only tell us whether or not it’s possible to get from one point to another â€”Â whether a route exists. If we want to find the shortest route, we add another useful variable, “abstracting over distance,” at it’s said.
If we want to find the fastest route, we’ll also need to abstract over the speed limits of each of those edges.
That’s a concrete example of the process and ladder of abstraction. The adjectives “concrete” and “abstract” just aren’t all that useful here. Everything is concrete if you think about the rungs above it and everything is abstract when you think about the rungs below it. The photograph that kicks off the post is more concrete than everything that comes after it but it’s also more abstract than the full-bleed, full-audio, moving panorama you experienced as you walked across the street. What matters isn’t the rung itself but how deftly you can move between all the rungs above and below you on the ladder of abstraction.
Checking For Understanding: Give an example of abstraction as it exists in your own life, in the problems you or other people try to solve. Two examples to kick off our list:
- Airplanes landing at night don’t care about the color of the tarmac or the grass on either side. All they care about are the margins of the landing strip, which are therefore lit up by lights.
- Google’s self-driving cars abstract away a metric ton of data that your senses usually take in while driving â€” the color of the sky, the music in the car, the humidity outside, etc. It also retains a metric ton of data, of course, and the quality of Google’s abstraction of the roadway will determine whether these things will kill us or let us (once again!) text while driving.
Should I call or text? If the message is short and quick, I could just shoot a text, but what is my data plan like, and are there financial considerations? Or I could call, and risk a phone conversation which I perhaps donâ€™t have the time or want for at this point in my life? How important is the message? Or will I possibly see this person soon anyway and itâ€™s all a moot point? Or maybe I could just tweet it? But how sensitive is the message?
One way I can see abstractions is to think of domains where Iâ€™m not an expert. Is it an abstraction when two kids who are really into video gaming communicate their solutions to challenges in terms of button pushes rather than the story on the screen? As in, Iâ€™m likely to say, â€œGee, I wish I could make Mario jump up and do a flip in the air to get that gold coin without being hit by the hammer.â€ Whereas a Mario expert is likely to tell a fellow expert, â€œThat levelâ€™s easy. Itâ€™s just right-right-A-leftâ€ (or whatever).
When looking at my email inbox, I disregard most of the information presented there. During the busy workday I “see” only the messages that are highlighted as unread and which were sent to me individually rather than schoolwide. This level of abstraction sometimes presents problems, so if I’ve read an important message but haven’t yet resolved it, I have to star it AND mark it as unread, tricking it back into the category that registers.
One thing a great context / question also gives you is the experience of figuring out what information is important and what sort of abstraction is most useful for extracting and using the right information thoughtfully. And thatâ€™s a skill a lot more adults will use than factoring.
Richard Bitgood, via e-mail:
Transformations is one step higher than functions because it is the abstraction of our abstractions.
2012 Aug 26. Of course, money is an abstraction of the value we provide society.