Thu Aug 25 11:23:37 EDT 2016
Declarative distributed programming
Building (heterogenous) distributed applications is hard. Why?
It seems inevitable to escape a design that relies on distributed
state, and communicating stateful objects have very complex
I've enjoyed using Erlang to mainly make the problem known:
- You will not understand the problem you're solving until you've seen
your proposed solution fail - due to distributed interacting state.
- The only hope you have to get anywhere near implementing your
requirements is to iterate development. Updates are essential in
- It makes sense to focus on the happy path, and design for robustness
through restarts: if something unexpected happens, give up and go
back to a known state. Move design effort into designing
- There is probably no coincidence that the supervisor approach
resembles the idea of the "germ line" in biological evolution:
everything except the germ line is disposable, as long as it runs
long enough to propagate the germ line.
All this leaves the functional programming mumbo-jumbo out of the
picture, or at least delegates it to the meta level.