Contents |
1 |
2 |
Previous |
Next
1. Overview
The aim is to match up two sets of ideas. The first is a collection of functional-programming-related research
results and research in progress. The second is a collection of dreams and wishes about how global software
should be and what properties it should have.
|
Functional Programming Ideas
|
Top
|
Although these ideas have been developed using functional programming as a guide, they have
wider implications. The main ideas, which we will go into in more detail later, are:
-
Non-determinism can be minimised and isolated.
-
Concurrency can be provided in a completely deterministic way (for 1 user with no comms).
-
Distribution, networking, comms can be made orthogonal to logical behaviour, and transparent.
-
Systems programming (OS managers, networking, comms) can be made deterministic and functional.
-
Demand-driven (lazy) evaluation can aid concurrent and distributed systems programming.
-
Explicit demand can be used to provide real-time services.
-
Higher order functions can be used to organise provision of complex real-time services.
-
Speculative evaluation can be used to regain efficiency without affecting logical behaviour.
The things which the functional paradigm don't yet deal with well, but which we would like to tackle, are:
-
Essential non-determinism (multiple users, shared data, comms, events, failures)
-
Real-time requirements (quality of service).
|
Global Computing Ideas
|
Top
|
These are the main features which we want to see in the global computing of the future.
-
Concurrency as a pervasive underlying property, not as a bolt-on library.
-
Distribution as annotations and/or a run-time load-balancing act, not explicitly programmed.
-
Mobility of code and data and computation (unevaluated expressions).
-
Communications as transparent, or as normal I/O, not as explicitly programmed protocols.
-
Portability as with Java, write once, run anywhere.
-
Consistency; write once, run anyhow, without affecting logical behaviour.
-
Persistence; universal naming and version control.
-
Trustability via authentication of users and programs, and safe execution of untrusted code.
-
Quality of service via a rate-based programming language.
-
Replicability with merging of independent updates (eg copy of diary in organiser).
-
Durability, ie very long-running, eternally available services, surviving hardware hiccups etc.
To follow up these ideas, we want to arrange more meetings (monthly-ish),
to pull out application ideas and hot topics, to produce MSc/research projects and attract money.
Contents |
1 |
2 |
Previous |
Next
Copyright © 1998 University of Bristol. All rights reserved.
Author: Ian Holyer
|
Last modified: 21 Sep 1998 12:43
Authored in CALnet |