Selective receive (RE: Structs (was RE: Record selectors))

Ulf Wiger <>
Tue Jan 21 17:37:52 CET 2003

On Tue, 21 Jan 2003, Sven-Olof Nystr|m wrote:

>On the other hand, I suppose it would be interesting for
>future language designers to learn _why_ Erlang is the best
>concurrent language available. Is it because of matching
>receive or something else?

This is a very interesting question, and one that we need to
be able to answer. Assuming that Erlang _is_ the best
concurrent language available (which of course it is ;), I
would like to start proposing a few explanations (possibly
in priority order -- I'm not sure):

1. A community of users who have been at it writing
   massively concurrent, robust and scalabe applications
   for years, and who are eager to share their knowledge.

2. An execution model that encourages people to use lots of
   processes (i.e. processes are _cheap_; asynchronous
   message passing scales well; and preemptive
   multi-tasking frees the programmer from the horrors
   of must-never-block-so-everything-is-asynchronous

3. Share-nothing semantics, avoiding many of the horrible
   synchronization problems that may otherwise plague
   concurrency programming.

4. A syntax that makes it very easy to wrap asynchronous
   communication inside a synchronous API, which means
   that the majority of programs don't need to know
   whether other processes/nodes are involved in the
   execution of a particular functions.

5. A variety of good support libraries for building
   robust and scalable servers.

I left out a few things. Others are welcome to comment on
the list.

Ulf Wiger, Senior Specialist,
   / / /   Architecture & Design of Carrier-Class Software
  / / /    Strategic Product & System Management
 / / /     Ericsson Telecom AB, ATM Multiservice Networks

More information about the erlang-questions mailing list