Some bizarre thoughts on the nature of programming...

Peter Smet peter.smet at flinders.edu.au
Wed Jun 23 04:12:47 UTC 1999



>Sorry if this is silly, but can't the image itself can be considered
>an object?
>If so, then would mapping the image to a cell & the objects to the
>cells internal mechanisms (enzymes etc) work?
>How strongly coupled are a cells internal systems?
>


Yes, but this doesn't change anything except the scale. You'll find that at
the molecular level its the same story. Each enzyme/molecule only interacts
with its physically immediate neighbours. Yet taken together millions of
such simple interactions produce incredibly complex and coordinated
scenarios. Someone termed it 'coordination without communication'. Whether
you're looking at a flock of penguins or a strand of DNA unravelling, the
interactions remain localised. In nature you never seem to get this complex
coupling combined with action at a distance that is so characteristic of
computer programs.

I was reading something about Rod Brooks - the moment it dawned on him that
flies just don't have the brain power or the processing speed to make plans
or mental models. He realised there had to be some way for the sensor (read
eye) and actuator (read wing) to be coupled directly - without the need to
have it supervised by the brain. For example, how does a fly know when to
flap its wings? Well, the good news is, it doesn't have to think about it -
whenever its legs are not touching anything, its wings just begin to flap.
The sensor in the leg is DIRECTLY coupled to the muscle in the wing. No one
would believe such a primitive, rigid mechanism would work, but I can just
see that fly shrugging it's vibrissae and saying "I did the simplest thing
that could possibly work". Amazingly, his lab now has robot insects showing
coordinated leg movements, but each leg is an independent unit, and there is
no central control. What I like so much about this approach is that it is so
robust. Neural nets exhibit the same properties - take some chunks away and
they continue to function. Its because they form a distributed
representation - there is no single neuron that holds the knowledge, just
like there is no 'architect' ant directing the building of the ant's nest.

Most computer programs, on the other hand, are so intertwined you only need
to change a few bits of data, or an interface or return type here and there,
and the whole edifice comes crashing down.

What I am wondering is, how far can this approach be taken? Are there limits
to how much complexity simple units with simple interactions can represent?
Would you want to fly in a plane controlled by such a system?

It's kind of like taking Conways' game of 'Life' one step further, so that
an interactive GUI emerges from it.


Peter





More information about the Squeak-dev mailing list