<p>There are no metrics, but an excellent discussion of many concurrency models, in <a href="https://syndicate-lang.org/tonyg-dissertation/" rel="noreferrer">Tony Garnock-Jones PhD thesis</a>. See the (HTML version of the) <a href="https://syndicate-lang.org/tonyg-dissertation/html/#CHAP:APPROACHES-TO-COORDINATION" rel="noreferrer">chapter &quot;Approaches to coordination&quot;</a>. This studies concurrency models with a particular focus, namely how information is exchanged for coordination.</p>

CC BY-SA 4.0
2020-12-16T11:09:34.273Z
2020-12-16T11:09:34.273Z
gasche
<p>I think you can build such metrics as a graph of dependencies with objects and arrows (functions), both referenced as nodes, and dependencies as vertices. Then you have at least connectivity (connection, connexité) between two nodes as the shortest number of nodes between; that's a first common metric (in graphs and physics).</p>
<p>The topology is the discrete topology. There are no spontaneously any geometry with measure, but when one add some time notion (complexity, measured time in the context of an implementation), it is clear that such geometries and metrics can be constructed.</p>
<p>Several metrics hence can be invoked, as well as functions over them, in order to compare the models.</p>
<p>I think you might want to look on the side of <a href="https://en.wikipedia.org/wiki/Operad" rel="nofollow noreferrer">operads</a> to connect geometries, topology and algorithms, maybe <em>Algebraic Operads, An Algorithmic Companion</em>, Murray R. Bremner, Vladimir Dotsenko, (2016, Chapman), among others.</p>

CC BY-SA 4.0
2020-12-17T20:58:21.033Z
Could you elaborate on this? I'm not sure what you propose works, it's not clear to me why operads should be a good formalism for comparing the expressive power of programming languages at all.
Martin Berger
CC BY-SA 4.0
2020-12-16T16:39:53.773Z
2020-12-16T17:35:27.060Z
2020-12-16T17:35:27.060Z
Soleil
<p>In <em>Seven Concurrency Models in Seven Weeks</em> by Butcher, it compares Actor Model and Communicating Sequential Processes (CSP):</p>
<ul>
<li><p>CSP is more <strong>flexible</strong> than actor model:
In actor model, the medium of communication is tightly coupled to the unit of execution: each actor has precisely one mailbox;
In CSP, channels are first class and can be independently created, written to, read from, and passed between tasks.</p>
</li>
<li><p>Nothing stops  CSP  from  supporting <strong>distribution  and  fault  tolerance</strong>,  but historically  CSP  has not had  the  same  level  of  focus  and  support  of the two as actor model does.</p>
</li>
<li><p>Both actor model and CSP do not directly support <strong>parallelism</strong>. Parallelism has to be created based on concurrency building blocks.</p>
</li>
</ul>
<p>I was wondering if the two concurrency models can be compared in terms of some metrics (some measurement, quantities, ...) in aspects either mentioned above or not. (Butcher's book doesn't mention such metrics. I also tried  but haven't found it in Varela's <em>Programming Distributed Computing Systems</em>.)</p>
<p>If concurrency models can not be compared in metrics, how can they be compared?</p>
<p>I am looking for some metrics to fit into the comparison between the concurrency models. Also for books, papers and articles for comparing them.</p>
<p>Thanks.</p>

CC BY-SA 4.0
2020-12-17T20:55:16.517Z
I am having a bit of a problem with claims like actor model and CSP do not directly support parallelism. Comparing different concepts of computation is a difficult issue. The  Church-Turing thesis assures us  that they are all the same. Making finer distinctions raises the question: how? And it turns out that different approaches to comparison give different results. Maybe D. Gorla, *A Taxonomy of Process Calculi for Distribution and Mobility*  is a good starting point?
Martin Berger
CC BY-SA 4.0
2020-12-17T21:02:10.267Z
An relevant early summary is: V. Sassone, M. Nielsen, G. Winskel, *Models for concurrency: Towards a classification.*
Martin Berger
CC BY-SA 4.0
2020-12-17T22:18:18.427Z
What do you mean by metric? You want to metric space of all programming languages, and have a meaningful motion of distance on this space? What should this distance express?
Martin Berger
<reference-request><pl.programming-languages><dc.distributed-comp><advice-request><concurrency>
Can concurrency models be compared in terms of some metrics?
Tim
# Can concurrency models be compared in terms of some metrics?

(Asked by: username_0 on 2020-12-15)

In *Seven Concurrency Models in Seven Weeks* by Butcher, it compares Actor Model and Communicating Sequential Processes (CSP):

* CSP is more **flexible** than actor model:
  In actor model, the medium of communication is tightly coupled to the unit of execution: each actor has precisely one mailbox;
  In CSP, channels are first class and can be independently created, written to, read from, and passed between tasks.
* Nothing stops CSP from supporting **distribution and fault tolerance**, but historically CSP has not had the same level of focus and support of the two as actor model does.
* Both actor model and CSP do not directly support **parallelism**. Parallelism has to be created based on concurrency building blocks.

I was wondering if the two concurrency models can be compared in terms of some metrics (some measurement, quantities, ...) in aspects either mentioned above or not. (Butcher's book doesn't mention such metrics. I also tried but haven't found it in Varela's *Programming Distributed Computing Systems*.)

If concurrency models can not be compared in metrics, how can they be compared?

I am looking for some metrics to fit into the comparison between the concurrency models. Also for books, papers and articles for comparing them.

Thanks.

**Tags:** reference-request, pl.programming-languages, dc.distributed-comp, advice-request, concurrency
> **Comments:**
> **username_1**: I am having a bit of a problem with claims like actor model and CSP do not directly support parallelism. Comparing different concepts of computation is a difficult issue. The  Church-Turing thesis assures us  that they are all the same. Making finer distinctions raises the question: how? And it turns out that different approaches to comparison give different results. Maybe D. Gorla, *A Taxonomy of Process Calculi for Distribution and Mobility*  is a good starting point?  
> **username_1**: An relevant early summary is: V. Sassone, M. Nielsen, G. Winskel, *Models for concurrency: Towards a classification.*  
> **username_1**: What do you mean by metric? You want to metric space of all programming languages, and have a meaningful motion of distance on this space? What should this distance express?  

---

## 2 answers

### Answer by username_2 on 2020-12-16. Score: 5

There are no metrics, but an excellent discussion of many concurrency models, in [Tony Garnock-Jones PhD thesis](https://syndicate-lang.org/tonyg-dissertation/). See the (HTML version of the) [chapter "Approaches to coordination"](https://syndicate-lang.org/tonyg-dissertation/html/#CHAP:APPROACHES-TO-COORDINATION). This studies concurrency models with a particular focus, namely how information is exchanged for coordination.


---

### Answer by username_3 on 2020-12-16. Score: 0

I think you can build such metrics as a graph of dependencies with objects and arrows (functions), both referenced as nodes, and dependencies as vertices. Then you have at least connectivity (connection, connexité) between two nodes as the shortest number of nodes between; that's a first common metric (in graphs and physics).

The topology is the discrete topology. There are no spontaneously any geometry with measure, but when one add some time notion (complexity, measured time in the context of an implementation), it is clear that such geometries and metrics can be constructed.

Several metrics hence can be invoked, as well as functions over them, in order to compare the models.

I think you might want to look on the side of [operads](https://en.wikipedia.org/wiki/Operad) to connect geometries, topology and algorithms, maybe *Algebraic Operads, An Algorithmic Companion*, Murray R. Bremner, Vladimir Dotsenko, (2016, Chapman), among others.

> **Comments:**
> **username_1**: Could you elaborate on this? I'm not sure what you propose works, it's not clear to me why operads should be a good formalism for comparing the expressive power of programming languages at all.  

---

