Monday, January 28, 2008

The Mystical "AS-A" relationship

It's fair to say that object-oriented languages presuppose metaphysical realism; that is, a world composed with objects, properties, and relations, independent of any understanding. OO-goodness instantly provides the IS-A relationship (by inheritance), and the HAS-A relationship (an object with other objects as properties). It does not, however, provide the much needed "AS-A" relationship. This is to me, the single greatest reason for the failure of AI and Cognitive Science.

There are so many different examples of seeing one thing in terms of others; just use language and they will come up by the thousands. To take one example I've mentioned earlier:

Take the iPod mp3 player--it is a hit product that "saved Apple Computer". On the day the first iPod was announced, people did not have the category "iPod" in their minds, so they had to resort to previous categories... making all kinds of analogies you can imagine. In fact, I decided to collect some analogies on the iPod, to use someday in a paper in Marketing. Here are some [taken from real people debating on the web]:

THE iPod can be seen...
"as a mobile phone" [future prospect]
"as a canvas for expression"
"as a bootable drive"
"as a security threat"
[video iPod] "as a marketing tool"
"as a data repository"
"as a unit of measure" [believe it or not: in terms of money, height, and so on; e.g., how many iPods to circle the Earth?]
"as key for security"
"as a platform" [such as the Solaris platform]
"as a legislative force"
"as an Ebook"
"as a presentation device"
"as a business tool"
"as a phone phreaking device"
"as a portable DVD player"
"as a learning tool"

Crazy, right? But that's perception at it's core... understanding something in terms of other, better understood things.
I think that we have nailed this one--though I can't disclose the solution until we have a full paper. I think we really nailed it. But a blog is not an outlet for this discussion--and it may have implications, not only for cognitive models, but for programming languages also. We are building a first implementation, and I hope to post a link to the papers as soon as they are born.

And the best part? It's not complex as it seems. It's simple. Sometimes you have to go through an immense amount of complexity in order to find something that's crystal-clear and dead simple. It's simple, and it is beautiful.