|
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. It supports hot swapping so code can be changed without stopping a system. [1] Erlang was originally a proprietary language within Ericsson, but was released as open source in 1998. The Ericsson implementation primarily runs interpreted virtual machine code, but it also includes a native code compiler (supported on most but not all platforms), developed by the High Performance Erlang Project (HiPE)[2] at Uppsala University. It also now supports interpretation via escript as of r11b-4. A programming paradigm is a paradigmatic style of programming (compare with a methodology, which is a paradigmatic style of doing software engineering). ...
This does not cite any references or sources. ...
Parallel programming (also concurrent programming), is a computer programming technique that provides for the execution of operations concurrently, either within a single computer, or across a number of systems. ...
Functional programming is a programming paradigm that treats computation as the evaluation of mathematical functions and avoids state and mutable data. ...
Year 1987 (MCMLXXXVII) was a common year starting on Thursday (link displays 1987 Gregorian calendar). ...
Ericsson () NASDAQ: ERIC. Founded in 1876, Ericsson is a leading provider of communications networks, related services and handset technology platforms. ...
For other uses, see Software developer (disambiguation). ...
Ericsson () NASDAQ: ERIC. Founded in 1876, Ericsson is a leading provider of communications networks, related services and handset technology platforms. ...
In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...
In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...
In computer science and computer programming, the term strong typing is used to describe those situations where programming languages specify one or more restrictions on how operations involving values having different datatypes can be intermixed. ...
Look up Implementation in Wiktionary, the free dictionary. ...
Scala is a multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. ...
A software license is a legal agreement which may take the form of a proprietary or gratuitous license as well as a memorandum of contract between a producer and a user of computer software. ...
In computing, the Mozilla Public License (MPL) is an open source and free software license. ...
Concurrent computing is the concurrent (simultaneous) execution of multiple interacting computational tasks. ...
A programming language is an artificial language that can be used to control the behavior of a machine, particularly a computer. ...
In computer science, runtime or run time 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. ...
In computer science, a type system defines how a programming language classifies values and expressions into types, how it can manipulate those types and how they interact. ...
In computer science, the Actor model is a mathematical model of concurrent computation that treats actors as the universal primitives of concurrent digital computation: in response to a message that it receives, an actor can make local decisions, create more actors, send more messages, and determine how to respond to...
Ericsson () NASDAQ: ERIC. Founded in 1876, Ericsson is a leading provider of communications networks, related services and handset technology platforms. ...
In computer science, Fault-tolerance is the property of a computer system to continue operation at an acceptable quality, despite the unexpected occurrence of hardware or software failures. ...
Realtime redirects here. ...
Hot swapping or hot plugging 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. ...
In computer science, an interpreter is a computer program that executes, or performs, instructions written in a computer programming language. ...
The Neo-Renaissance main University building in the University Park, Uppsala (designed by Herman Teodor Holmgren and completed in 1887). ...
Creating and managing processes is trivial in Erlang, whereas threads are considered a complicated and error prone topic in most languages. Though all concurrency is explicit in Erlang, processes communicate using message passing instead of shared variables, which removes the need for locks. For the form of code consisting entirely of subroutine calls, see Threaded code. ...
In computer science, message passing is a form of communication used in concurrent programming, parallel programming, object-oriented programming, and interprocess communication. ...
In computer science, a lock is a synchronization mechanism for enforcing limits on access to a resource in an environment where there are many threads 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 origin inside Ericsson. According to Bjarne Däcker, who headed the Computer Science Lab at the time, this duality is intentional.[1] 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. Q sort redirects here. ...
%% 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 invokes the function qsort until nothing remains to be sorted. The expression [ X || X <- Rest, X < Pivot] means “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. A compare function can be used, however, if the order on which Erlang bases its return value (true or false) needs to be changed. If, for example, we 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 Erlang's main strength is support for concurrency. It has a small but powerful set of primitives to create processes and communicate between them. Processes are the primary means to structure an Erlang application. Erlang processes are neither OS processes nor OS threads, but lightweight processes somewhat similar to Java's original “green threads” (the JVM now uses native threads). Like operating system processes (and unlike green and O/S threads) they have no shared state between them. The estimated minimal overhead for each is 300 bytes, so many of them can be created without degrading performance (a benchmark with 20 million processes was tried[3]). Erlang has supported symmetric multiprocessing since release R11B of May 2006. The Dining Philosophers, a classic problem involving concurrency and shared resources In computer science, concurrency is a property of systems in which several computational processes are executing at the same time, and potentially interacting with each other. ...
Java language redirects here. ...
A thread in computer science is short for a thread of execution. ...
Symmetric multiprocessing, or SMP, is a multiprocessor computer architecture where two or more identical processors are connected to a single shared main memory. ...
Process communication is done via a share-nothing asynchronous message-passing system: every process has a “mailbox”, a queue of messages sent by other processes, that are not yet consumed. A process uses the receive primitive to retrieve messages that match desired patterns. A message-handling routine tests messages in turn against each pattern, until one of them matches. When the message is consumed (removed from the mailbox) the process resumes execution. A message may comprise any Erlang structure, including primitives (integers, floats, characters, atoms), tuples, lists, and functions. A queue (pronounced /kuË/) is a particular kind of collection in which the entities in the collection are kept in order and the principal (or only) operations on the collection are the addition of entities to the rear terminal position and removal of entities from the front terminal position. ...
Code examples: % create process and call the function web:start_server(Port, MaxConnections) ServerProcess = spawn (web, start_server, [Port, MaxConnections]), % create a remote process and call the function web:start_server(Port, MaxConnections) on machine RemoteNode RemoteProcess = spawn(RemoteNode, web, start_server, [Port, MaxConnections]), % send the {pause, 10} message (a tuple with an atom "pause" and a number "10") to ServerProcess (asynchronously) ServerProcess ! {pause, 10}, % receive messages sent to this process receive a_message -> do_something; {data, DataContent} -> handle(DataContent); {hello, Text} -> io:format("Got hello message: ~s", [Text]); {goodbye, Text} -> io:format("Got goodbye message: ~s", [Text]) end. As the example shows, there is 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). Concurrency supports the primary method of error-handling in Erlang. When a process crashes, it neatly exits and sends a message to the controlling process which 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 the real-time distributed database Mnesia is the Open Telecom Platform (OTP). Ericsson and a few other companies offer commercial support for Erlang. Since it was released as open source in 1998 it has been used by several companies world-wide, including Amazon.com, Nortel and T-Mobile[4], although it has not become a widespread programming language. Year 1998 (MCMXCVIII) was a common year starting on Thursday (link will display full 1998 Gregorian calendar). ...
Amazon. ...
Nortel Networks Corporation TSX: NT NYSE: NT, formerly known as Northern Telecom Limited and now known simply as Nortel, is a multinational telecommunications equipment manufacturer headquartered in Toronto, Canada. ...
T-Mobile logo T-Mobile is a multinational mobile phone operator. ...
As of 2008, Erlang is under active development with regular releases. It is available for several Unix-like operating systems and Microsoft Windows. 2008 (MMVIII) will be a leap year starting on Tuesday of the Gregorian calendar. ...
Diagram of the relationships between several Unix-like systems 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. ...
Windows redirects here. ...
See also - ejabberd, an XMPP/Jabber instant messaging server written in Erlang that powers jabber.org
- Wings 3D, 3D modeller written in Erlang.
- Yaws (Yet Another Web Server), a web server written in Erlang.
- Tsung, a high-performance benchmarking tool written in Erlang.
- ErlLounge, Gatherings where Erlang is discussed.
- CouchDB, a document-based database written in Erlang.
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. ...
Official logo of the Jabber Software Foundation Jabber is a collection of open, real-time communication technologies built on the Extensible Messaging and Presence Protocol (XMPP). ...
Wings 3D is a free and open source polygon mesh modeler inspired by Nendo and Mirai from Izware. ...
Yaws (Yet another webserver) is a webserver written in Erlang. ...
To meet Wikipedias quality standards, this article or section may require cleanup. ...
CouchDB (previously called CouchDb) is a free software RESTful document-oriented database written in Erlang. ...
Notes - ^ Joe Armstrong, Bjarne Däcker, Thomas Lindgren, Håkan Millroth. Open-source Erlang - White Paper. Retrieved on 2008-01-23.
- ^ High Performance Erlang. Retrieved on 2008-03-23.
- ^ Ulf Wiger (2005-11-14). Stress-testing erlang. comp.lang.functional.misc. Retrieved on 2006-08-25.
- ^ Who uses Erlang for product development?. Frequently asked questions about Erlang. Retrieved on 2007-07-16. “The largest user of Erlang is (surprise!) Ericsson. Ericsson use it to write software used in telecommunications systems. Many (dozens) projects have used it, a particularly large one is the extremely scalable AXD301 ATM switch.” Other commercial users listed as part of the FAQ include: Nortel, Deutsche Flugsicherung (the German national air traffic control organisation), and T-Mobile
2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance to the Gregorian calendar. ...
is the 23rd day of the year in the Gregorian calendar. ...
2008 (MMVIII) is the current year, a leap year that started on Tuesday of the Anno Domini (or common era), in accordance to the Gregorian calendar. ...
is the 82nd day of the year (83rd in leap years) in the Gregorian calendar. ...
Year 2005 (MMV) was a common year starting on Saturday (link displays full calendar) of the Gregorian calendar. ...
is the 318th day of the year (319th in leap years) in the Gregorian calendar. ...
Year 2006 (MMVI) was a common year starting on Sunday of the Gregorian calendar. ...
is the 237th day of the year (238th in leap years) in the Gregorian calendar. ...
Year 2007 (MMVII) is the current year, a common year starting on Monday of the Gregorian calendar and the AD/CE era in the 21st century. ...
is the 197th day of the year (198th in leap years) in the Gregorian calendar. ...
Further reading - Joe Armstrong (2003). "Making reliable distributed systems in the presence of software errors". Ph.D. Dissertation. The Royal Institute of Technology, Stockholm, Sweden.
- Joe Armstrong (Pragmatic Bookshelf, 2007, ISBN 978-1-9343560-0-5). “Programming Erlang, Software for a Concurrent World”.
- Mattsson, H., Nilsson, H., Wikstrom, C.: “Mnesia - A distributed robust DBMS for telecommunications applications.” First International Workshop on Practical Aspects of Declarative Languages (PADL'99) (1999) pages 152-163
- J. Armstrong, R. Virding, C. Wikström, M. Williams (Prentice Hall, 1996, ISBN 0-13-508301-X) "Concurrent Programming in Erlang"
External links The Open Directory Project (ODP), also known as dmoz (from , its original domain name), is a multilingual open content directory of World Wide Web links owned by Netscape that is constructed and maintained by a community of volunteer editors. ...
|