Erlang

Матеріал з Вікіпедії — вільної енциклопедії.

Erlang
Парадигма: мультипарадигмна: паралельна, функціональна
Розробник: Ericsson
Останній реліз: R11B-1 / 15 серпня, 2006
ОС: Cross-platform
Сторінка інтернет: http://www.erlang.org

Erlang (Ерла́нг) — мова функціонального програмування, яка дозволяє писати програми для різного роду розподілених систем. Розроблена і підтримується компанією Ericsson. Мова включає в себе засоби породження паралельних процесів та їх комунікації за допомогою відсилання асинхроних повідомлень. Програма транслюється в байт-код, що виконується віртуальною машиною, що забезпечує переносимість.

Мова є безтиповою з синтаксисом успадкованим від Prolog.

Підтримує модулі, поліморфні функції, співставлення за шаблоном, анонімні функції, умовні конструкції, структури, обробку виключень, оптимізацію хвостової рекурсії.

Головна риса Erlang — модель легковісних процесів. Процеси є дешевими, їх створення вимагає таку кількість ресурсів, що їх можна порівняти з викликом функції. Єдиним способом взаємодії процесів є асинхроний обмін повідомленнями.

Процес може встановити зв’язок (link) з іншими процесами і за вибором або отримувати повідомлення про їх смерть з вказанням причини або розділити їх долю. Процес має свою «поштову скриню», звідки може вибірково читати повідомлення.

Мова стимулює до створення великої кількості конкурентних процесів. Процеси ізольовані і не мають загального стану.

Процес проектування полягає в ітеративному розбитті системи на ієрархії конкурентно взаємодіючих підсистем, доки складові не стануть достатньо простими для реалізації.

Зв’язка «Процеси+повідомлення» на відміну від зв’язки «Об’єкти+Інтерфейси+Успадкування» часто приводить до компактніших решень. Відсутність необхідності блокування доступу до стану процеса для синхронізації їх взаємодії суттєвао спрощує програмування. Для конкурентного ресурсу зазвичай створюється процес-монітор, через який здійснюється взаємодія з ресурсом.

Також важливий момент полягає у формулі «let it crash» («нехай процес впаде»). Замість перехоплювати помилки і намагатися продовжувати работу частина програми, що містить ризикований код, відокремлюється у незалежний процес-камікадзе, який робить все можливе, щоб система вбила його у випадку виникнення помилки, а батьківський процес тільки отримує повідомлення про смерть нащадків і робить висновки. Такий підхід позбавляє код від чисельних перевірок.

[ред.] Розподілена взаємодія

Запущений екземпляр емулятора Erlang називається вузлом (node). Вузол має ім’я і «знає» про існування інших вузлів на даній машині або у мережі.

Створення та взаємодія процесів різних вузлів не відрізняється від взаємодії процесів всередені вузла. Для створення процесу на іншому вузлі процесу достатньо знати його ім’я.

[ред.] Посилання


Комп'ютер Це незавершена стаття про комп'ютери.
Ви можете допомогти проекту, виправивши або дописавши її.
Ця стаття або абзац не містить джерел (літератури, веб-посилань тощо) Допоможіть Вікіпедії поповнити їх.