[OT] Insight on distributed computing wanted
martin.drautzburg at web.de
Fri May 14 15:55:37 UTC 2004
I've been pondering over the question:
"information is no much easier to transport than material
objects, so why is distributed computing so difficult".
It is haunting me. I wrote down some thoughts and I'd be happy to
receive some pointers or feedback. I am only posting it here, because
I know there are some thoughtful people on this list.
* THE OBJECT AND ITS WORLD
Moving an object from one place to another means to detach it
from its original world and attach it to a new world. As
Einstein would say: you can always see the object as
motionless and the world around it as moving.
This means that there has to be a well-defined boundary
between the object and its world. This is "obvious" for
material objects (quantum physics ignored) but non obvious for
Objects ultimatively reference their worlds. A Canvas object
eventually references my graphics card, my monitor and the
eyes and the brain of me, the user. None of these objects can
be transported easily, so the boundary between a Canvas object
and its world is definitely above the graphics card. The
graphics card and all other material objects are
"immobile". Maybe even the Canvas object itself is immobile.
In any case there are mobile and immobile Objects.
When the world of an object is replaced the object needs to
attach itself to a new world. If the object should expose a
"similar" behaviour in the new world, then the two worlds must
be reasonably alike. The same is true for material objects.
* RPC AND PROXIES
You can use objects from a distance by remote-controlling
them. In that case, the objects itself does not move, but it
sends and receives objects.
A TV remote control sends IR pulses to the the remote object
(the TV set) and the TV set sends light to the spectator. Both
the IR pulses and the light are objects that are known to be
very mobile. This is why this works.
In an RPC scenario you typically send simple objects
(integers, strings) across the wire. Again these kind of
objects usually behave well when their worlds change as long
as they do not reference their world. A string ":0" meaning
my DISPLAY can be sent easily but it actually has a reference
to my monitor. Sending such an object will sometimes work (it
will reference the DISPLAY of the receiver) and sometimes not.
If you however send more interesting objects like Canvases
across the wire, then things aren't that simple anymore.
* HIDING INFORMATION
You typically don't want to expose too much information. An
object on the sender side may "know more" than is relevant for
the receiver. Likewise the object on the receiver side may
know more about the receiver than is relevant for the sender.
This means that objects have to "mutate". They can be in one
of three states:
- objects attached to the sender's world
- object detached
- object attachted to the receiver's world
The detached object carries a minimal common subset of the
information that is present in the attached objects.
More information about the Squeak-dev