On Sun, 23 Nov 2003, T. Onoma wrote:

> Analogous to the real world: when I make a cookie with a cookiecutter, all my 
> previous cookies do magically change because I later change my cookiecutter. 

If you want a suitable analogy for your real world: when you realize that
a cookiecutter can cut cookies, then you think of other cookiecutters as
able to cut cookies.

I think it's important to discern our models of the real world from what
the real world really is. It may be difficult, as we only do see the real
real world through our models of it.

In the real real world you don't have kitchen apparatus change behaviour
in magical ways, but our model of a certain object is can change our way
of conceiving it and using it.

I think that, in the blossoming of OO techniques, one very important reuse
that has been achieved is the reuse of common forms of human reasoning.
This is why OO may look more "natural" and "real world" than procedural
programming. But by "more natural" we mean "more human", and by "real
world" we mean the abilities to compartmentalize, to categorize, to
modularize, to interconnect, to abstract, to generalize, as we are used to
apply them in thinking about (and solving problems in) everyday life.

The programs that are written are very much part of reality, and it
doesn't matter how much nonphysical they are. What may make programs less
real is how as a shorthand we name objects in a program as if they were
the things out of the program that they represent. For example (to use an
overused example), if you name a student record class as StudentRecord,
then you are not virtualizing, but if you call it just Student, then you
are, in some way, playing make-believe that the Student is really in the
program. Of course no-one is _really_ mistaken, but still, some subtly
mistaken reasonings can arise, if analogies with the "real world" are
taken too far.

________________________________________________________________
Mathieu Bouchard                       http://artengine.ca/matju