Joe Armstrong has passed away <https://twitter.com...
# linking-together
s
k
“We require that the names of processes are unforgeable.. System security is intimately connected with the idea of knowing the name of a process.. In many primitive religions it was believed that humans had powers over spirits if they could command them by their real names. Knowing the real name of a spirit gave you power over the spirit, and using this name you could command the spirit to do various things for you.“ (section 2.4.4 of the Erlang thesis) By serendipity I just finally watched Ready Player One today, and was reminded of Vernor Vinge’s True Names as well: https://en.wikipedia.org/wiki/True_Names
Seems worth highlighting Armstrong’s definitions of error and failure. The Erlang thesis starts with this sentence:
How can we program systems which behave in a reasonable manner in the presence of software errors?
This begs the question of what an error is. The introductory chapters bounce between the terms ‘error’ and ‘fault’ or ‘failure’, which felt initially like a weakness of the exposition. I felt like I understood what was meant by ‘fault’ and ‘failure’ — the program crashes. So it felt overblown to generalize from crashes to all errors. But it all makes sense when I skip ahead to section 4.4, which defines ‘error’ like this:
An error occurs when the programmer doesn’t know what to do.
And the suggested response is the section title:
Let the process crash.
Concurrency provides the promise of turning all unanticipated situations into crashes. As long as the platform is equipped to detect and respond to crashes, this turns a hard problem into an easier one.
👍 1