A related article:
"A computational model of EVERYTHING", Nicholas Carriero, David
Gelernter
Comm. ACM, November 2001 -- v. 44, N11 -- pp. 77-81.
is another promotion of Tuple technology, Linda, and especially
"Lifestreams" (which is a commercial product of Gelernter's company,
"Mirror Worlds").
When I first read about tuple spaces, I though it's a very attractive
idea. Something like an information bus.
"It shouldn't be necessary to link our activities together before
runtime. It should be possible for new activities to join the ensemble
at any time. Programs should not have to know anything about one
another in order to communicate. Mutually unknown activities should be
able to communicate. Activities with disjoin lifetimes should be able
to communicate; one that died in 1996 with, say, a second born in
2001." [quoted from the above paper].
This time I take these claims as unfeasible and hopelessly
naive. Mutually unknown activities cannot communicate unless they
understand each other's language (or can relate it to some common
standard).
Let's consider an example: how an application that wishes to print a
document finds a suitable printer. This is the favorite Jini
example. This example has been mentioned on this discussion thread. As
it happens, the printer example is used throughout the Carriero and
Gelernter's paper.
Suppose we have a tuple space with the following tuples:
(Printer, printer1, (capabilities, color, transparencies),
(resolution 120))
(Printer, printer2, (capabilities, colour, slides),
(resolution 47.2))
An application that wishes to print color slides will fail to find a
printer -- although both printer1 and printer2 can clearly do the
job. The problem is that they use different words to mean the same
thing. Suppose an application wishes to find a printer that has a
sufficient resolution, say, > 100 line-per-inch. The application will
reject printer2 -- although it's high-resolution as well. Printer2 was
manufactured in the more enlightened world and therefore it measures
its resolution in lines per centimeter rather than in lines per
inch. Thus two printers use the same term -- resolution -- to mean
slightly different things (different units). If clients and servers are
mutually unknown (and especially if they are separated in time by
years), it's generally impossible to make sure they use consistent
vocabularies.
Exactly the sample problem plagues Web services, UDDI and similar
buzzwords. How does a client find out what the parameters of a service
really mean?
That's why Agent communication languages are back in vogue, with DARPA
sponsoring DAML, the DARPA agent markup
language, and the Semantic Web.
|