Вы находитесь на странице: 1из 3

Erlang [ˈɜːlæŋ][5] — функциональный язык программирования с сильной динамической

типизацией, предназначенный для создания распределённых вычислительных систем.


Разработан и поддерживается компанией Ericsson. Язык включает в себя средства
порождения параллельных легковесных процессов и их взаимодействия через обмен
асинхронными сообщениями в соответствии с моделью акторов.
Erlang был целенаправленно разработан для применения в
распределённых, отказоустойчивых, параллельных системах реального времени[⇨], для
которых, кроме средств самого языка, имеется стандартная библиотека модулей[⇨] и
библиотека шаблонных решений (так называемых поведений) — фреймворк OTP (англ. Open
Telecom Platform)[⇨]. Программа на Erlang транслируется в байт-код,
исполняемый виртуальными машинами, находящимися на различных
узлах распределённой вычислительной сети. Erlang-системы поддерживают горячую замену
кода[⇨], что позволяет эксплуатировать оборудование безостановочно.
Свой синтаксис и некоторые концепции Erlang унаследовал от языка логического
программирования Пролог[6]. Язык поддерживает многие типы данных[⇨], условные
конструкции[⇨], сопоставление с образцом[⇨], обработку исключений[⇨], списковые включения[⇨] и
выражения битовых строк[⇨], функции[⇨] (анонимные функции[⇨], функции высшего
порядка, рекурсивные определения функций, оптимизацию хвостовой рекурсии), модули[⇨],
приём и отправку сообщений[⇨] между процессами. Препроцессор[⇨] поддерживает работу с
макросами и включение заголовочных файлов.
Популярность Erlang начала расти в связи с расширением его области применения
(телекоммуникационные системы) на высоконагруженные параллельные распределённые
системы, обслуживающие миллионы пользователей WWW, такие как чаты, системы
управления содержимым, веб-серверы и распределённые, требующие
масштабирования базы данных. Erlang применяется в нескольких NoSQL-базах
данных высокой доступности[7].

Содержание

 1История
 2Философия
 3Основные особенности
o 3.1Высокоуровневые конструкции
o 3.2Параллельные вычисления
o 3.3Распределённые вычисления
o 3.4Мягкое реальное время
o 3.5Горячая замена кода
 4Описание языка
o 4.1Типы данных
 4.1.1Числа
 4.1.2Атомы
 4.1.3Битовые строки и бинарные данные
 4.1.4Кортеж
 4.1.5Список
 4.1.6Строка
 4.1.7Логические значения
 4.1.8Функциональный объект (Fun)
 4.1.9Запись
 4.1.10Ассоциативный массив
 4.1.11Другие типы
 4.1.12Встроенные функции для работы с типами
o 4.2Операции
 4.2.1Арифметические операции
 4.2.2Битовые операции
 4.2.3Логические операции
 4.2.4Операции сравнения
o 4.3Переменные
o 4.4Сопоставление с образцом
o 4.5Функции
 4.5.1Примеры
o 4.6Условные выражения
o 4.7Препроцессор и макросы
o 4.8Обработка ошибок
o 4.9Модули
o 4.10Процессы
 4.10.1Создание процессов
 4.10.2Отправка и приём сообщений
 4.10.3Обработка ошибок и завершение процессов
o 4.11Ввод-вывод
 5Библиотеки
o 5.1Стандартная библиотека модулей
 5.1.1Таблицы ETS и DETS
o 5.2Фреймворк OTP
o 5.3Разработка графического интерфейса пользователя
 6Программирование на Erlang
o 6.1Интерактивная оболочка
o 6.2Документирование и оформление кода
o 6.3Типы и анализ кода
o 6.4Тестирование, профилирование, рефакторинг
o 6.5Эффективность
 7Erlang и другие языки программирования
o 7.1Интеграция и гибридные языки
o 7.2Сравнение Erlang и C++ по производительности
o 7.3Сравнение взаимодействия процессов в Erlang и Go
 8Критика
 9Сфера применения
 10Сообщество
 11Примечания
 12Литература
 13Статьи
 14Ссылки

История[править | править код]
В середине 1980-х в компьютерной лаборатории компании Ericsson исследовали
применимость существовавших на тот момент языков программирования для программного
обеспечения телекоммуникационных систем. Джо Армстронг, Роберт Вирдинг (Robert Virding)
и Майк Вильямс (Mike Williams) под руководством Бьярне Деккера (Bjarne Däcker), написав
прототипы программ на различных языках, пришли к выводу, что ни один из этих языков не
имел полного набора возможностей, необходимых в области телекоммуникационных систем.
В результате был создан новый язык программирования — Erlang[8]. Своё название язык,
вероятно, получил в честь датского математика и инженера Агнера Эрланга, основателя
научного направления по изучению сетевого трафика в телекоммуникационных системах. По
другой версии, название языка изначально было сокращением от «ericsson language»[9].
Влияние на Erlang оказали ML, Миранда, Ада, Модула-2, CHILL, Пролог. Кроме того, на способ
обновления программного обеспечения повлиял Smalltalk и использованные Ericsson
проприетарные языки EriPascal и PLEX[8].
Потребовалось четыре года развития языка и прототипирования с
использованием виртуальной машины Пролога, после чего в 1991 году Майк Вильямс
переписал виртуальную машину для Erlang на Си. В 1992 году Erlang был впервые
использован в коммерческом проекте[8]. В 1995 году вышла новая версия Erlang, вобравшая
накопившийся к тому моменту опыт использования языка. Язык был сочтён достаточно
развитым для использования в других продуктах компании (решения для широкополосной
связи, GPRS, ATM)[8].
В декабре 1995 года случилось событие, которое Джо Армстронг считает решающим для
Erlang: проект AXE-N в Ellemtel по созданию нового маршрутизатора (как оборудования, так и
системного программного обеспечения на C++) потерпел неудачу. В результате
реорганизации проекта удалось, использовав разработанное оборудование и язык
программирования Erlang, начать работы над ATM-маршрутизаторами серии AXD. Ресурсов
лаборатории для такого проекта оказалось недостаточно, поэтому для работ по Erlang было
создано производственное подразделение под названием OTP (Open Telecom Platform)[10]. В
1996 году увидел свет одноимённый фреймворк OTP[8].