Explicit communication models

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 (synchronous, asynchronous).

Message passing

These languages represent processes that communicate through messages.

  1. CSP. Seminal work on formulating parallelism as a network of sequential processes exchanging messages [Hoa78].
  2. Occam. Real language based on Hoare's CSP [May83].
  3. Ada tasking and rendezvous facilities [HP83].
  4. A comprehensive survey of message passing languages, both parallel and distributed. This article has an exhaustive list of languages for distributed systems and further references [BST89].

Object-oriented languages

These languages represent a computation as a dynamic network of objects exchanging messages.

  1. Survey of the ideas behind parallel object-oriented languages [Agh90] (for a deeper coverage, see [Agh91]).
  2. Survey and comparison of most existing parallel object-oriented languages [WKH92].
  3. Concurrent Smalltalk: methods, distributed data structures [HCD89].
  4. Comprehensive treatment of the Actors paradigm [Agh86].
  5. Concurrent Aggregates [CD90].
  6. Cantor. An Actor-like language for programming fine-grained multi-computers [AS88].
  7. Emerald. An object-based language for distributed applications. Abstract data-types supply communication interface to an object; allows process migration [BHJ tex2html_wrap_inline348 87].
  8. COOL. Objects with futures [CGH90].
  9. Orca. Shared objects using broadcasting [TKB92].

Coordination languages

These languages provide a framework for coordinating sequential computations, usually written in some other language.

  1. A paper that motivates the coordination language approach to parallelism [FKT90].
  2. 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.
  3. Strand. A commercially available language [FT90].

Guy.Blelloch@cs.cmu.edu, July 1994