Abstract
This paper suggests that input and output are basic primitives of programming and that parallel composition of communicating sequential processes is a fundamental program structuring method. When combined with a development of Dijkstra’s guarded command, these concepts are surprisingly versatile. Their use is illustrated by sample solutions of a variety of familiar programming exercises.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
Atkinson, R., and Hewitt, C. 1976. Synchronisation in actor systems. Working Paper 83, M.I.T., Cambridge, Mass., Nov.
Brinch Hansen, P. 1975. The programming language Concurrent Pascal. IEEE Trans. Software Eng. 1, 2 (June), 199–207.
Campbell, R.H., and Habermann, A.N. 1974. The specification of process synchronisation by path expressions. Lecture Notes in Computer Science16, Springer, 89–102.
Conway, M.E. 1963. Design of a separable transition-diagram compiler. Comm. ACM6, 7 (July), 396–408.
Dahl, O.-J., et al. 1967. SIMULA 67, common base language. Norwegian Computing Centre, Forskningveien, Oslo.
Dijkstra, E.W. 1968. Co-operating sequential processes. In Programming Languages, F. Genuys, Ed., Academic Press, New York, 43–112.
Dijkstra, E.W. 1972. Notes on structured programming. In Structured Programming, Academic Press, New York, 1–82.
Dijkstra, E.W. 1975a. Guarded commands, nondeterminacy, and formal derivation of programs. Comm. ACM18, 8 (Aug.), 453–457.
Dijkstra, E.W. 1975b. Verbal communication, Marktoberdorf, Aug.
Hoare, C.A.R. 1972a. Towards a theory of parallel programming. In Operating Systems Techniques, Academic Press, New York, 61–71.
Hoare, C.A.R. 1972b. Proof of correctness of data representations. Acta Informatica1, 4, 271–281.
Kahn, G. 1974. The semantics of a simple language for parallel programming. In Proc. IFIP Congress 74, North Holland.
Liskov, B.H. 1974. A note on CLU. Computation Structures Group Memo. 112, M.I.T., Cambridge, Mass.
Mcllroy, M.D. 1968. Coroutines. Bell Laboratories, Murray Hill, N.J.
Naur, P., Ed. 1960. Report on the algorithmic language ALGOL 60. Comm. ACM3, 5 (May), 299–314.
Reynolds, J.C. 1965. COGENT. ANL-7022, Argonne Nat. Lab., Argonne, Ill.
Thompson, K. 1976. The UNIX command language. In Structured Programming, Infotech, Nicholson House, Maidenhead, England, 375–384.
van Wijngaarden, A., Ed. 1969. Report on the algorithmic language ALGOL 68. Numer. Math. 14, 79–218.
Wulf, W.A., London, R.L., and Shaw, M. 1976. Abstraction and verification in ALPHARD. Dept. of Comptr. Sci., Carnegie-Mellon U., Pittsburgh, Pa., June.
Wirth, N. 1971. The programming language PASCAL. Acta Informatica1, 1, 35–63.
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1978 Springer Science+Business Media New York
About this chapter
Cite this chapter
Hoare, C.A.R. (1978). Communicating Sequential Processes. In: Hansen, P.B. (eds) The Origin of Concurrent Programming. Springer, New York, NY. https://doi.org/10.1007/978-1-4757-3472-0_16
Download citation
DOI: https://doi.org/10.1007/978-1-4757-3472-0_16
Publisher Name: Springer, New York, NY
Print ISBN: 978-1-4419-2986-0
Online ISBN: 978-1-4757-3472-0
eBook Packages: Springer Book Archive