283
edits
KalmanKeri (talk | contribs) (→Syntax) |
KalmanKeri (talk | contribs) (→Notes) |
||
| Line 128: | Line 128: | ||
| <math>\rhd</math> || Pipe || right || lowest | | <math>\rhd</math> || Pipe || right || lowest | ||
|} | |} | ||
== Connections with other fields == | |||
=== Process calculus === | |||
Process calculi (or process algebras) is an approach for formally modeling concurrent systems. ''Process'' refers to the behavior of a system. The word ''algebra'' denotes an algebraic approach in talking about behavior, while the word ''calculus'' emphasizes the computational aspect of processes. | |||
<ref> | |||
[https://pdf.sciencedirectassets.com/271538/1-s2.0-S0304397500X05853/1-s2.0-S0304397505000307/main.pdf?X-Amz-Security-Token=IQoJb3JpZ2luX2VjEN%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwEaCXVzLWVhc3QtMSJIMEYCIQCMZBB4AA1udjrVniZfBXgYqHN4EiFJ94RntrWOYPy56AIhAN9Xlt44hS J.C.M. Baeten: A brief history of process algebra.] | |||
</ref> | |||
There are lots of process calculi and none of them can be pointed to as the primary one. | |||
A process calculus can be characterized by the basic units of behavior (actions, events) and formers of compound processes (operators, combinators). | |||
Implementations may include several of both and they are often open for extensions. | |||
From the literature it is a recurrent pattern that processes can be examined in two ways: one can combine component processes and examine the evolution of the resulting process. In this setting component processes may communicate with each other and the compound process may come to a rest without displaying external behavior. A single process can also be examined by placing it into a (usually not strictly specified) environment which is able to interact with the process. | |||
Pipe-calculus fits into this framework if we make the following observations. | |||
* Actions are the units of behavior. | |||
* Sequence and nondeterministic choice form basic process algebra (BPA). <ref> | |||
[https://www.cs.vu.nl/~wanf/BOOKS/procalg.pdf | |||
Wan Fokkink: Introduction to Process Algebra.] | |||
</ref> | |||
* The pipe operation can be seen as a restricted, unidirectional parallel composition. | |||
However there are notable differences. Communication primitives in mainstream process calculi often unify two conceptual steps: the selection of a communication target (e.g. a channel or another process) and the act of message sending. The two steps are unseparable. Although one can introduce as a convention '''synchronization''' where the communicated message is ignored, and '''broadcast''' where a group of processes are waiting for messages on the same channel. | |||
In pipe-calculus these steps are separated and one can build the usual communication primitives on demand. | |||
In pipe-calculus there is no counterpart of '''hiding''' that prevents interference between two groups of processes that are using the same channel name for communication. In pipe-calculus there is no general, bidirectional parallel composition hence we don't need a hiding primitive. The pipe operation naturally restricts communication to a pipeline. | |||
In pipe-calculus, if a process fails to synchronize, it is aborted. This is different from the usual implementation where a process that fails to synchronize, does not evolve, it keeps "waiting" for a message. This semantics opens up the possibility for asynchronous communication. As a consequence, communication in pipe-calculus is inherently synchronous. | |||
== Notes == | == Notes == | ||
edits