Erlang Language

Erlang is a general-purpose development environment, particularly well-suited to fault-tolerant, concurrent, distributed, soft real-time applications.

Erlang is a strict, dynamically typed FunctionalProgramming language with a declarative syntax and powerful yet simple support for ConcurrentProgramming, using an asynchronous message passing mechanism based on ActorsModel.

Erlang is compiled to bytecode which runs in a VirtualMachine. It comes complete with development tools (compiler, debugger, profiler), libraries and applications including the MnesiaDatabase, an HTTP server and a CORBA ORB.

Erlang is developed and supported by the Ericsson ComputerScience lab, which has distributed it freely under an OpenSource license since 1998. Its principal inventor was JoeArmstrong.

See ErlangCodeExamples.

Erlang is not ObjectOriented in the usual sense. There are no classes, no inheritance, and in keeping with FunctionalProgramming tradition, data structures are separate from functions.

On the other hand, Erlang offers processes, which are like threads except that they are completely isolated from each other and may only communicate by sending and receiving asynchronous messages. These Erlang processes are ideal to represent physical models, and in many ways satisfy the NygaardClassification better than most traditional ObjectOriented languages. These concurrent processes are polymorphic, in that any process which responds to a set of messages (an alphabet, in CSP parlance), may be transparently substituted for another. Processes also have an identity (a unique, unforgeable process id). Code, in the form of functions, may easily be reused by different processes.

Erlang also offers behaviors, which are similar to Java interfaces: a module conforms to a behavior if it offers a set of functions.

So Erlang in fact offers considerable support for modeling the code as objects. However, Erlang developers tend to model as processes only objects that have behavior (and possibly state), unlike SmalltalkLanguage or JavaLanguage developers who must model everything as one. In particular, Erlang data types are not objects.

I recently used Erlang for a small statistical project, and while I've played with it before, using it in a real application is even better. It's like a wonderful mix of Haskell and Python, with a big chunk of Prolog thrown in just for fun. It DOES have certain parts that make you say "hunh, that's weird", but they are far outnumbered by the bits that make you stop for a second and go "...oooooo. Shiny." -- SimonHeath


Also see:, CompaniesUsingErlang, WingsThreeDee, SmugErlangWeenie, Erlang wiki (

Erlang developers on the Wiki: LukeGorrie, DominicWilliams, ...
There is a ComprehensiveErlangArchiveNetwork (CEAN)
CategoryPlatform CategoryProgrammingLanguage CategoryFunctionalProgramming CategoryConcurrency

View edit of May 15, 2011 or FindPage with title or text search