posted 19 years ago
A good off-the-cuff definition of abstraction is "selective ignorance". It basically means selecting specific parts of a particular thing to pay attention to. For instance, let's say that you own an ice cream shop and you hire a new employee to scoop ice cream and he asks, "Can I put mint chocolate chip into a cup if a customer wants it? What about putting vanilla into a sugar cone? And what about waffle cones?"
You could go through each flavor and each container with him, and draw a map of each possible combination of flavors of ice cream to container type. Or, you could selectively pick things to ignore about the flavors of ice cream (specifically, the flavor itself, just paying attention to the fact that it's ice cream) and the different kinds of containers (specifically, whether it's made out of edible waffle-pressed material, styrofoam, etc).
It's much easier to introduce an abstraction and simply say, "You can put any ice cream into any of the containers." That's abstraction.
You have to be careful about where you apply abstraction. For instance, let's say that you have a policy at your creamery that you don't allow customers to order chocolate toppings on any ice cream flavor that contains chocolate already (like mint chocolate chip or cookie dough chocolate chip--it's too much chocolate and customers invariably get angry and try to return it b/c it puts them into choco-overload). Yes this is an arbitrary example (but let's selectively ignore the fact that it's contrived...as if choco-overload is possible, right?). In this case, when your new employee asks about toppings, you can't simply refer to them as "toppings". You have to refer to them as "chocolate toppings" and "non-chocolate toppings". There's no such thing as a "non-chocolate topping". There *is* such a thing as raspberry sauce, peanuts, etc. But if I ask you to think of a "non-chocolate topping" without picturing a *specific* non-chocolate topping, you can't do it. So we can arbitrarily create abstractions that fit the particular features of the problem space we're trying to address...I just made up the distinction between chocolate toppings and non-chocolate toppings because it happens to allow us to ignore just the right things about the toppings we're dealing with, while at the same time paying attention to just the right things we're concerned about.
It's like trying to think of a color without thinking of a *particular* color, or a dog without picturing a dog with specific features that might not necessarily be present on all dogs. Abstractions don't really exist, is what I'm getting it. They're useful constructions for allowing us to divide up the world into features we care about for a particular purpose and ignore the ones we don't care about for the purpose at hand. That doesn't mean those ignored features don't actually exist, it just means that they make no difference to the thing we're trying to accomplish at the moment. Just like the distinction between peanuts and almonds (when it comes to topping a scoop of ice cream) is unimportant. The distinction between chocolate sauce and almonds, though, is very important because it means we have to evaluate whether the ice cream flavor can pair with that topping. Also note that these abstractions tend to happen in groups--it's useful also to create another abstraction to help us with this problem: chocolate-containing ice creams vs ice cream flavors that do not contain chocolate.
I'm hungry.
sev
[ May 31, 2004: Message edited by: sever oon ]