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