|
GRAVITY TWENTY SEVEN -- Tuesday, October 13, 1992
Okay, here's the scene. One agent, Axle, is about to teach another
agent, Van, a song-association system named SongLink. My purpose
is not to describe how this system might operate, or how it's designed,
but instead to illustrate communication of systems between ThoughtShops.
SongLink isn't a "program" in the usual sense. It's not
something you just load onto your computer and run. It's also not
something you simply file in and use as you do with Smalltalk code.
There's more interaction required.
SongLink itself is contained in a file called 'songlink.i' that
Axle has access to. Were you to transfer this file to the Chicago
ThoughtShop, it would be useless. That file is useable by only the
one agent, Axle. For the other agent, Van, to learn SongLink, more
has to happen than simply transmitting the file. This involves the
process of acclimation that I wrote about earlier. The two agents
must resolve their references. They must also establish a common
ground. The end result will be a file called 'songlink.i' that is
useable by Van and only Van. This new file will be quite different
from the original.
This is going to be tough to explain in words. I want a blackboard
right
now. I also wish I could spend more time explaining rules and options,
which are quite essential in understanding systems in Gravity. But
I don't have time with only three days before they pull the plug.
So: It starts with Axle simply sending the name for the system
to Van.
1. (to Van) < metal.head : axle | songlink >
Note that only three of the five components of a Gravity name are
mentioned. You'll recall that the first is the ThoughtShop, 'metal.head',
where the agent resides, and the second is the agent, 'axle', in
charge of the item. The item itself is 'songlink'. The rule and
option components are not specified.
Van receives this single name and checks its context. It finds
that there
is no name matching that name in its context and so sends back the
same name, but with a rule attached...
2. (to Axle) < metal.head : axle | songlink | send >
When one agent sends a name with a rule to another agent, a dialog
is
established between them. 'Send' is a basic rule that all agents
understand. For those of you that understand Prolog, there's some
similiarity between the way Gravity processes rules and the way
Prolog works. I was working a lot with Prolog when I first started
to design Gravity. One thing is very similiar. Names like the one
above reference an actual rule within the context of the agent Axle.
There's a 'send' rule associated with item. Just as with Prolog,
rules are dynamic. They're not like functions in a traditional programming
language. Nothing's hard-wired, really.
At any rate, Axle responds with:
3. (to Van) <| sub : 3 >
< nlpLand : casey | parser >
< henry | textBase >
< songAssociate >
These are four seperate names that Axle sends to Van.
The first name tells Van that a rule is being sent, which is the
'sub' rule,
which tells Van that the following names are part of a system, and
that
they're on the same hierarchy level. They're the major headings
of the
system. Note that the full name expanded would be:
< metal.head : axle | songlink | sub : 3 >
Only <| sub : 3> need be sent because the rest is implied
in the dialog.
The '|' is required to let the receiving agent know that 'sub' is
a rule
of the current item, and not a new item. The '3' is an option of
'sub'
that lets Van know that 3 names will be following. When a 'sub'-rule
is
being communicated, the 'sub' names are sent before the receiving
agent requires any clarification. That is, everything in #3 is sent
before Van responds.
Note the syntax of the three following names. The first references
an
item called 'parser' that is handled by an agent named 'casey' that
resides in a ThoughtShop called 'nlpLand'. The next is an item called
'textBase' handled by an agent named 'henry'. Van knows the ThoughtShop
is 'metal.head' by the context. Likewise, 'songAssociate' is known
to be an item handled by 'axle' of ThoughtShop 'metal.head' because
of the context of the current dialog.
Enough for today...
|