Что такое Erlang?
26/12/2009 19:38
Это введение взято из статьи «Начала работы с Erlang»
В далеком 1985-м году группа разработчиков из компьютерных лабораторий компании Ericsson решила создать язык, который идеально бы подходил для решения задач в телекоме. Шесть лет спустя, в 1991-м, миру был представлен такой язык – Erlang.
ПРИМЕЧАНИЕ
Среди любителей Erlang-а бытует мнение, что Erlang расшифровывается как ERicsson LANGuage. На самом деле язык назван в честь Агнера Крарупа Эрланга, датского математика, который работал в области телекоммуникаций. Так, единица измерения телекоммуникационного траффика также называется «Erlang».
С 1992 года Erlang начал применяться в компании Ericsson для разработки телекомуникационного оборудования. Например, бoльшая часть функциональности флагманского продукта компании, свитча AXD-301, реализована с использованием Erlang-а.
В 1998 году были опубликованы исходные коды языка и его библиотек. С тех пор Erlang стал не просто языком для телекоммуникационных приложений, а полноценным языком общего назначения.
Ericsson до сих пор развивает Erlang, и его бесплатная версия собирается из тех же исходников, что и коммерческая.
И все же, что такое Erlang?
Кратко говоря, Erlang – это язык программирования общего назначения и среда исполнения. В язык встроена поддержка распределенных и параллельных вычислений.
А если говорить подробнее, то Erlang предлагает разработчику следующее
- Параллельные вычисления. Erlang использует легковесные процессы (не путать с процессами ОС!), не затрагивающие потоки операционной системы. Процессы Erlang - это аналоги процессов ОС в том смысле, что все ссылки на объекты внутри них недоступны другим процессам. Но обеспечивается это не за счет изоляции адресных пространств, а за счет типобезопасности языка и программной изоляции ссылок. Если проводить аналогии с процессами и потоками Windows, процессы Erlang являются чем-то средним между процессом и потоком, так как, с одной стороны являются изолированным объектным пространством, а с другой – непосредственно исполняют код, принадлежащий этому пространству (процессы Windows содержат потоки, которые реально выполняют код, но сами процессы код не выполняют). Основное отличие процессов Erlang от потоков заключается в том, что реализация переключения контекста в Erlang значительно дешевле, чем для потоков, что позволяет существенно повысить эффективность при исполнении множества процессов Erlang на одном процессоре. На практике это означает, что на обычной пользовательской машине можно запустить несколько десятков тысяч процессов Erlang и не ощутить замедления быстродействия системы (по сравнению с аналогичным количеством потоков ОС).
- Надежность. Erlang позволяет выстраивать различные сценарии для отслеживания всевозможных состояний системы – от примитивных (отслеживание состояния различных процессов) до продвинутых (таких, как создание failover-кластеров).
- «Горячая» замена кода. Erlang позволяет отслеживать изменения в системе и загружать обновленные версии кода без остановки всей системы, что особенно важно, если такая остановка невыгодна или невозможна.
- Внешние интерфейсы. Процессы в Erlang-е взаимодействуют друг с другом путем передачи асинхроных сообщений. На этом же принципе построено взаимодействие и с программами, написанными на С/С++ или Java. Существует также интерфейс взаимодействия с .NET.
В состав стандартных библиотек Erlang-а входят, например, следующие продукты:
- Mnesia. Распределенная СУБД.
- Inets. HTTP-клиент и сервер, а также FTP-клиент.
- Orber. CORBA v2.0 Object Request Broker (ORB).
И где я могу его использовать?
Erlang можно использовать в самых разнообразных областях. На данный момент Erlang с успехом применяется, например:
- Для телекоммуникационного оборудования (например, в компаниях Ericsson и Nortel).
- Для создания сервера ejabberd на основе протокола Jabber.
- Для управления поездами (например, в метро в городе Лион, Франция).
- В БД-приложениях, нуждающихся в режиме, близком к режиму реального времени.
новости
Макс Лапшин предложил на родном факультете…
Одна из основных задач при использовании какого
epm позволяет легко устанавливать дополнительные…
Вышла версия R13B04 Erlang/OTP. Это — четвертая и…
mcd — это библиотека для memcached, которая по…
Библиотека для OCaml'а, позволяющая использовать…
unsplit позволяет определить и исправить…
Tidier — это утилита для автоматического…
Innostore — это простой API для взаимодействия с…
Вышла версия 0.3 CMS Zotonic с множеством…