198x: pure message passing (where all parameters are passed by values) was considered inefficient because one could pass a pointer instead of copying data.
200x: pure message passing is considered efficient because it allows massive parallelization.
That's a 180-degree flip! I think it makes senses. And it is very much in alignment with The Network Is The Computer.
His talk is highly recommended. Here are the six laws with the most important one bolded to keep a system from failing:
- Isolation: Processes must be totally separated from each other. Failure on one must not affect others. (This is why pure message passing is required. You definitely don't want to pass a point from one process to another.)
- Concurrency: Spawn million of processes!
- Failure detection: Failures must be remotely detectable.
- Failure identification: And failures must be analyzable, often after the fact, to find root causes.
- Live code upgrade: The system must be able to roll-forward, or backward, without shutting down.
- Stable storage: If you store something, it should be there forever. This implies multiple copies, distributions.