In the past 10 years, the computer power available to users has increased dramatically. Processors have been getting faster, and advances in integrated circuit technology have enabled thousands of them to be placed on a small area of silicon.
These so-called parallel computers have the potential to solve problems in areas such as simulation, forecasting and database search, that we only dreamt about a few years ago.
As single processors reach the limits imposed by factors such as the speed of light, increases in computer speed should emerge from combining processors. Unfortunately, while hardware research has created massive processing power, software development lags well behind.
It is immensely difficult to develop, and detect errors in, a parallel software system containing a number of interacting programs shared among a number of processors. One common programming error is known as deadly embrace. This occurs when a program using a resource, such as a file containing data, is suspended whenever it requires another resource - another file, for example - that is being used by a second program; then, when the second program requests a file being used by the first program, it, too, is suspended.
We thus have two programs waiting for each other to release a resource, and the effect on the user can be dramatic: everything seems to go dead.
The difficulties in creating correct programs are seriously hampering the use of parallel computers. Errors such as deadly embrace can be so serious and prevalent that one developer of large systems has compared work on parallel software to experimental scientific research.
But the Linda language may take the pain out of parallel software development. Created by Nicholas Carriero and David Gelernter at Yale University, it hides the complexity of communication and synchronisation. All the user sees are the few statements that manipulate the parallel programs.
Linda has impressed the computing community for two reasons. First, it eases the portability of parallel software from one computer to another, because it does not refer to the underlying hardware architecture. Second, it has been designed to be added to conventional programming languages.
In effect, Linda is just a mini-language for managing the programs executed in parallel; it does not contain features for calculation or manipulation of characters.
Linda was made to be added to such conventional programming languages as C and FORTRAN. Its designers had learnt that computing advances do not occur in a big-bang way but are incremental. Rather than creating a parallel programming language from scratch, they constructed an adjunct for existing languages that already have huge user communities and large libraries of software.
Linda has two messages. The first - that the problems of large parallel program development seem, at first sight, to have been solved - is global. The second - that British parallel software research is rapidly becoming obsolete - is more parochial.
Large sums have been spent on the development of functional programming languages (special mathematical languages for multi- processor computers). But British industry has been showing very little interest, mainly because these languages are radically different from existing ones, such as COBOL and C.
Linda's compatibility not only ensures it a much larger market, but also probably sounds the death knell for a large amount of British software research.