Erlang — это функциональный язык программирования и среда выполнения, разработанные для создания распределённых, отказоустойчивых и масштабируемых систем с требованиями высокой доступности. Язык был спроектирован с упором на лёгкость параллельного программирования, встроенные средства обработки ошибок и горячую замену кода в работающих системах. Среда выполнения включает виртуальную машину, библиотеку стандартных модулей и набор инструментов для разработки и управления распределёнными приложениями.
Основные концепции Erlang включают акторную модель процессов с лёгковесными изолированными процессами, обмен сообщениями без общего состояния, супервизорную иерархию для автоматического восстановления при сбоях и прозрачную поддержку распределённости. Благодаря этим особенностям Erlang часто используется в телекоммуникациях, системах обмена сообщениями, базах данных в реальном времени и других областях, где критичны отказоустойчивость и непрерывная работа.
- Параллелизм и процессы: лёгковесные изолированные процессы с асинхронной передачей сообщений.
- Отказоустойчивость: модель "let it crash" и супервизоры для автоматического восстановления компонентов.
- Горячая замена кода: возможность обновления кода в работающей системе без остановки сервиса.
- Распределённость: встроенные механизмы для связи между нодами и построения кластеров.
- Функциональный стиль: иммутабельность данных, сопоставление с образцом и первое‑классные функции.
- Стандартная библиотека и OTP: набор готовых к использованию абстракций и поведения (ген_*), реализующих серверы, состояния и супервизоры.
- Производительность и надежность в сети: оптимизации для многопроцессорных систем и устойчивость к сетевым отказам.
- Инструменты наблюдаемости: средства логирования, трассировки и диагностики для эксплуатации крупных систем.