Computer Scientist associated with Erlang
Francesco Cesarini is a computer scientist and founder of Erlang Solutions Ltd. He is working in the area of distributed systems.
From: Wikiquote (CC BY-SA 4.0)
Showing quotes in randomized order to avoid selection bias. Click Popular for most popular quotes.
There is two ways basically to deal with concurrency. Mutable state, you must have shared memory, you must have threads, you must have mutexes when you access critical sections. If you are dealing with immutable state, what you do is processes will not share memory. The only way for them to share data is through a message passing that needs to copy the data from one process to another. They'll each have their own copy. So, two completely different paradigms, two completely different results.
A system which is strongly available means that it is not reliable because of the reliability you might need to take down the machines. On the other hands if you don't worry about the reliability of your data, as long as you've got a value which is not too old, you can go in and distribute it, and scale that way.
What you need to do is to make sure your threads become immutable. So you can change a data within a thread, but if you got two threads communicating with each other, you need to mimic this whole message passing approach. You need to copy the data from one threads to another, avoiding having shared state.
When you call a function with no side effects, what that means is, every time you call that functions with the same set of values, you always get back that same result. That's immutable state. Mutable state, when you're dealing with shared memory, you call a function with a set of values, you don't know what value you're gonna get back. So you got determinism versus non determinism here.