Ladybirds, Firebirds, and Alfred Hitchcock's "The Birds"
I'm reading a book right now by George Lakoff called Women, Fire and Dangerous Things: What Categories Reveal about the Mind. It's about, well, "what categories reveal about the mind." (As a side note, have you even noticed how the subtitle of a book is often much more informative as to the book's actual content than the title proper? As a cataloger, I notice this a lot.) Lakoff touches on many different ideas in the book, but two I find very interesting are the ideas of "graded categories" and "prototypes."
A graded category is a category that's not defined in a binary fashion (you're in or you're out), but along a spectrum or a range. "Tall" is a good example. There are some people who are undisputably "tall" and there are some people who are undisputably not. However, if you had to pick some cutoff point between "tall" and "not tall," any single point would be unavoidably arbitrary. (This is not to say that height cutoffs don't exist in various specific circumstances — you can be too short to ride a roller coaster and too tall to be a flight attendant.)
A binary category is a category where you're either in or you're out — it's not relative and there aren't an infinite number of gradations. "Bird" is a good example. There's a clear set of requirements for an object to qualify as a "bird," and it's pretty easy to draw a clear line between "bird" and "not bird." (I concede that it's still possible to come up with examples — hypothetical or otherwise — which would still straddle that line. However, you have to admit that most things in this world are pretty clearly in one camp or the other.)
So, that's graded vs. binary categories, in a nutshell. Now we move on to prototypes.
A prototype is the best example of a category, in terms of being most representative. With a graded category, prototypes are pretty easy to understand: They're the examples that everyone can agree on, something that's really tall or really blue or really funny.
Prototypes don't seem to make sense when it comes to binary categories, though. What would make something really a bird or really a U.S. President or really an object-oriented programming language?
Here's the weird thing, though: Even when it comes to binary categories, prototypes still exist.
When someone says "bird" you're more likely to picture some species than others. The same is true for illustrations in children's books or dictionaries. Even though we can all agree that a flamingo is as much a bird as a robin, the latter is more prototypical when it comes to our mental conception of the category.
So, it's all well and good for me to say "When I picture a generic bird, I think of a robin," but the cool thing is that you can actually make an empirical measurement of prototypicality. Sit someone down at a computer and tell them that words will flash on the screen, and they need to hit one key if the thing is a bird and another key if it's not (maybe there could be a third key if they don't know). If you measure the response time for each word, the more prototypical categories will have faster response times than the non-prototypical members. (I wonder if there's an inverse phenomenon with things that aren't members of the set — would it take longer to determine that something isn't a bird if it's still sort of like a bird?)
There are a lot of factors which contribute to prototypicality. One is personal experience (common birds vs. rare ones). Another is having secondary characteristics which are seen as typical to the set. (E.g., flying birds are seen as more prototypical than flightless ones. Also, it's common for a bird to be described as flightless, but rare for it to be described as flying, because that feature is assumed unless specifically negated.)
Anyway, I'd love it if any of my awesome programmer friends wants to set up a keystroke experiment for me. Prototype sets are typically mapped radially, with more prototypical members in the center. I guess the "yes" response time would go to infinity as it approached the yes/no border and the "no" response time should start at infinity and then go to whatever the minimum response time turns out to be. Also, people are generally faster at determining that something does belong in a set than they are at ruling it out, for what it's worth.