I am deeply honoured to receive the Degree that has been conferred on me.
I would like to spend a few minutes talking about the way that computer science is developing from a study of tools for computation into a broad science of interactive behaviour, and I shall illustrate it with my own work which is very much a part of the development.
My research in computing has been always concerned with language. I don't mean natural language, but the more formal language which we use in controlling and analysing discrete dynamic systems - in other words, in controlling computers.
Every tool designed by man is a prosthetic device, and for every prosthetic device there is a means of control. Many tools are physical, and their control is manual. In contrast, computers are the most complex tools ever invented, and they are tools of the mind; the means of control is hardly muscular - it is primarily linguistic. Quite simply, the versatility of computers is exactly equal to the versatility of the languages by which we prescribe their behaviour, and this appears to be unbounded.
But computing is not only about a computer's internal action; it is about the way a computer behaves as part of a larger system, say an aircraft. It follows that the terms in which the computer behaviour is prescribed must harmonize with the way we describe information flow in such systems. Thus computing expands into informatics, the science of information and communication.
I am deeply aware of the long tradition on mathematics at this famous university; I am also impressed by the fact that Marconi, the pioneer of radio communication, is from Bologna. So it is appropriate in this place to propose a new way in which mathematics can inform the study of communication.
I would like to outline my research work under two headings: first, an experience in formally defining a programming language; second, and more fully, a descriptive calculus of communicating systems.
For a decade and a half, from 1975 to 1990, I worked with an large team of people on a project whose goal was as follows: Define an extremely powerful language for programming which not only encourages people to write correctly, but whose meaning is defined completely and lucidly by mathematics, not by a users' manual.
The aim of this work was to be sure that we really understand the tool we use for programming. The reason for wanting to understand it is rather obvious; if we don't understand it then the programs we write will have an unclear meaning. Language is the raw material of software engineering, rather as water is the raw material for hydraulic engineering. The difference is that water is rather well understood by physical science; but software - as a raw material - is still not scientifically understood. Nevertheless our software engineers have filled the world with software at enormous speed. So it is perhaps not surprising that we have a software crisis of staggering proportions, in which it is estimated that 80% of programming time is spent trying to understand old computer programs to bring them up-to-date with the tasks they perform! With the enormous demand for computing applications, people who wrote programs left no time to explaining how they worked - and it still goes on.
The language my team developed was called Standard ML; it is now quite widely used in applications, very widely used in teaching, and is probably the first language which is large enough for heavy-duty application and yet has been fully defined by mathematical means. Time forbids me to tell you its the details. But because it was defined mathematically, it can also be analysed mathematically. Indeed, we proved several theorems which demonstrate that certain kinds of bad behaviour, i.e. certain kinds of programming fault or bug, can never occur in a well-formed program in the language.
We did not design the perfect language - that does not exist.
But I believe that the Standard ML project sets a standard for
how computing languages should be conceived; not just as syntactic
conventions for assembling millions of lines of code, but as the
expression of dynamic mathematical models.
I would now like to turn to my other and greatest excitement, trying to understand how discrete systems communicate with each other.
For twenty-five years I have been trying to merge programming, the prescriptive or synthetic activity, with the task of description or analysis in computing. The latter becomes more important as we move towards systems which interact with each other.
This interaction is ubiquitous. It occurs between the component parts of a single computer, e.g. between the processor and the memory; it occurs between the computers in an aircraft and the aircraft components which they control; and now, overwhelmingly, it occurs on the Internet.
My Calculus of Communicating Systems, published in 1980, aims to describe and analyse systems such systems. One of its many applications has been in the analysis of so-called communications protocols - ways of ensuring that information is correctly transmitted even through unreliable media. Another was the software which monitors behaviour in a nuclear power plant.
Nearly ten years ago, with colleagues Joachim Parrow and David Walker and based upon ideas from Mogens Nielsen and Uffe Engberg, I extended the calculus and gave it a snappier name: the pi-calculus. We had noticed that the most challenging and intractable problem, which we had not fully addresses was the mobility of interactive systems - the way in which pieces of information and even active computer programs (applets, or viruses) move from one machine to another and make themselves useful (or harmful) in a new environment. At that time, the Internet was a dream in someone's mind, but the reality we now have is not so far from our theoretical conception of mobile informatic systems.
Thus, while Standard ML is a synthetic language, for building systems, the pi-calculus is an analytical tool for understanding them. This is why we call it a ``calculus''. We dare to use this word by analogy with Leibnitz's differential calculus; the latter - incomparably greater - is based upon continuous mathematics, while the pi-calculus is based upon algebra and logic; but the goal in each case is analysis, in one case of physical systems and in the other case of informatic systems.
Moreover, we found that the pi-calculus may be significant in a way which we did not fully expect. We are very familiar with basic models of computation; for example, most scientists have heard of Alan Turing's famous ``Turing Machine'', a very simple device on which anything that's computable can be computed. Is there such a basic model for all discrete interactive behaviour? We don't yet know how to pose this question precisely, but we think of the pi-calculus as a tentative step towards such a model.
With this congruence between computing and interaction in mind, I would like to end with a prediction which should now not seem absurd. I believe that computer science or informatics, which began as just the engineering of scientific and business calculations, has broadened into a descriptive science with enormous breadth of application, not just to computation but to dynamic systems in general. By giving a structural account - to complement Shannon's quantitative account - of information flow, it can provide an exact view of the world which is not the province of any previously existing science.