Concurrency Oriented Programming in Erlang

Joe Armstrong. Concurrency oriented programming in Erlang.
Invited talk, FFG 2003.

This paper is a great introduction to Erlang, more up to date than Joe's invited paper at ICFP, and with more on share-nothing concurrency and on commercial applications.

Some key quotes:

Erlang processes have share nothing semantics - sharing no data leads
to highly efficient code. Traditionally concurrent programs used
shared data, protected by semaphores of mutexs, that reason being
(supposedly) to improve efficiency.

Precisely this sharing of data leads to a number of problems which
ultimately leads to performance degradation.

Constructing systems, as opposed to individual pro- grams, using the
philosophy of share-nothing processes has several significant

The system is easily distributable - to turn a non- distributed
program into a distributed program can often be achieve by merely
allocating the different parallel processes to different machines.

The system is easily made fault tolerant - this can be achieved by
arrangements of processes into workers and observers. The worker
processes perform computations, and the observer processes observe the
workers and perform error recovery if anything goes wrong in a worker
process. The worker and observer processes can run on the same machine
(for local error recovery) or on physically separated machines (for
building fault- tolerant systems).

The system is easily scalable - this can be achieved by adding more
processors and moving processes between processors.


The AXD301 is a fault-tolerant carrier-class ATM (Asynchronous
Transfer Mode) switch manufactured by Ericsson Telecom AB.

The AXD has 11% of the world market share for carrier class ATM
switches making it the market leader in this market segment.

The measured reliability is quoted as being 99.9999999% (9 nines)
corresponding to a down time of 31 ms. year! - this makes it one of
the most reliable switches ever made.

British Telecom use the AXD301 in their telephony and data backbone,
the system is currently handling 30-40 million calls per week per node
and is the world's largest telephony over ATM network.

The AXD301 has 1.7 million lines of Erlang, making it the largest
functional program ever written.

Comments: Post a Comment

<< Home

This page is powered by Blogger. Isn't yours?