Global Computation

What is Global Computation?

Developments in technology have led to a situation in which networked access to vast computational resources (hardware, software and data) is unparalleled. At the same time, the availability and responsiveness of these resources at any given point in time is unpredictable and uncontrollable. "Global computation" refers to an emerging computational paradigm in which these resources are flexibly exploited by mobile agents. The dominant concerns in global computation are not those of representing and manipulating data efficiently but rather those of security, reliability, robustness, failure modes, control of risk, coordination and interaction.

How does this differ from distributed computation? Isn't Java the answer?

Global computation differs from distributed computation in that the environment in which global computation takes place is highly dynamic, with the network itself changing continuously and applications moving from place to place within the network. This makes it difficult or impossible to maintain an accurate view of the whole environment or of all the agents involved in the computation. Java and related languages such as Cardelli's Obliq provide direct support for only a very limited form of global computation: for instance, Java supports the transmission of program sources but not mobility of active computational agents.

The basic technology required to support global computation exists already. But we lack suitable models of computation, programming abstractions that "package" these models so as to enable ordinary programmers to construct reliable and robust applications, and an adequate understanding of issues like naming and scope in this new context. Progress on the scientific challenges posed by global computation is lagging far behind progress on the enabling technology. Research on foundations and basic concepts is required as well as work on the application of existing concepts and techniques in this new application area.

Why is this important?

Much has been written elsewhere about the increasing role that the Internet will play in society and commerce during the short- to medium-term future. A few application areas are: electronic commerce, electronic banking and finance, education and distance learning, and active libraries. It is estimated that the value of electronic commerce transactions will reach $120 billion by 2000. All of these developments are possible using today's technology. The promise of global computation is to make these and other applications considerably more flexible, robust, secure and efficient. This is a critical consideration in applications where unpredictability and failure are intolerable. It may also provide the basis for the development of new business areas, e.g. a flexible trade in software and computational resources.

What kind of problems need to be solved?

Calculi are required that account for concepts, issues and features such as: agents, interaction, mobility, capabilities, locality, safety, security, correctness, reliability, failure, view, context, situation. What is an appropriate logic for specifying and reasoning about such concepts? How do you understand a computation when you have only a partial view of it and your collaborators also have only (different) partial views? How does one test such a system? Well-engineered programming languages that provide direct but flexible support for global computation need to be designed and implemented, and then questions arise in the development, analysis and transformation/optimization of programs in such languages. What features would a type system for such a language include? How does one organize globally distributed development of software? What would safe architectures look like? Application experiments are needed to explore the possibilities opened up by all of these developments. (These are just a few examples.)

What areas of current work does it bring together?

There is relevant work across the entire spectrum of computer science: semantics, theory of computation, formal methods, safety-critical systems; programming languages, programming methodology, software engineering, self-organizing systems; system architecture, performance analysis, simulation and modelling, networking, operating systems; planning and scheduling, algorithms and complexity; security, reliability, encryption, coding and information theory. (This is not an exhaustive list.)


For further discussion, see:
L. Cardelli. Global Computation. ACM Computing Surveys 28, 4(es) 1996.



Don Sannella, Laboratory for Foundations of Computer Science, University of Edinburgh, Edinburgh EH9 3JZ
Last modified: Tue Jun 29 13:04:36 BST 2004