Communicating sequential processes (CSP) is a language that uses math and logic to analyze communication between systems. CSP describes concurrent processes, which operate simultaneously in a system but are not parallel. Concurrency allows normal computer programs to run properly by executing different tasks during the same period of time, but these tasks are not dependent on (or parallel to) each other. In CSP, concurrent systems communicate through passing messages: sequential processes are communicating between each other. This communication is algebraic and logical.
CSP was initially developed by Tony Hoare in 1978. He refined his theory in the 1980s and published a popular book on CSP; that book, simply titled Communicating Sequential Processes, is still regarded as one of the leading authorities on this language. CSP can be used to analyze software, computer systems, and some programming languages. The programming language Go, for example, has native concurrency and CSP features.
CSP breaks down processes that happen concurrently and interact with each other, using algebraic equations and logic to describe the interactions. This is known as process algebra. In his book, Hoare detailed the difference between events (specific moments of objects) and processes (how those objects behave over their life). An event might be described as x in a CSP equation, and a process might be described as Y. Events and processes are strictly differentiated. Guards are requirements that are placed before a command in CSP, laying down restrictions before a program command can be executed. These algebraic formulas present clear connections between computing systems and processes that run concurrently.