Citation: Distributed Systems-Architecture and Implementation,
ed. B. Lampson, M.
Email: email@example.com. This paper is at http://www.research.microsoft.com.
One of the major problems in constructing distributed programs is to abstract out the complications which arise from the transmission errors, concurrency and partial failures inherent in a distributed system. A powerful tool for this purpose is the idea of a remote procedure call. If it is possible to call procedures on remote machines with the same semantics as ordinary calls, the application can be written without concern for most of the problems caused by distribution.
We consider in a broader context the problems of parameter and data representation in distributed systems. Our treatment will be somewhat abstract and, unfortunately, rather superficial. This is really a programming language design problem, although in practice it is not usually addressed in that context. It only makes sense to talk about the representation of data when its type is known. The sour problem is to define a common notion of data types and suitable ways of transforming one from one representation of a type to another. This kind of problem is customarily addressed in the context of language design, and we shall find it convenient to do so here.