My Introduction to Erlang

I've just finished reading Joe Armstrong's PhD thesis entitled 'Making reliable distributed systems in the presence of software errors' (this is becoming a bit of a habit).

Anyway, I found it very clear and well presented. Although I don't know much about Erlang or switching systems, what Joe has to say about distributed software architectures has much in common with Decentralized Software Services (DSS). To paraphrase Joe's summary of the characteristics of Concurrency-Oriented Programming:

  • Services are isolated from one another. A fault in one should not adversely affect another.
  • Each service has an identifier, and is addressable by it.
  • There is no shared state between services.
  • Services interact via asynchronous messaging, which must be assumed to be unreliable.
  • Services are units of concurrency. They run independently of one another.