Communicating agents for applicative concurrent programming
A good program methodology should allow easy proofs of program correctness and should also incorporate methods for improving program efficiency. We try to achieve both aims by proposing, in the framework of the applicative programming style, a language by which one can specify a system of computing agents, which communicate by sending and receiving messages.
The contents of these messages are "facts", or "pieces of truth" about computations. They are formally defined in the paper.
When communications occur, the system of agents achieves better performances in executing programs, and the task of showing correctness of the resulting computations remains relatively simple. We will give some examples for illustrating these points.
The proposed language supports a program methodology for writing concurrent programs in a reliable way. A basis for a theory of communications is introduced, together with a method for using it in specifying behaviours of agents and proving them correct.
Unable to display preview. Download preview PDF.
- Burstall, R.M., D.B. MacQueen and D.T. Sannella: "HOPE: an experimental applicative language", Proc. LISP Conference, Stanford University (1980).Google Scholar
- Burstall, R.M. and J. Darlington: "A transformation system for developing recursive programs", JACM, Vol. 24, No. 1 (1977), 44–67.Google Scholar
- Dennis, J.B.: "First version of a data flow procedure language", LNCS 19 Springer-Verlag (1974).Google Scholar
- Hewitt, C. and H. Baker, Jr: "Actors and continuous functionals" in: Neuhold, E.J. ed., Formal Descriptions of Programming Languages, North-Holland, Amsterdam (1978).Google Scholar
- Hoare, C.A.R.: "Communicating sequential processes", CACM, 21, 8 (1978).Google Scholar
- Kahn, G. and D.B. MacQueen: "Coroutines and network of parallel processes" in: Gilchrist, B. ed., Information Processing 1977, North-Holland, Amsterdam (1977) pp. 993–998.Google Scholar
- McCarthy, J. et al: "LISP Programmer's Manual", MIT Press, MIT, Cambridge, Mass. (1962).Google Scholar
- Milner, R.: "A calculus for communicating systems", LNCS 92, Springer-Verlag (1980).Google Scholar
- Owicki, S.: "Axiomatic proof techniques for parallel programs", Computer Science Department, Cornell University, Ph.D. thesis (1975).Google Scholar
- Pettorossi, A.: "A transformational approach for developing parallel programs", CONPAR Conference Nürnberg (1981), LNCS 111, pp. 245–258.Google Scholar