• Process Calculi
From Wikipedia:
In computer science, the process calculi (or process algebras) are a diverse family of related approaches for formally modelling concurrent systems. Process calculi provide a tool for the high-level description of interactions, communications, and synchronizations between a collection of independent agents or processes. They also provide algebraic laws that allow process descriptions to be manipulated and analyzed, and permit formal reasoning about equivalences between processes.
Precursors
- Lambda Calculus (1936)
- Petri nets (1962)
- Actor model (1973)
Examples of Process Calculi
Leading examples of process calculi include the following:
- CSP (1977; influenced occam, Go, Clojure core.async)
- CCS (1980)
- ACP (1982)
- LOTOS (1988)
- the π-calculus (1992)
- the join-calculus (1995)
- PEPA (1996)
- the ambient calculus (1998)
Essential Features
While the variety of existing process calculi is very large (including variants that incorporate stochastic behaviour, timing information, and specializations for studying molecular interactions), there are several features that all process calculi have in common:
- Representing interactions between independent processes as communication ( message-passing), rather than as modification of shared variables.
- Describing processes and systems using a small collection of primitives, and operators for combining those primitives.
- Defining algebraic laws for the process operators, which allow process expressions to be manipulated using equational reasoning.
Key operations that processes need to support:
- Parallel composition of processes
- Specification of which channels to use for sending and receiving data
- Sequentialization of interactions
- Hiding of interaction points
- Recursion or process replication