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].