Erlang
Матеріал з Вікіпедії — вільної енциклопедії.
| Парадигма: | мультипарадигмна: паралельна, функціональна |
|---|---|
| Розробник: | Ericsson |
| Останній реліз: | R12B-1 / 6 лютого 2008 |
| ОС: | Cross-platform |
| Сторінка інтернет: | http://www.erlang.org |
Erlang (Ерла́нг) — мова функціонального програмування з динамічною типізацією, призначена для розробки програм для різного роду розподілених і багатопоточних систем. Розроблена і підтримується компанією Ericsson. Мова включає в себе засоби породження паралельних процесів та їх взаємодії за допомогою відсилання асинхроних повідомлень. Програма транслюється в байт-код, що виконується віртуальною машиною, що забезпечує переносимість.
[ред.] Особливості
Синтакс успадкований від Prolog.
Підтримує модулі, поліморфні функції, співставлення за шаблоном, анонімні функції, умовні конструкції, структури, обробку виключень, оптимізацію хвостової рекурсії.
Головна риса Erlang — модель легковісних процесів. Процеси є дешевими, їх створення вимагає таку кількість ресурсів, що їх можна порівняти з викликом функції. Єдиним способом взаємодії процесів є асинхронний обмін повідомленнями.
Процес може встановити зв’язок (link) з іншими процесами і за вибором або отримувати повідомлення про їх дострокове завершення з вказанням причини або розділити їх долю. Процес має свою «поштову скриню», звідки може вибірково читати повідомлення.
Мова програмування Ерланг сприяє створенню великої кількості конкурентних процесів. Процеси ізольовані і не мають спільного стану.
Процес проектування полягає в ітеративному розбитті системи на ієрархії конкурентно взаємодіючих підсистем, доки складові не стануть достатньо простими для реалізації.
Зв’язка «Процеси+повідомлення» на відміну від зв’язки «Об’єкти+Інтерфейси+Успадкування» часто приводить до компактніших решень. Відсутність необхідності блокування доступу до стану процеса для синхронізації їх взаємодії суттєво спрощує програмування. Для конкурентного ресурсу зазвичай створюється процес-монітор, через який здійснюється взаємодія з ресурсом.
Також важливий момент полягає у формулі «let it crash» («нехай процес впаде»). Замість перехоплювати помилки і намагатися продовжувати роботу частина програми, що містить ризикований код, відокремлюється у незалежний процес-камікадзе, який робить все можливе, щоб система вбила його у випадку виникнення помилки, а батьківський процес тільки отримує повідомлення про смерть нащадків і робить висновки. Такий підхід позбавляє код численних перевірок.
[ред.] Розподілена взаємодія
Запущений екземпляр емулятора Erlang називається вузлом (node). Вузол має ім’я і «знає» про існування інших вузлів на даній машині або у мережі.
Створення та взаємодія процесів різних вузлів не відрізняється від взаємодії процесів всередені вузла. Для створення процесу на іншому вузлі процесу достатньо знати його ім’я.
[ред.] Посилання
- http://www.erlang.org/ — реалізація з відкритими вихідними текстами
- http://www.erlang-projects.org/ — репозитарій проектів на Erlang
- http://cean.process-one.net/ — Comprehensive Erlang Archive Network, репозиторій проектів на Erlang
- http://www.trapexit.org/ — форум, вікі, рішення, підтручники, довідкові матеріали
- http://erlide.sourceforge.net/ — плагін для середовища розробки Eclipse з підтримкою мови Erlang
| Це незавершена стаття про комп'ютери. Ви можете допомогти проекту, виправивши або дописавши її. |
| Ця стаття не містить посилань на джерела.
Ви можете допомогти поліпшити цю статтю, додавши посилання на надійні джерела. Матеріал без джерел може бути підданний сумніву та вилучений.
|

