Erlang что за программа

Erlang — это язык функционального программирования и среда выполнения. Он был построен таким образом, что он обладал поддержкой параллелизма, распределения и отказоустойчивости. Первоначально Erlang был разработан для использования в нескольких крупных телекоммуникационных системах. Но теперь он постепенно превратился в различные отрасли, такие как электронная торговля, компьютерная телефония и банковские сектора.

Когда разработали Erlang?

Первая версия Erlang была разработана Джо Армстронгом, Робертом Вирджином и Майком Уильямсом в 1986 году. Первоначально он был фирменным языком в Ericsson. Позднее он был выпущен как язык с открытым исходным кодом в 1998 году. Erlang вместе с OTP, сборником промежуточного программного обеспечения и библиотеками в Erlang, теперь поддерживается и поддерживается подразделением OTP в компании Ericsson и широко называется Erlang/OTP.

Почему Erlang?

Erlang следует использовать для разработки вашего приложения, если у вас есть следующие требования:

Язык программирования ERLANG / Из врачей в программисты / Интервью с Lead Software Engineer

  • Приложение должно обрабатывать большое количество одновременных действий.
  • Он должен быть легко распределен по сети компьютеров.
  • Должна быть возможность сделать приложение отказоустойчивым как к ошибкам программного обеспечения, так и к аппаратным средствам.
  • Приложение должно быть масштабируемым. Это означает, что он должен иметь возможность охватывать несколько серверов с небольшим или никаким изменением.
  • Он должен быть легко обновляемым и реконфигурируемым без необходимости остановки и перезапуска самого приложения.
  • Приложение должно реагировать на пользователей в течение определенных строгих временных рамок.

Источник: unetway.com

Erlang. Что это, зачем, как и для кого.

Статья короткая, если понравиться, попробую осветить этот язык программирования подробнее.

Что

Erlang, это функциональный язык программирования с динамической типизацией, главной особенностью которого является программирование на уровне отдельных процессов(почти аналог threads в других ЯП), коммуникация между которыми реализуется с помощью MPI(Message Passing Interface).

Зачем

Рост частот центральных процессоров остановился. Растет количество ядер и количество узлов в кластерах. Erlang создан для максимального упрощения разработки программ которые могут использовать всю мощь многоядерных и/или много узловых систем.

Успешные примеры использования Erlanga — Jabber(ура!) сервер ejabberd, web-сервер YAWS и многочисленные эксперименты, например comet-программа(специфический стиль программирования веб-сайтов, когда сервер не разрывает подключения с клиентом, а продолжает пересылать ему данные при необходимости) способная держать 1,000,000(миллион) TCP-подключений.

Читайте также:
Star app что это за программа

Никаких сравнений я приводить не буду, достаточно сказать, что ети программы выдерживают бешеную нагрузку и очень сопротивляются попыткам их убить 🙂

Почему Erlang? / Юрий Жлоба [Python Meetup 25.03.2016]

Как

Программирование на уровне отдельных, изолированных процессов дает много преимуществ перед обычным стилем программирования параллельного ПО.

Начнем из истоков — почему трудно программировать такое ПО на жаве, си или шарпе? Проблема очень глобальная и существует во всех этих языках — общий доступ к памяти. Программируя на этих ЯП вы не можете быть уверены, что вместимое памяти, куда ссылаются ваши переменные не изменил какой-то другой поток(трэд, thread, нить. ). Из-за этого, очень часто приходиться прибегать к разнообразным, проверенным временем, трюкам — локи, мутексы, семафоры. И делать это трудно. Трудно не только начинающему программисту, но и программисту с опытом, от которого зависит работоспособность системы, если над ней работают еще несколько опытных/неопытных программистов.

Вообще говоря, в Erlang’е ета проблема не решена. Она просто изолирована на уровень ниже самого языка. Каждый процесс изолирован и не имеет доступа к памяти других процессов.

В двух словах: если нет общей памяти то нет проблемы с доступом к этой памяти.

Для кого

Erlang очень прост в изучении, в синтаксисе можно разобраться в течении дня-двух, в принципах программирования — неделя-другая. Но вот парадигма программирования достаточно сложна и переключиться на нее(особенно если есть огромный опыт в императивных ЯП) достаточно сложно и иногда совсем не хочется. Не раз слышал — как можно программировать не объектами? Весь мир состоит из объектов и взаимодействия между объектами! Ответ банальный — весь мир состоит из процессов и взаимодействия между процессами в той же мере в какой он состоит из объектов.

С использованием этого ЯП многие задачи решаються тривиально, и я считаю, что Erlang — лучший ЯП, с которого стоит начинать знакомство с функциональными языками. Особенно если программы должны быть параллелизированы и кластеризированы.

Читайте также:
Steam booster что это за программа

Источник: habr.com

1.2 Определение Erlang

Erlang — Э́рланг — функциональный язык программирования с динамической типизацией, предназначенный для создания распределённых вычислительных систем. Язык разработан и поддерживается компанией Ericsson. Эрланг включает в себя средства порождения параллельных процессов и их коммуникации с помощью посылки асинхронных сообщений.

Программа транслируется в байт-код, исполняемый виртуальной машиной, что обеспечивает переносимость. К услугам программиста — модули, полиморфные функции, сопоставление с образцом, анонимные функции, условные конструкции, структуры, обработка исключений, оптимизация хвостовой рекурсии. В общем базовый арсенал современных функциональных языков.

Главное в Erlang — его модель легковесных процессов. Процессы дёшевы, создание процесса занимает не больше ресурсов, чем вызов функции. Единственным способом взаимодействия процессов является асинхронный обмен сообщениями. Процесс имеет свой «почтовый ящик», откуда может выборочно читать сообщения, в чем очень помогает сопоставление по шаблону, код проверки «ящика» чем-то похож на программу на awk, нужное выгребается и обрабатывается, остальное остаётся или выбрасывается.

2 Синтаксис

Язык динамический. Синтаксис унаследован от Prolog: компактен, содержит минимум конструкций, лёгок для освоения, но не примитивен.

Комментарий до конца строки %
Регистрозависимость да
Присваивание значения переменной =
Определение функции fun(a, b) -> . end
Вызов функции f(a,b. )
Вызов функции без параметров f()

Синтаксис поддерживает модули, полиморфные функции, сопоставление с образцом, анонимные функции, условные конструкции, структуры, обработку исключений, оптимизацию хвостовой рекурсии, что и образует базовый арсенал современных функциональных языков. Отсутствие присваиваний позволяет Erlang избежать таких традиционных для императивных языков проблем в распределённых приложениях, как необходимость синхронизации, опасность возникновения тупиков и гонок.

3 Основные особенности Erlang

  • Высокоуровневые конструкции языка. Erlang — это декларативный язык программирования, позволяющий описывать, что должно быть вычислено, вместо описания того, как это должно быть вычислено. Erlang так же использует динамическую типизацию, что может ускорить разработку приложений.
  • Параллельная обработка и передача сообщений. Вместо использования распространенной в настоящее время модели параллельного программирования, в которой используются потоки с разделяемой памятью, Erlang поддерживает параллельную модель, основанную на легковесных процессах с асинхронной передачей сообщений. Процессы в Erlang не имеют ничего общего с процессами операционной системы и называются процессами только потому, что код каждого процесса выполняется независимо от других процессов. При этом процессы Erlang за счет своей легковесности (время создания процесса составляет несколько микросекунд и не зависит от количества уже работающих процессов) работают даже эффективнее, чем потоки операционной системы, что позволяет работать с несколькими десятками тысяч процессов в одном приложении. Процессы общаются между собой посредством передачи сообщений (время передачи сообщения составляет несколько микросекунд так, как данные просто копируются из пространства одного процесса в пространство другого в рамках виртуальной машины), где сообщением может быть любое значение, используемое в языке. Сообщения передаются асинхронно, таким образом, сразу после посылки сообщения отправитель может продолжить работу. Входящие сообщения извлекаются из «почтового ящика» процесса выборочно и, таким образом, нет необходимости извлекать сообщения по очереди.
  • Распределенная обработка. Так как процессы в Erlang не используют разделяемой памяти, а общаются только посредством передачи сообщений, язык позволяет достаточно легко превратить параллельное приложение в распределенное, где различные процессы выполняются на различных узлах сети.
  • Надежность. Erlang поддерживает различные подходы для построения высоконадежных систем. На низком уровне процессы могут быть связаны между собой и оповещаться посредством сообщений при завершении связанного процесса. На более высоком уровне, при использовании OTP (см. врезку), появляется возможность устанавливать различные политики мониторинга отдельных процессов и групп процессов. В распределенной системе резервные узлы могут автоматически заменять узлы вышедшие из строя.
  • Работа в режиме мягкого реального времени (soft real-time). Хотя Erlang — это высокоуровневый язык, его можно использовать для систем работающих в режиме мягкого реального времени (когда нарушение временных ограничений приводит только к снижению качества работы системы). Язык использует автоматическое управление памятью, при котором «сборка мусора» происходит отдельно для каждого процесса в системе. Это позволяет получать ответы системы в пределах нескольких микросекунд даже при наличии «сборки мусора», что, в свою очередь, позволяет работать в режиме высокой нагрузки практически без потери пропускной способности.
  • Работа приложений в течение долгого времени. Язык поддерживает «горячую» замену кода модулей в работающем приложении, при котором в один момент времени могут работать старая и новая версии кода. Это необходимо для систем, которые просто не должны останавливаться для обновления кода, например, телефонных систем, или систем контроля трафика.
Читайте также:
Ubank что это за программа на Андроид как удалить

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru