Erlang

Erlang – функциональный язык программирования, разработанный компанией Ericsson в конце 1980-х годов. Он предназначен для создания распределенных и отказоустойчивых систем, таких как телефонные сети (как ТФОП, так и сотовые, к примеру GSM), мессенджеры и другие приложения, требующие высокой доступности.

Erlang обладает рядом особенностей, среди которых:

– отказоустойчивость: благодаря своей архитектуре и возможности распределения вычислений, Erlang может обеспечить непрерывную работу приложения даже при сбоях в отдельных компонентах.

– конкурентность: Erlang предлагает легковесные процессы и механизмы коммуникации между ними, что делает разработку параллельных приложений более удобной.

– функциональное программирование: Erlang поддерживает функциональный стиль программирования, что позволяет писать более короткий и понятный код.

Erlang-системы поддерживают горячую замену кода, что позволяет эксплуатировать оборудование безостановочно.

Свой синтаксис и некоторые концепции Erlang унаследовал от языка логического программирования Пролог. Язык поддерживает многие типы данных, условные конструкции, сопоставление с образцом, обработку исключений, списковые включения и выражения битовых строк, функции (анонимные функции, функции высшего порядка, рекурсивные определения функций, оптимизацию хвостовой рекурсии), модули, приём и отправку сообщений между процессами. Препроцессор поддерживает работу с макросами и включение заголовочных файлов.

Популярность Erlang начала расти в связи с расширением его области применения (телекоммуникационные системы) на высоконагруженные параллельные распределённые системы, обслуживающие миллионы пользователей WWW, такие как чаты, системы управления содержимым, веб-серверы и распределённые, требующие масштабирования базы данных. Erlang применяется в нескольких NoSQL-базах данных высокой доступности

Erlang активно используется в различных областях, включая телекоммуникации, финансы, мессенджеры и другие высоконагруженные системы. В последнее время он также становится популярным среди разработчиков веб-приложений и микросервисов.

Своё название язык, вероятно, получил в честь датского математика и инженера Агнера Эрланга, основателя научного направления по изучению сетевого трафика в телекоммуникационных системах. По другой версии, название языка изначально было сокращением от «Ericsson language».

Влияние на Erlang оказали ML, Миранда, Ада, Модула-2, CHILL, Пролог. Кроме того, на способ обновления программного обеспечения повлиял Smalltalk и использованные Ericsson проприетарные языки EriPascal и PLEX.

Потребовалось четыре года развития языка и прототипирования с использованием виртуальной машины Пролога, после чего в 1991 году Майк Вильямс переписал виртуальную машину для Erlang на Си. В 1992 году Erlang был впервые использован в коммерческом проекте. В 1995 году вышла новая версия Erlang, вобравшая накопившийся к тому моменту опыт использования языка. Язык был сочтён достаточно развитым для использования в других продуктах компании (решения для широкополосной связи, GPRS, ATM).

В декабре 1995 года случилось событие, которое Джо Армстронг считает решающим для Erlang: проект AXE-N в Ellemtel по созданию нового маршрутизатора (как оборудования, так и системного программного обеспечения на C++) потерпел неудачу. В результате реорганизации проекта удалось, использовав разработанное оборудование и язык программирования Erlang, начать работы над устройствами серии AXD  (маршрутизатор для сетей ATM). Ресурсов лаборатории для такого проекта оказалось недостаточно, поэтому для работ по Erlang было создано производственное подразделение под названием OTP (Open Telecom Platform). В 1996 году увидел свет одноимённый фреймворк OTP.

Неожиданно, в 1998 году топ-менеджмент Ericsson решил не брать на себя обязательств по разработке и поддержке собственного языка программирования, сосредоточившись вместо этого на использовании языка Java. Использование Erlang было запрещено в новых проектах Ericsson Radio AB в связи с реализацией плана по аутсорсингу программной технологии компании Rational Inc. Это решение очень сильно повлияло на будущее Erlang: оно привело к открытию кода Erlang под открытой лицензией EPL, а также послужило главной причиной начала распространения языка за пределами создавшей его компании. Основным возражением против открытия исходного кода являлось решение вопросов, касающихся патентов, но позднее эти трудности были преодолены. Вскоре многие из основных разработчиков покинули Ericsson, чтобы организовать собственный бизнес — Bluetail AB.

Наиболее известные проекты на языке Erlang:

1. RabbitMQ – брокер сообщений, который используется для построения распределённых систем

2. CouchDB – документо-ориентированная база данных

3. WhatsApp – мессенджер, который изначально был написан на Erlang

4. Riak – распределённая база данных, ориентированная на высокую доступность

5. eJabberdXMPP (Jabber) сервер, который поддерживает большое количество соединений

Эти проекты широко используются в индустрии и пользуются высокой оценкой благодаря своей надёжности и производительности.

Обсуждение закрыто.