Sunday, October 16, 2011

Resilient processes (and erlang)

So of late - Erlang has been a great tool I have been using as part of the day job.

Its headline feature seems to be concurrency - and whilst that is part of it - I think the real secret sauce is reliability. We have concurrent software, we have fast software, but we don't really have a lot of reliable software.

At its core it is quite simple: take the semantics of operating system processes, and their isolation from each other, and scale that down so you can have thousands of them. A typical Erlang application is made up of many processes (not to be confused with OS processes) - which are light, disposable and have their own memory heap, garbage collector etc...

I did a talk on this recently (and will be refining this for an upcoming talk):

It is worth noting that Erlang draws inspiration from both functional programming, and logic programming, both things near and dear to my heart, it is no surprising I found it quite pleasant in almost every way.