Skip to main content

Erlang: Erlang Style Concurrency

I'm lovin' this article: http://www.defmacro.org/ramblings/concurrency.html.

It meshes nicely with my earlier post here. Erlang is like stackless Python with coroutines in that it's a lightweight threading system built on top of asynchronous IO. However, it's different in that there is no data shared between threads (i.e. a shared heap protected by locks). Instead, to share data, you must use message passing. This part matches my earlier post. Of course, the benefit is that it's trivial to do distributed computing with such systems.

Anyway, Erlang has been around a long time and is incredibly robust. I'd love to get a chance to use it.

Comments

mike bayer said…
erlang seems to be all over the map suddenly, at least within the blogspace/reddit.

looks like its time to build 38 more web frameworks !
/me giggles
Anonymous said…
I'm a programmer with Jaduka.com and we've been developing telecommunications services with python recently. Erlang's lightweight threading and distributed processing primitives are ideal for such an environment but we've grown to enjoy python. Stackless fills some of the void but I haven't seen much discussion about using it in telephony applications. I think more work is necessary to add asynchronous IO primitives into the Stackless distribution before we'll see more of this.
> Stackless fills some of the void but
> I haven't seen much discussion about
> using it in telephony applications.

Hmm, neat. I met one of the guys working on GNU Telephony, and they were using Python too :)

> Erlang's lightweight threading and
> distributed processing primitives
> are ideal for such an environment

Yeah, that's pretty close to what Erlang was designed for.

> I think more work is necessary to add
> asynchronous IO primitives into the
> Stackless distribution before we'll
> see more of this.

The safe thing to do would be to use Twisted, but that makes the code more...uh...twisted ;)

The fact of the matter is that Python simply *cannot match* some of the things that Erlang does. I'm a huge Python fanatic, but Erlang has some unique advantages for a certain domain of problems. These include the fact that threads in Erlang don't share a common heap and the fact that Erlang is intrinsically stackless.

On the other hand, Python has a much larger community and a much larger set of well written libraries. Even the language itself is arguably more featureful. Try doing Unicode-compatible regular expressions in Erlang ;) It's a trade off.