Communicating Sequential Processes

Communicating Sequential Processes

August 1978 | C.A.R. Hoare
This paper proposes that input and output are fundamental programming primitives, and that parallel composition of communicating sequential processes is a fundamental program structuring method. Combined with Dijkstra's guarded commands, these concepts are versatile and are illustrated through solutions to various programming exercises. Key concepts include input/output, guarded commands, concurrency, and parallelism. The paper introduces a programming language based on these ideas, featuring parallel commands, guarded commands, and input/output for communication between processes. It also discusses the use of structured commands, repetitive commands, and alternative commands for program control. The paper presents examples of processes for tasks such as copying, squashing, disassembling, and assembling data. It also addresses issues such as recursion, data representation, and synchronization. The paper highlights the use of coroutines, monitors, and scheduling for parallel programming. It discusses the limitations of the proposed language, including the lack of a proof method for program correctness and the need for further development. The paper concludes that the concepts and notations introduced are a partial solution to the problems tackled and that further discussion is needed.This paper proposes that input and output are fundamental programming primitives, and that parallel composition of communicating sequential processes is a fundamental program structuring method. Combined with Dijkstra's guarded commands, these concepts are versatile and are illustrated through solutions to various programming exercises. Key concepts include input/output, guarded commands, concurrency, and parallelism. The paper introduces a programming language based on these ideas, featuring parallel commands, guarded commands, and input/output for communication between processes. It also discusses the use of structured commands, repetitive commands, and alternative commands for program control. The paper presents examples of processes for tasks such as copying, squashing, disassembling, and assembling data. It also addresses issues such as recursion, data representation, and synchronization. The paper highlights the use of coroutines, monitors, and scheduling for parallel programming. It discusses the limitations of the proposed language, including the lack of a proof method for program correctness and the need for further development. The paper concludes that the concepts and notations introduced are a partial solution to the problems tackled and that further discussion is needed.
Reach us at info@study.space