Erlang

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
<tr><th style="padding:3px">Семантика:</th><td class="" style="padding:3px">

мультипарадигмальный: конкурентное, функциональное программирование </td></tr><tr><th style="padding:3px">Появился в:</th><td class="" style="padding:3px"> 1987 г. </td></tr><tr><th style="padding:3px">Автор(ы):</th><td class="" style="padding:3px"> Ericsson Computer Science Laboratory </td></tr><tr><th style="padding:3px">Последняя версия:</th><td class="" style="padding:3px"> Erlang/OTP R13B03 (25 ноября 2009) </td></tr><tr><th style="padding:3px">Типизация данных:</th><td class="" style="padding:3px"> строгая, динамическая </td></tr><tr><th style="padding:3px">Основные реализации:</th><td class="" style="padding:3px"> Erlang, Erlang HiPE </td></tr> </table>

Erlang
Файл:Erlang logo.png </span>

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

Содержание

Синтаксис

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

Работа с процессами

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

Модель «процессы + сообщения» столь же мощная, как и модель «объекты + интерфейсы + наследование», но зачастую приводит к более компактным и понятным решениям[источник не указан 2167 дней]. Отсутствие необходимости блокировки доступа к состоянию процесса для синхронизации их взаимодействия упрощает разработку. Для работы с ресурсами, как правило, создаётся процесс-монитор.

По мнению разработчиков, важным преимуществом языка является принцип работы процесса «let it crash» («пускай падает»). Вместо перехвата ошибок и попытки продолжения работы, часть программы, содержащая рискованный код, выделяется в отдельный «процесс-смертник», который система завершает в случае возникновения ошибки, а процесс-родитель получает соответствующие сообщения и обрабатывает их. Это позволяет избавиться от многочисленных проверок.

Распределённое программирование

Запущенный экземпляр эмулятора Erlang называется узлом (node). Узел имеет имя и «знает» о существовании других узлов на данной машине или в сети. Создание и взаимодействие процессов разных узлов не отличается от взаимодействия процессов внутри узла. Для создания процесса на другом узле процессу достаточно знать его имя и, без особых на то оснований, он может не интересоваться физическим расположением взаимодействующего с ним процесса.

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

См. также

  • Сравнение возможностей Erlang с другими языками см. в статье Сравнение языков программирования
  • Yaws (Yet Another Web Server) — веб-сервер написанный на Erlang’е
  • Ejabberd — это свободный (GNU GPL), распределённый и устойчивый к отказам Jabber-сервер, написанный в основном на Erlang.
  • Nitrogen — каркас для создания веб-приложений на языке Erlang.
  • Disco — это реализация MapReduce, созданная компанией Nokia. Ее ядро написано на языке Erlang и приложения для нее можно писать на языке Python.
  • Apache CouchDB - документоориентированная база данных с REST интерфейсом

Ссылки

ar:إرلانج

bg:Erlang ca:Erlang cs:Erlang (programovací jazyk) da:Erlang (programmeringssprog) de:Erlang (Programmiersprache) en:Erlang (programming language) es:Erlang fr:Erlang (langage) gl:Erlang it:Erlang (linguaggio) ja:Erlang ka:ერლანგი (პროგრამირების ენა) ko:얼랑 (프로그래밍 언어) nl:Erlang (programmeertaal) no:Erlang (programmeringsspråk) pl:Erlang (język programowania) pt:Erlang (linguagem de programação) sv:Erlang (programspråk) th:ภาษาเออร์แลง uk:Erlang zh:Erlang

Источник — «http://www.sbup.com/wiki/Erlang»
Личные инструменты

Served in 0.422 secs.