Appeared in | 1986 |
Designed by | Ericsson |
Developer | Ericsson |
Typing discipline | dynamic, strong |
Influenced by | Prolog |
Influenced | Clojure, Scala |
License | Modified MPL |
Website | http://www.erlang.org/ |
Quoting from Wikipedia:
Erlang is a general-purpose concurrent programming language and runtime system. The sequential subset of Erlang is a functional language, with strict evaluation, single assignment, and dynamic typing. For concurrency it follows the Actor model. It was designed by Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. The first version was developed by Joe Armstrong in 1986. It supports hot swapping so code can be changed without stopping a system[2]. Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998.
While threads are considered a complicated and error-prone topic in most languages, Erlang provides language-level features for creating and managing processes with the aim of simplifying concurrent programming. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes[citation needed] the need for locks.
With our words, some major advantages supplied by Erlang are listed below.
- A full featured platform with fault-tolerance and millions of concurrent processes in mind. One can easily create a service distributed into two physically distinct machines. Creating millions of threads is just a routine while working on Erlang platform.
- Code hot-swapping without stopping the system. (The only practical implementation of such a feature as far as we know!)
- Bundled with OTP (Open Telecom Platform) libraries. (E.g. Mnesia distributed database server, etc.)
Reference Resources
Books
- Programming Erlang: Software for a Concurrent World by Joe Armstrong.
- Erlang Programming: A Concurrent Approach to Software Development by Francesco Cesarini, Simon Thompson.
- Erlang Programming at Wikibooks.
Other Resources
- InfoQ interview with Joe Armstrong about Erlang.
- Ulf Wiger's Multicore Programming in Erlang presentation at InfoQ.
- InfoQ interview with Joe Armstrong and Simon Peyton Jones discussing Erlang and Haskell. (Recommended!)
- Joe Armstrong's Systems that Never Stop presentation at InfoQ.
- John Hughe's John Hughes Contrasts Erlang and Haskell interview at InfoQ.
- Erlang CookBook at TrapExit.
- Series of tutorials by Joe Armstrong explaining how to make a fault-tolerant distributed "bank" server and a web-server which runs as a system daemon.
- Erlang for Sceptics is a practical entrance level guide with simple examples and gentle introduction to debugging facilities bundled with Erlang/OTP platform itself.
Communities
- Official Erlang mailing lists.
- TrapExit Erlang community website with articles, forums, mailing lists, wikis and cookbooks.
- #erlang IRC channel at irc.freenode.net.
- Planet Erlang
Editors
- There is an erlang-mode for emacs that is brought by OTP by default.
- Eclipse Erlang Plug-In: erlide.