Editing
Erlang (programming language)
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Erlang (programming language) == [[File:Erlang logo.svg|thumbnail|right|Erlang logo]] '''Erlang''' is a powerful and concurrent programming language that was designed for developing robust, fault-tolerant, and high-availability systems. It was originally developed by Ericsson as a proprietary programming language for telecommunications applications. Released as open-source in 1998, Erlang has since gained popularity in various domains, including telecommunications, banking, e-commerce, and messaging systems. === History === Erlang was developed by Ericsson in the 1980s to address the need for a language that could handle the complex requirements of telecommunication systems. Named after the Danish mathematician and engineer Agner Krarup Erlang, the language was designed to support concurrency and fault-tolerance, two key aspects necessary for building highly reliable systems. === Features === Erlang boasts several distinctive features that make it well-suited for building highly concurrent and fault-tolerant systems: * '''Concurrency:''' Erlang's lightweight concurrency model allows programs to handle large numbers of concurrent processes efficiently. It provides lightweight processes, known as "Erlang processes," that can communicate and synchronize using message passing. * '''Fault-tolerance:''' Erlang provides mechanisms for building fault-tolerant systems. The "let it crash" philosophy allows processes to fail and restart without affecting the overall system integrity. Supervisors and supervisors trees are used to manage the lifecycle and supervision of processes, ensuring fault-tolerant behavior. * '''Distribution:''' Erlang supports distribution out of the box, making it easy to build distributed systems. Processes can communicate seamlessly across networked nodes, enabling the development of highly scalable and resilient applications. * '''Hot Code Upgrades:''' Erlang allows for hot code upgrades, enabling systems to be updated without incurring downtime. It achieves this by maintaining multiple versions of running code and gracefully transitioning between them. * '''Pattern Matching:''' Pattern matching is a fundamental feature of Erlang that allows for concise and expressive code. It simplifies the handling of complex data structures and enables efficient message passing between processes. === Integration with Elixir === Elixir is a dynamic, functional language built on top of Erlang's virtual machine, the BEAM. It retains all the power and features of Erlang while providing a more approachable and expressive syntax. Elixir brings benefits such as metaprogramming, a powerful macro system, and a vast ecosystem of libraries to the Erlang platform. === Community and Ecosystem === Erlang has a thriving community that actively contributes to its development, maintenance, and promotion. The official website, mailing lists, and online forums provide resources for learning Erlang, asking questions, and getting involved in the community. Additionally, the Erlang ecosystem offers a wide range of third-party libraries and frameworks that extend the capabilities of Erlang and aid in the development of real-world applications. === See Also === * [[Elixir (programming language)|Elixir]] - A dynamic, functional programming language built on the Erlang virtual machine. * [[OTP (Erlang)|OTP]] - The Erlang/OTP platform, a set of libraries and tools for building robust and scalable applications. * [[Actor Model]] - A mathematical model for concurrent computation, heavily influenced by the design of Erlang's concurrency model. == References == {{reflist}} [[Category:Programming languages]] [[Category:Concurrent programming languages]] [[Category:Functional programming languages]] [[Category:Open-source programming languages]]
Summary:
Please note that all contributions to Elixir Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Elixir Wiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Template used on this page:
Template:Reflist
(
edit
)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information