The other day I came to an interesting revelation about the way we see the world.  Actually, it's more a theory on development based on the way I think we see the world.  All the same, it has some great applications on both software development and marketing strategy.  Today, though, I'll focus more on the background and how it applies to computer theory.

We experience the world through our senses.  We see the color of an apple.  We smell the rich aroma of a baking apple pie.  We hear the buzzer on the oven go off.  We feel the crispiness of the crust.  We taste the bite of cinnamon and the sweetness of sugary syrup.  All of these sensations tell us we're eating fresh apple pie, and the next time we experience the same sensations, we can immediately relate to a memory.

Basically, the idea is that you experience an object or event in the world for the first time and build a virtual model of the same thing in your memory based on the feedback your senses gave you.  The next time you see a pie, you recognize it as a pie because the environmental inputs are either the same or similar as your first experience.  Your mental model of the world changes and becomes more intricate with each experience, expanding your ability to predict the nature and behavior of new objects and events you come across.

This model in your head also gives you the ability to create expectations for your environment.  You see a door, you expect the handle to move and open the door.  You see a ripe apple, you expect it to crunch when you bite it.  Different sensual cues help you decide both what's around you and help you play out different scenarios in your mind.  What will happen if you knock that vase-like object over?  It will probably break like the vase that fell over last month.

It also provides a foundation for creativity - you've probably heard the statement that you can only write what you know.  If your mental model of the world is based on real past experience, sensation, and memory, then any creative thought that model creates is rooted somewhere in your interpretation of past events.  Not necessarily the truth of what happened or what you saw, but in how you perceived the object or event through the senses at your disposal.

So if our minds can create these models, we can do the same thing with a computer.  A program can look at an object, use what methods it has at its disposal to analyze the object, and determine what to do with it.  Is this a piece of text that can be printed?  Is it another program that can be executed?  Is it junk that should be disposed of?  The program can make this decision, save the parameters of its search to memory and move on.  When it comes across a similar object in the future, its response will be based on this past experience.

The program can learn from the outcome and make either the same good decision in the future or can change course and try a different choice.  I've started using this model with my JavaScript systems.  I let the program scan through the document I'm trying to manipulate and create a virtual model of the document.  Then it can determine on its own which element to manipulate based on how it thinks the document will respond.

The system is still early in development ... but it's proving to be very powerful so far :-)