In this class of languages, the user is completely responsible for the
creation and management of processes and their interactions with one
another. Languages differ in the organization of processes and
communication channels (static, dynamic) and the communication schemes
These languages represent processes that communicate through messages.
- CSP. Seminal work on formulating parallelism as a network of
sequential processes exchanging messages [Hoa78].
- Occam. Real language based on Hoare's CSP [May83].
- Ada tasking and rendezvous facilities [HP83].
- A comprehensive survey of message
passing languages, both parallel and distributed. This article
has an exhaustive list of languages for distributed systems and further
These languages represent a computation as a dynamic network of
objects exchanging messages.
- Survey of the ideas behind parallel object-oriented
languages [Agh90] (for a deeper coverage, see [Agh91]).
- Survey and comparison of most existing parallel object-oriented
- Concurrent Smalltalk: methods, distributed
data structures [HCD89].
- Comprehensive treatment of the Actors paradigm [Agh86].
- Concurrent Aggregates [CD90].
- Cantor. An Actor-like language for programming
fine-grained multi-computers [AS88].
- Emerald. An object-based language for
distributed applications. Abstract data-types supply communication
interface to an object; allows process migration [BHJ 87].
- COOL. Objects with futures [CGH90].
- Orca. Shared objects using
These languages provide a framework for coordinating sequential
computations, usually written in some other language.
A paper that motivates the coordination language approach to
Linda. A language-independent model based on tuple-space with a
relatively small number of primitives. A
book [GC90] describes the language in full, or a
paper [CG89a] overviews the language and
suggests three useful programming styles.
A C version of Linda is available comercially.
- Strand. A commercially available language [FT90].
Guy.Blelloch@cs.cmu.edu, July 1994