|
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. It was designed in the company Ericsson to support distributed, fault-tolerant, soft-real-time, non-stop applications. It supports hot swapping so code can be changed without stopping a system. Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998. The Ericsson implementation is primarily interpreted, but also includes a compiler called HiPE (not supported on all platforms). Concurrent computing is the concurrent (simultaneous) execution of multiple interacting computational tasks. ...
In computer science, run time (with a space, though often its spelled without one) describes the operation of a computer program, the duration of its execution, from beginning to termination (compare compile time). ...
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions. ...
Eager evaluation is the evaluation model in most traditional programming languages. ...
Single assignment is used to describe a programming language or representation in which one can bind a value to a name at most once. ...
On computer science, a datatype (often simply type) is a name or label for a set of values and some operations which can be performed on that set of values. ...
Ericsson () NASDAQ: ERICY is a Swedish telecommunications equipment manufacturer, founded in 1876 as a telegraph equipment repair shop by Lars Magnus Ericsson. ...
Wikipedia does not have an article with this exact name. ...
Hot swapping is the ability to remove and replace components of a machine, usually a computer, while it is operating. ...
Open source refers to projects that are open to the public and which draw on other projects that are freely available to the general public. ...
Creating and managing processes is trivial in Erlang, whereas threads are considered a complicated and error prone topic in most languages. In Erlang, all concurrency is explicit. A thread in computer science is short for a thread of execution. ...
Erlang is named after A. K. Erlang. It is sometimes thought that its name is an abbreviation of ERicsson LANGuage, owing to its heavy use inside Ericsson. According to Bjarne Däcker who headed the Computer Science Lab at the time, this duality is intentional. Agner Krarup Erlang (January 1, 1878–February 3, 1929) was a Danish mathematician, statistician, and engineer who invented the fields of queueing theory and traffic engineering. ...
Functional language
Code looks like this: -module(fact). -export([fac/1]). fac(0) -> 1; fac(N) when N > 0 -> N * fac(N-1). Below is an implementation of a Quicksort algorithm. Quicksort in action on a list of random numbers. ...
%% quicksort:qsort(List) %% Sort a list of items -module(quicksort). -export([qsort/1]). qsort([]) -> []; qsort([Pivot|Rest]) -> qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]). The above example recursively calls the function qsort until there is no more to be sorted. The expression [ X || X <- Rest, X < Pivot] can be read as "Choose all X where X is a member of Rest and X is less than Pivot", resulting in a very easy way of handling Lists. Since you can evaluate any boolean expression between two different datatypes, the evaluation is straightforward: for example, 1 < a will return true. However, a compare function can be used if the order on which Erlang bases its return value (true or false) needs to be changed. For example, if we would want an ordered list where a < 1 evaluates true. The following code would sort lists according to length: -module(listsort). -export([by_length/1]). by_length(Lists) -> F = fun(A,B) when is_list(A), is_list(B) -> length(A) < length(B) end, qsort(Lists, F). qsort([], _) -> []; qsort([Pivot|Rest], Smaller) -> qsort([ X || X <- Rest, Smaller(X, Pivot)], Smaller) ++ [Pivot] ++ qsort([ Y || Y <- Rest, not(Smaller(Y, Pivot))], Smaller). Concurrency and distribution oriented language The main strength of Erlang is support for concurrency. It has a small but powerful set of primitives to create processes and communicate between them. The process model is based on C.A.R. Hoare's Communicating Sequential Processes. Processes are the primary means to structure an application, and a very large number of them can be created without performance degradation (a benchmark with 20 millions processes was tried [1]). Wikiquote has a collection of quotations related to: Edsger Dijkstra In computer science, concurrency is a property of systems which consist of computations that execute overlapped in time, and which may permit the sharing of common resources between those overlapped computations. ...
Sir Charles Antony Richard Hoare (Tony Hoare or C.A.R. Hoare, born January 11, 1934) is a British computer scientist, probably best known for the development of Quicksort, the worlds most widely used sorting algorithm, and perhaps even the worlds most widely used algorithm of any kind...
In computer science, Communicating Sequential Processes (CSP) is a formal language for describing patterns of interaction in concurrent systems. ...
There is also built-in support for distributed processes. Processes may be created on remote nodes, and communication with them is transparent (i.e. the communication with remote processes is done exactly as the communication with local processes). Code examples: Pid = spawn(Mod, Func, Args) % execute function Func as new process Pid = spawn(Node, Mod, Func, Args) % execute function Func in remote node Node Pid ! a_message % send message to the process (asynchronously) receive % receive message sent to this process a_message -> do_something end. Concurrency supports primary method of error-handling in Erlang. When a process crashes, it neatly exits and sends a message to the controlling process who can take action. This way of error handling may increase maintainability and reduce complexity of code.
Distribution Erlang was released by Ericsson as open-source to ensure its independence from a single vendor and to increase awareness of the language. Distribution of the language together with libraries and real-time distributed database (Mnesia) is known as the Open Telecom Platform, or OTP. Ericsson and a few other companies offer commercial support for Erlang. Since taking the open-source path in 1998, it became used by several companies world-wide, including Nortel and T-Mobile. However, it hasn't yet become a wide-spread mainstream programming language. 1998 (MCMXCVIII) was a common year starting on Thursday of the Gregorian calendar, and was designated the International Year of the Ocean. ...
Nortel BCM 400 coupled with a IP phone Nortel Networks Corporation, formerly known as Northern Telecom Limited and now known simply as Nortel, is a telecommunications equipment manufacturer giant headquartered in Canada. ...
T-Mobile logo T-Mobile is a multinational mobile phone operator. ...
As of 2006, Erlang is under active development with regular releases. It is available for several Unix-like operating systems and Microsoft Windows. 2006 is a common year starting on Sunday of the Gregorian calendar. ...
A Unix-like operating system is one that behaves in a manner similar to a Unix system, while not necessarily conforming to or being certified to any version of the Single UNIX Specification. ...
â¹ The template below has been proposed for deletion. ...
See also - ejabberd, an XMPP/Jabber instant messaging server written in Erlang.
- Wings 3D, 3D modeller written in Erlang.
- Yet another web server (YAWS, fully featured Web server written in Erlang).
- Tsung, a high-performance benchmark tool.
ejabberd is a free (GPL) distributed fault-tolerant Jabber/XMPP server and is mainly written in Erlang. ...
Extensible Messaging and Presence Protocol, or XMPP, is an open, XML-based protocol for near real-time extensible messaging and presence events. ...
This article is about a communications protocol. ...
Wings 3D is a free and open source polygon mesh modeler inspired by Nendo and Mirai from Izware. ...
Tsung (earlier known as idx-Tsunami) is a stress testing tool written in the erlang language. ...
External links Main project - Website of the project
- Mailing lists and FAQ
- Erlang white paper
Other sites |