Erlang | |
---|---|
Семантика | мультипарадигмальный: параллельное, функциональное программирование |
Класс языка | мультипарадигмальный, язык параллельного программирования[вд], язык функционального программирования, декларативный язык программирования, язык программирования, открытое программное обеспечение, свободное программное обеспечение и умение |
Появился в | 1986[2] |
Автор | Джо Армстронг |
Разработчик | Джо Армстронг, Ericsson и Роберт Вирдинг[вд] |
Расширение файлов |
.erl |
Выпуск |
|
Система типов | сильная, динамическая |
Испытал влияние | ML, Пролог, Лисп, PLEX[вд], Smalltalk, Миранда, Ада, Модула-2 и CHILL |
Лицензия | Apache License 2.0[3] |
Сайт | erlang.org (англ.) |
ОС | кроссплатформенность[4] |
Медиафайлы на Викискладе |
Erlang [ˈɜːlæŋ][5] — функциональный язык программирования с сильной динамической типизацией, предназначенный для создания распределённых вычислительных систем. Разработан и поддерживается компанией Ericsson. Язык включает в себя средства порождения параллельных легковесных процессов и их взаимодействия через обмен асинхронными сообщениями в соответствии с моделью акторов.
Erlang был целенаправленно разработан для применения в распределённых, отказоустойчивых, параллельных системах реального времени, для которых, кроме средств самого языка, имеется стандартная библиотека модулей и библиотека шаблонных решений (так называемых поведений) — фреймворк OTP (англ. Open Telecom Platform). Программа на Erlang транслируется в байт-код, исполняемый виртуальными машинами, находящимися на различных узлах распределённой вычислительной сети. Erlang-системы поддерживают горячую замену кода, что позволяет эксплуатировать оборудование безостановочно.
Свой синтаксис и некоторые концепции Erlang унаследовал от языка логического программирования Пролог[6]. Язык поддерживает многие типы данных, условные конструкции, сопоставление с образцом, обработку исключений, списковые включения и выражения битовых строк, функции (анонимные функции, функции высшего порядка, рекурсивные определения функций, оптимизацию хвостовой рекурсии), модули, приём и отправку сообщений между процессами. Препроцессор поддерживает работу с макросами и включение заголовочных файлов.
Популярность Erlang начала расти в связи с расширением его области применения (телекоммуникационные системы) на высоконагруженные параллельные распределённые системы, обслуживающие миллионы пользователей WWW, такие как чаты, системы управления содержимым, веб-серверы и распределённые, требующие масштабирования базы данных. Erlang применяется в нескольких NoSQL-базах данных высокой доступности[7].