Understanding Erlang
With all the light on Erlang of late, I thought it’d be worth taking a second look at it. I had looked at it briefly several years ago, but not found any mental traction at the time. So, in order to manage to learn enough to be dangerous, I bought the latest book and started reading it. And here’s a few thoughts:
- The book is focused on teaching you Erlang, but the “how” not the “why”. For that, you absolutely should read Joe Armstrong’s dissertation: Making Reliable Distributed Systems in the Presence of Software Errors (PDF). After reading that, I think I grok more than I ever have before about the approach and rationale.
- If someone had said “this was originally just a Prolog derivative” then I would have gotten things faster. It should be obvious, and it is in retrospect, but it wasn’t at the time.
- The value of Erlang is not as much in its specific linguistic strategies, but in the infrastructure that the language and OTP library provide for writing bullet-proof software.
- Concurrent programming is hard. If you look at the use of behavior strategies in Erlang, you can see the understanding that “flawless” concurrent code can not be written by just anyone, but instead, give the average programmer a place to plug their sequential code into and gain the concurrency.
One thing that does bug me, as it seems to occur both in Joe’s dissertation and in much of the community, is some mistaken perception that object-oriented designs are not capable of the level of isolation that Erlang exhibits. This might be true of the implementations that are popular, but it is not, in my view, a result of the model. Smalltalk, for example, is a strict message-passing language, as is Erlang, and a different implementation could exhibit the level of isolation that Erlang does.
This entry was posted at 1:59 pm on 14 August 2007 and is filed under Erlang. You can follow any responses to this entry through the post-specific RSS 2.0 feed.
No comments found.
Both comments and pings are currently closed.