encyklopedia.space

Erlang

Erlang – język programowania ogólnego przeznaczenia oraz platforma uruchomieniowa opracowana w latach 1986–1998 w szwedzkim przedsiębiorstwie Ericsson. Jego główne zastosowanie stanowią systemy telekomunikacyjne, a później także rozproszone aplikacje internetowe, systemy czasu rzeczywistego oraz mikroserwisy.

Historia

Projekt Erlanga rozpoczął się w 1986 roku w laboratoriach Ericsson w Szwecji. Jego twórcami byli Joe Armstrong, Robert Virding i Mike Young. Pierwsza wersja języka została wydana w 1992 roku, a w 1998 roku udostępniono go pod licencją open source jako część projektu OTP (Open Telecom Platform).

Założenia i filozofia

  • Wysoka dostępność i tolerancja błędów – systemy oparte na Erlangu są w stanie działać nieprzerwanie przez lata.
  • Model aktorowy – procesy (aktorzy) komunikują się wyłącznie poprzez wymianę komunikatów, co eliminuje problemy współdzielenia pamięci.
  • Immutability danych – struktury danych są niemutowalne, co zwiększa bezpieczeństwo wątkowe.
  • „Let it crash” – zamiast obsługiwać wszystkie możliwe wyjątki, procesy są projektowane tak, aby w razie błędu mogły zostać automatycznie zrestartowane przez nadzorujące je procesy (supervisor).

Wirtualna maszyna BEAM

Programy Erlanga są kompilowane do kodu bajtowego, który jest wykonywany na wirtualnej maszynie BEAM. BEAM zapewnia:

  • Preemptive scheduling – współbieżne procesy są przełączane co kilka milisekund, co gwarantuje równomierne wykorzystanie CPU.
  • Garbage collection per‑process – każda jednostka wykonawcza ma własny zbieracz śmieci, co minimalizuje opóźnienia.
  • Wsparcie dla wielordzeniowych architektur – procesy są przydzielane do dostępnych schedulerów.

Kluczowe elementy języka

Składnia

Erlang posiada prostą, deklaratywną składnię inspirowaną Prologiem. Definicje funkcji, wzorce dopasowania i wyrażenia listowe są podstawowymi konstrukcjami.

Typowanie

Język jest dynamicznie typowany, lecz od wersji Erlang/OTP 20 dostępny jest system typów opcjonalnych Dialyzer, który umożliwia statyczną analizę kodu.

Biblioteka standardowa

Standardowa biblioteka OTP dostarcza gotowe komponenty:

Zastosowania

Erlang jest wykorzystywany w:

  • Infrastrukturze telekomunikacyjnej – AXD‑500, CIXD.
  • Systemach wymiany wiadomości – platforma WhatsApp (część backendu).
  • Systemach komunikacji w czasie rzeczywistym – serwery RabbitMQ, CouchDB.
  • Platformach mikroserwisowych – Elixir (kompilowany do BEAM) oraz aplikacje o architekturze SOA.

Narzędzia i środowiska

Do pracy z Erlangiem najczęściej używa się:

Powiązane języki i technologie

Wynikające z ekosystemu BEAM języki:

Patenty i publikacje

Podstawowe publikacje opisujące koncepcję Erlanga to:

Patrzy także

Powiązane artykuły encyklopedyczne: model aktorowy, OTP (Open Telecom Platform), wirtualna maszyna BEAM, Mnesia, Dialyzer, Elixir, Telegram (używa części rozwiązania opartego na Erlangu).