Pipe-calculus: Difference between revisions

No edit summary
Line 412: Line 412:


* The most outstanding difference is the lack of channels. Pipe-calculus processes only have a conceptual input and output, however one can simulate channels with synchronisation where atoms stand for channel names.  
* The most outstanding difference is the lack of channels. Pipe-calculus processes only have a conceptual input and output, however one can simulate channels with synchronisation where atoms stand for channel names.  
* Communication primitives in mainstream process calculi often inseparably unite two conceptual steps: the selection of a communication channel and the act of message sending. For example [[wikipedia:pi-calculus|Π-calculus]] <ref> Joachim Parrow: [https://courses.cs.vt.edu/~cs5204/fall05-kafura/Papers/PICalculus/parrow~2.pdf An Introduction to the π-Calculus], chapter to appear in Handbook of Process Algebra, ed. Bergstra, Ponse and Smolka,
* Communication primitives in mainstream process calculi often inseparably unite two conceptual steps: the selection of a communication channel and the act of message sending. For example [[wikipedia:pi-calculus|π-calculus]] <ref> Joachim Parrow: [https://courses.cs.vt.edu/~cs5204/fall05-kafura/Papers/PICalculus/parrow~2.pdf An Introduction to the π-Calculus], chapter to appear in Handbook of Process Algebra, ed. Bergstra, Ponse and Smolka,
Elsevier</ref> defines ''input prefixing'' <math>c\left(x\right).P</math> and ''output prefixing'' <math>\overline{c} \langle y \rangle.P</math> to denote receiving a name via channel <math>c</math> and sending a name via channel <math>c</math> respectively, before proceeding as <math>P</math>. Although one can introduce as convention ''synchronization'' where the communicated message is ignored, and ''broadcast'' where a group of processes are receiving messages on the same channel. In pipe-calculus these steps are separated by design.
Elsevier</ref> defines ''input prefixing'' <math>c\left(x\right).P</math> and ''output prefixing'' <math>\overline{c} \langle y \rangle.P</math> to denote receiving a name via channel <math>c</math> and sending a name via channel <math>c</math> respectively, before proceeding as <math>P</math>. Although one can introduce as convention ''synchronization'' where the communicated message is ignored, and ''broadcast'' where a group of processes are receiving messages on the same channel. In pipe-calculus these steps are separated by design.
* In pipe-calculus there is no counterpart of ''name hiding'' that prevents interference between two groups of processes using the same channel name for communication. Since there is no general, bidirectional parallel composition, we don't need a hiding primitive. The pipe operation naturally restricts communication to a pipeline.
* In pipe-calculus there is no counterpart of ''name hiding'' that prevents interference between two groups of processes using the same channel name for communication. Since there is no general, bidirectional parallel composition, we don't need a hiding primitive. The pipe operation naturally restricts communication to a pipeline.
283

edits