Lists Home |
Date Index |
-----BEGIN PGP SIGNED MESSAGE-----
> Mike Champion:
> That is, perhaps "encapsulation" of data
> is not such a good thing after all ...
> or at least it's not scaling well to the Web.
> Perhaps it makes more sense to expose the data
> via generic operations rather than exchange
> objects that encapsulate data behind customized
> operations. I'm not sure, but things are getting
> interesting ....
Carriero and Gelernter's "How to Write Parallel Programs" claim 3
fundamental paradigms for parallel programs. What they have to say
is cogent with respect to distributed programming, and the question
of how REST, (OO)RPC and the whole web architecture shooting match
squares with their claims is an interesting one. This book is,
astonishingly, out of print, so I'll quote liberally:
"We can envision parallelism in terms of a program's
result, a program's agenda of activities or of an
ensemble of specialists that collectively constitute
the program. We begin with an analogy.
Suppose you want to build a house. Parallelism - using
many people on the job - is the obvious approach. But
there are several different ways in which parallelism
First, we might envision parallelism by starting with
the finished product, the result. [...] In sum each
worker is assigned to produce one piece of the result
[...] This is the result parallel approach.
At the other end of the spectrum we might envision
parallelism by starting with the crew of workers who
will do the building. [...] In sum, each worker is
assigned to perform one specified kind of work [...]
This is the specialist parallel approach.
Finally, we might envision parallelism in terms of an
agenda of activities that must be completed in building
a house. [...] In sum, each worker is assigned to pick
a task from the agenda and do that task - and repeat,
until the job is done [...] This is the agenda parallel
The boundaries between the three paradigms can sometimes
be fuzzy, and we will often mix elements of several paradigms
in getting a particular job done [...] It's nonetheless an
essential point that these three paradigms represent three
clearly separate ways of thinking about the problem."
They go on to describe how the paradigms imply different
relationships between processes and data. The first two
relationships are message passing (enclose data within a process)
and live data (enclose processes inside data). The defining
difference between these is whether processes are created
explicitly (message passing) or implicitly (live data). The third
is an intermediate: many processes share access to many data and
may communicate by reading and writing data; these are called
distributed data structures. Specialist parallelism maps onto
message passing. Result parallelism maps onto live data. Agenda
parallelism maps onto distributed data structures.
Bill de hÓra
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.0.4
-----END PGP SIGNATURE-----