Resistance to Erlang

David Hopwood david.nospam.hopwood@REDACTED
Tue Apr 12 05:12:34 CEST 2005

Dominic Williams wrote:
> Suggested change: use Erlang
> Resistance:
>> "Programming in Erlang requires much effort, since you
>> must deal with process calculi."
> Reason:
> Erlang combines functional programming and the pi calculus, each based 
> on mathematics and logic. It's a really interesting academic field, I'd 
> love to work on that sort of thing if I were a professor, but it has no 
> practical applications, especially with teams of ordinary programmers 
> who don't have Ph.D's in mathematics.

In practice, message passing concurrency, especially combined with mostly
functional programming as in Erlang, is much easier to deal with for
ordinary programmers than is shared state concurrency using mutexes,
condition variables etc. In particular it's easier to write programs that
avoid both deadlock and race conditions.

To correct a minor technical point, Erlang supports asynchronous message passing.
The pi calculus uses synchronous message passing, which is a quite different
model. It would be possible to model Erlang using (other) process calculi,
but that doesn't make Erlang any less practical, and there's no need for
anything like that when doing ordinary Erlang programming.

Mickael Remond wrote:
 > Erlang has a strong background, coming from fields that lead to a very
 > advanced and efficient programming. However, you do not have to
 > understand the theorical background in Erlang to be an efficient and
 > effective programmer, as you do not have to understand the mathematical
 > background behind SQL (such as relational algebra) to write database
 > queries.

Personally I'd say that you *do* have to understand relational algebra
to write database queries well -- so this is not a good example. It's not
as though relational algebra is difficult (it's quite a bit simpler than
the pi calculus).

David Hopwood <david.nospam.hopwood@REDACTED>

More information about the erlang-questions mailing list