Software Engineering Seminar
GT-SARG (Georgia Tech Software Architecture Reading Group
CS 8112 Winter Quarter 1995
Moderator: Gregory Abowd
Return to GT-SARG topic overview
Feb 27: Coordination Models
Discussant: Dilma Silva
Readings
- "Linda in Context" by N. Carriero and D. Gelernter (Comm. ACM
April 89)
- ACM Forum about "Linda in Context" (Comm. ACM Oct 89)
- "Coordination Languages and their Significance" by D. Gelernter
and N. Carriero (Comm. ACM Feb 92)
Summary of readings
The first paper introduces Linda, a model for process creation and
coordination that is orthogonal to the base language in which it is
embedded. The model is based on generative communication achieved
through the operations eval, out, in, and rd. The Linda model for
parallel computing is contrasted to concurrent object oriented
programming, parallel functional programming, and parallel logic
programming. They conclude Linda offers a cleaner
concept for parallelism than concurrent object oriented programming, a
more practical and more elegant alternative than parallel logic programming.
Regarding pure functional languages, they claim that since many of
the programs dealt with are conceived in terms of objects to
be manipulated and not equations to be solved, in many cases
the functional approach will fail to provide the needed
expressivity.
This paper generated a lot of eletronic discussion, and Comm ACM
Oct 89 published in the technical correspondense section some
letters. Most of them addressed the contrast presented in the
paper between Linda and Parallel Logic Programming. It was argued
that "Linda = Prolog - Logic + Concurrency", that the example
chose (The Dining Philosophers) to contrast solutions in both
approaches was misleading since the "logic" solution could be
clearly improved. Kahn and Miller argued that Linda is trying
to solve a different problem than parallel logic programming:
Linda camp strives for uniformity accross languages while
CLP camp strives for uniformity within a language.
The third paper is presented as a "clean response" to the
discussion, showing Linda as a coordination model language.
They present arguments for orthogonality between the computational
and coodination models, and they favor generality, ie, a
"general purpose coordination model language" (advantages:
portability in a "broad sense" and heterogeneity).
Summary of discussion
The main discussion point was how appropriate Linda is
as a "reference" coordination model, ie, can it be seen
as a "turing machine" for expressing coordination? Here are
some of the points discussed:
- Linda can be "simulated" in a message passing system,
and vice-versa. What kind of understanding about models we
get from analysing the ability of simulating one of them
with the other?
- Communication is clearly part of the coordination
model. But what about creation of processes? For example
creation is part of the computational model in Modula 3.
Is Linda operation "eval" a hack to address the issue
that C and Fortran don't offer creation?
- How appropriate Linda is to "express" coordination
styles such as pipe-filter, RPCs, etc? And how this types
of coordination relate to general classes of "solutions"
(usually appropriate to a specific application domain)
such as event driven, pool of tasks, static data decomposition,
dynamic data decomposition, data parallelism, control
decomposition (tradicional scientific code)? The event-driven
coordination type appeared to be a challange in terms of
being cleanly captured by a coordination model. Is it necessary
some type of "active" data objects in the tuple space in
order to express event-driven type of coordination?
- Tuple spaces are now first class data objects
in Linda. What more is necessary to get protection?