The Erlang language, named after Danish mathematician Agner Erlang, was developed by a team of employees at the giant Swedish communications firm Ericsson, where it's used to write huge real-time control programs for telephone exchanges and network switches. Since it's targeted specifically at the communications industry, Erlang eschews many powerful features of Miranda and Concurrent Clean for execution speed, but it nevertheless remains a pure FPL (functional programming language) with no destructive variable assignment.
Erlang supports concurrency and has built-in primitives for asynchronous message-passing between processes. The language was originally developed on an interpreter written in Prolog, but the latest version generates C macros for compilation by standard C compilers. Erlan
g uses a fairly orthodox FPL syntax with both pattern matching and guards. Here's one possible definition of the factorial function:
factorial(0) -> 1
factorial(n) -> n * factorial(n-1)
Lists and tuples are the only compound data types Erlang supports; however, like Clean, it features an efficient interface to several GUI operating systems, so you can write interactive graphical applications. Special attention is paid within Erlang to error-handling behavior and to ``hot'' replacement of code modules in running systems, which is vital in the telecommunications business.
Ericsson's experience with Erlang so far is extremely encouraging. Joe Armstrong, one of Erlang's developers, tells me his team has just written ``what we believe to be the largest declarative program ever written: 250,000 lines of Erlang and still growing.'' This would be equivalent to several million lines of a less-expressive language, such as C.
Ericsson will release Unix and Windows NT versions of Erlang a
s commercial products this summer. A free DOS version is planned soon.