The RB Language
Jonathan M. Smith, Gerald Q. Maguire · 1988
Typical algorithms for distributed or parallel computations are cooperative, meaning that the sequential component is broken down into cooperating pieces, which are distributed across available hardware. An approach which has recently gained some attention is competitive processing, where several versions of a sequential program are distributed across available processors to gain performance from algorithmic diversity. There is also potential for fault tolerance from available hardware by executing the sequential versions, called alternatives, on a distributed configuration. Schemes for implementing competitive concurrent processing have been described in the literature, but there is little implementation experience. RB is a practical step towards gaining such experience. RB is a programming language for specifying alternative methods of performing a computation, where at most one of the results of the alternatives is used. Our prototype implementation uses a combination of a language preprocessor for C and a runtime library to provide the desired semantics. Using other base programming languages, e.g., Ada, or other methods of managing alternatives is straightforward.