4 ms·
Concurrent programming would be hard even if we had great abstractions because concurrent programming means maintaining exponentially many possible states. If y
by tel 12y ago
Concurrent programming would be hard even if we had great abstractions because concurrent programming means maintaining exponentially many possible states. If you go down that route then there are few good tools for handling or even conceiving of such problems[0].
The other route is, I think, less well described as "abstraction" and more around restriction. For instance, Erlang's model simply ensures that while you're dealing with exponentially many program states, the kinds of interaction between those states means that you basically are able to pretend like they don't exist for most problems. (This is also the mechanism of things like Bloom and LVars which are whole models of commutative/convergent programming that happen to be executable in parallel).
[0] Here's a good one: combinatorial topology! https://www.elsevier.com/books/distributed-computing-through-combinatorial-topology/herlihy/978-0-12-404578-1 https://www.elsevier.com/books/distributed-computing-through...