XCPL: An Experimental Concurrent Programming Language
Original Publication Date: 1985-Dec-07
Included in the Prior Art Database: 2007-Mar-28
Software Patent Institute
Athas, W. C.: AUTHOR [+2]
AbstractXCPL : An Experimental Concurrent Programming Language Oldthinkers unbellyjeel Ingsoc.
XCPL : An Experimental Concurrent
Oldthinkers unbellyjeel Ingsoc.
Computer Science Department California Institute of Technology Pasadena, Calif. 91125
Technical Report 5196:TR:85
December 7, 1985
The research described in this report was sponsored in part by a grant from Intel Corporation and in part by the Defense Advanced Research Projects Agency, ARPA Order number 3771, and monitored by the Office of Naval Research under contract number NM>014-79-C;0597
@California Institute of Technology, 1985
You are never too old to have a happy childhood.
Experimental Concurrent Programming Language (XCPL) is a programming language based on history-dependent objects that interact solely by message passing. XCPL is both an experiment to develop a powerful programming notation for describing concurrent com- putations and an experiment to determine whether programs so described can be efficiently used in highly concurrent message passing systems such as ensemble machines [Seitz83].
The approach chosen is to describe a computation in terms of concurrent objects that rep resent the various components of some larger task. The objects work cooperatively on the common task and coordinate their efforts by message passing. A prime concern of the ex- periment is the compilation of XCPL programs. The goal of compilation is to keep intact the concurrent behavior expressed in the notation so that the concurrent behavior is also present in the distributed environment where the program is to be executed.
A running XCPL program contains three general types of activities: performing oper- ations on primitive data types, creation of new objects, and message passing. Operations performed on primitive data types correspond to the usual repertoire of predefined opera- tions such as addition, subtraction, and comparison, performed on the usual set of prede- fined data types, e.g. integers, reals, Booleans, symbols, etc. The creation of new objects is fundamental to amassing a collection of concurrent objects. The sending of a message corresponds to requesting a single service of a destination object. After the destination ob- ject has processed the message, it will send back a reply. The interim between requesting a service and receiving a reply does not necessarily "stop" the sender; rather the only atomic action associated with the send is the establishment of a reservation for the reply value. A sender may have multiple reservations outstanding and stiU be making progress. A sender will only wait for a reply value when progress cannot be made without the reply value, or when explicitly expressed by the programmer. 'This paradigm for message passing has two interpretations. Viewed purely in terms of primitive message passing operations,...