-
Notifications
You must be signed in to change notification settings - Fork 154
On concurrency and programming
I've often been asked:
“Does your CSP system support the Actor model?”.
This question is identical to:
“Are apples good for a fruit?”
Hoare's Communicating Sequential Process (CSP) concurrency model is an abstraction of the world, whereby you can afford multiple places of sequential algorithmic execution (the processes) and whereby these processes have the magical (i.e. postulated) power of creating ordered communication links amongst themselves.
The CSP model, in being a concurrency model, does not specify how this is actually accomplished.
This is where a programming model makes an entrance. Programming models (for concurrent systems) have many shapes and forms.
The Actor model, for instance, is a confusion between two meanings (and the entire spectrum in-between):
-
It can mean that the behavior of a CSP app is codified in multiple 1st-person point-of-view programs that run on each CSP process. Or,
-
It can mean that the behavior of a CSP app is codified by a single program with a 3rd-person (omniscient) point-of-view, (obviously supported by some unspecified runtime).
So, to the question, “How does Circuit relate to the Actor Programming Model?”, the answer is: One can wrap the circuit API (which is an “assembler for the cloud”) into an Actor-based Linguistic, or any other one for that matter.
The circuit is just a runtime with an API, like a CPU with an assembly language. Higher-level abstractions are to follow.