3073	 Communicating Sequential Processes	 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. Programming programming languages programming primitives program structures parallel programming concurrency input output guarded commands nondeterminacy coroutines procedures multiple entries multiple exits classes data representations recursion conditional critical regions monitors iterative arrays
