Distributed languages

Distributed computation is now pervasive, with execution, software development, and deployment spread over large networks, long timescales, and multiple administrative domains. Because of this, many distributed systems cannot be deployed or updated atomically. They are not composed of multiple instances of a single program version, but instead of many versions of many programs that need to interoperate, perhaps sharing some libraries but not others. Moreover, the intrinsic concurrency and nondeterminism of distributed systems, and the complexity of the underlying network layers, makes them particularly hard to understand and debug.

Existing programming languages, such as ML, Haskell, Java and C#, provide good support for local computation, with rich type structures and (mostly) static guarantees of type safety. When it comes to distributed computation, however, they fall short, with little support for its many system-development challenges.

Our research addresses the design of distributed languages. Our focus is on the higher-order, typed, call-by-value programming of the ML tradition: we concentrate on what must be added to ML-like languages to support typed distributed programming. We have examined the design space, and present a programming language, Acute, which we have defined and implemented.

Further details of this work can be found at the Acute home page.

Document research/acute revised 24-Mar-2005.
Generated by PMT v1.1.