Написать параллельное приложение с Erlang (и эликсиром)

Раскрытие информации: Ваша поддержка помогает поддерживать работу сайта! Мы зарабатываем реферальную плату за некоторые услуги, которые мы рекомендуем на этой странице.


Erlang – это язык программирования общего назначения, предназначенный для создания параллельных приложений..

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

Эрланг и Эликсир

Некоторые особенности, которые делают Erlang привлекательным для современных программистов, включают:

  • Параллелизм, позволяющий программам Erlang принимать входные данные из нескольких источников и функционировать в распределенной среде.

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

  • Горячая загрузка кода, позволяющая изменять код и обновлять программы без необходимости останавливать или перезагружать систему.

  • Передача сообщений, а не общие переменные, что позволяет процессам взаимодействовать с более высокой степенью параллелизма.

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

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

история

Язык Erlang был впервые разработан в 1986 году сотрудниками Ericsson Джо Армстронгом, Робертом Вирдингом и Майком Уильямсом..

Язык был разработан для улучшения существующих приложений телефонии и находился под сильным влиянием языка PLEX..

Первая версия Erlang была реализована в Прологе, но она оказалась слишком медленной для телефонных станций. Чтобы решить эту проблему, команда разработала виртуальную машину BEAM в 1992 году..

BEAM компилировал код Erlang в C гораздо быстрее, что позволяет Erlang быстро переходить с языка-прототипа на реальные приложения. В 1995 году Erlang был внедрен в банкомат AXD.

Однако в 1998 году Ericsson Radio Systems запретила использование Erlang в любых новых продуктах, поскольку она пыталась перевести все продукты на непатентованные языки..

Новая политика побудила Джо Армстронга, среди других программистов на Erlang, уйти в отставку и в конечном итоге привела к тому, что команда выпустила Erlang в мир открытого исходного кода позже в том же году..

Эрикссон больше не является патентованным продуктом и набирает обороты в телекоммуникационном мире. Позже компания полностью изменила свою позицию в отношении Erlang и снова наняла Армстронга..

В настоящее время Erlang активно используется телекоммуникационными компаниями по всему миру, включая T-Mobile, Whatsapp, Ubiquiti и IDT Corp. Ericsson продолжает поддерживать этот язык и использует его в узлах поддержки Ericsson и мобильных сетях, включая их сети LTE..

Ресурсы

Учитывая невероятную потребность в параллельном программировании, когда все время расширяются веб-технологии и мобильные технологии, популярность Erlang продолжает расти, и многие серьезные разработчики делают переход.

В результате, существует множество бесплатных онлайн-ресурсов, которые помогут вам начать работу и оказать помощь в пути..

  • Erlang.org: официальный сайт Erlang, эта страница включает загрузки программного обеспечения, документацию и руководства пользователя, ссылки на онлайн-ресурсы и сообщества, а также информацию о последних новостях и предстоящих событиях Erlang..

  • Erlang Central: этот сайт, управляемый сообществом, содержит все, что вам нужно, чтобы начать и продолжать развивать свои знания Erlang. Здесь размещаются учебные пособия, видеоролики, вики, доска объявлений и форум сообщества..

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

  • Erlang Factory: эта ежегодная техническая конференция собирает разработчиков Erlang со всего мира, чтобы обсудить новые инновации и теории, и предлагает серию дополнительных 3-дневных интенсивных учебных курсов.

книги

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

  • Программирование Erlang: программное обеспечение для параллельного мира от Джо Армстронга: написанное одним из первых авторов Erlang, это исчерпывающее руководство по языку и его использованию в параллельных средах, таких как облачные приложения, многопользовательские игры и основанные на сообществе веб-сайты. Книга предназначена для людей с небольшим предыдущим опытом в функциональном или параллельном программировании и обучает этим концепциям с помощью учебных пособий и примеров из реальной жизни..

  • Создание веб-приложений с Erlang от Zachary Kessin: эта книга, предназначенная для опытных веб-разработчиков с базовыми знаниями Erlang, знакомит программистов с серией простых проектов программирования веб-сервисов, готовит их к созданию собственных веб-приложений и подключает их к сети..

  • Выучить немного Erlang для хорошего блага! Фред Герберт: как следует из юмористического названия, эта книга с радостью признает, что синтаксис Эрланга нетрадиционен, структуры данных необычны, а система типов обычно отталкивает многих новичков – именно поэтому вам нужно руководство по его необычному , но мощный, соглашения. Он начинается медленно, с очень базовыми приемами, и встраивается в более сложные концепции программирования, когда читатель приспосабливается к тонкостям нового языка. Если вам не нужна физическая копия, автор также предоставил книгу бесплатно в Интернете.

  • Введение в Erlang: начало работы в функциональном программировании Саймона Сен-Лорана: эта книга посвящает много времени установке и оболочке Erlang, обеспечивая уверенность новых программистов (или новичков в Erlang) в своем интерфейсе командной строки, а затем переходит к разбить язык на очень базовые понятия и продемонстрировать их посредством создания простых программ.

  • Проектирование масштабируемости с помощью Erlang / OTP от Cesarini и Vinoski: эта книга предназначена для опытных программистов Erlang, стремящихся расширить свое понимание и использовать Open Telecom Platform (OTP) для проектирования и создания систем коммерческого уровня, которые являются одновременно сложными и масштабируемыми.

Бейонг Эрланд: Эликсир

Эликсир – это относительно новый язык, но он имеет долгую историю. И все началось с Эрланга.

История Exlixer

С середины 1980-х годов Erlang хорошо справлялся со своими задачами, в основном разрабатывая приложения для телефонии. Но перенесемся на три десятилетия вперед и подумайте о потребностях масштабируемых веб-приложений..

Pinterest, например, доставляет 14 000 уведомлений в секунду. Facebook необходимо получать обновления и отправлять сообщения обратно 1,6 миллиардам (с буквой B!) Активных пользователей. Этот вид высокого параллелизма и высокой доступности – именно то, для чего был разработан Erlang..

И вот этот старый язык телекоммуникаций для боевых лошадей внезапно снова стал модным и популярным. Кроме в новой форме.

Оказывается, Эрланг действительно трудно читать и писать. Это не удивительно, так как он был разработан десятилетия назад. Это было до того, как «весело использовать» стало важным соображением в дизайне языка.

Erlang не очень подходит для поколения разработчиков, которые выросли на Ruby и JavaScript. Помимо удобства использования, Erlang не обладает всеми функциями, которые могут понадобиться для современных веб-приложений..

Итак, в 2012 году Хосе Валим создал Elixir. Код Elixir компилируется в байт-код Erlang и запускается во время выполнения Erlang. Вы даже можете включить код Erlang непосредственно в Elixir (несколько аналогично тому, как вы можете включить JavaScript в CoffeeScript).

Valim был частью команды разработчиков Ruby on Rails и даже написал книгу по разработке Rails. Команда Ruby on Rails очень серьезно относится к опыту разработчиков, и эта проблема повлияла на дизайн Elixir..

Синтаксис очень похож на Ruby и гораздо более читабелен, чем Erlang. Помимо более простого синтаксиса, Elixir расширяет возможности Erlang, чтобы включать (среди прочего) метапрограммирование, полиморфизм и встроенную документацию.

Краткое введение в функциональное программирование

Эликсир, как и Erlang, является функциональным языком программирования. Это немного отличается от большинства других языков, которые почти все являются обязательными и обычно объектно-ориентированными.

Большинство языков программирования имеют своего рода синтаксис блока кода, называемый «функцией». Или, в некоторых объектно-ориентированных языках они называются «методами», но все знают, что метод – это просто «функция», прикрепленная к объекту..

Но функция действительно функция?

В разработке программного обеспечения мы привыкли к функциям, которые что-то делают. Мы называем эти вещи «побочными эффектами».

Но в математике функции не имеют побочных эффектов. Вы не определяете круг с помощью функции, которая отображает все точки круга, а также меняет номер курса для вступления на гипотетическую геометрию.

В математике функция является детерминированной; при любом конкретном вводе x он всегда будет возвращать точный вывод y и больше ничего не делать.

Допуская побочные эффекты в программировании, мы вводим состояние – текущее состояние работающей программной среды. И проблема с состоянием в том, что оно может меняться со временем.

Переменная может означать одно сейчас, а другое – через десять минут. А это значит, что конкретный вызов функции с входом x может возвращать два разных значения y в два разных времени.

Это проблема? Это зависит от. Ни один из самых популярных языков разработки не является чисто функциональным, поэтому совершенно очевидно, что можно создавать всевозможные вещи (или почти все) с использованием языков, которые зависят от побочных эффектов и глобального состояния..

Однако в сильно распределенной, постоянно включенной системе это может быть проблемой. Если система распределена по нескольким десяткам (или нескольким тысячам) физических компьютеров, как вы распространяете изменения в глобальном состоянии на все из них??

Если система выходит из строя, как вы быстро восстанавливаете глобальное состояние? Если вызов функции может возвращать разные значения в разное время, как вы можете быть уверены, что тест, который вы запускаете сегодня, все равно пройдет завтра??

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

Такая математическая чистота уже давно представляет интерес для академических компьютерных ученых, но реальный мир разработки программного обеспечения был в значительной степени незаинтересован – пока внезапно, из-за потребностей Интернета, все заинтересовались.

Функциональное программирование является одной из самых важных современных тенденций в разработке веб-приложений..

Функциональные ресурсы программирования

Если вы действительно хотите разобраться с Elixir, вам нужно сосредоточиться на функциональном программировании. Вот с чего начать.

  • статьи

    • Статья о функциональном программировании в Википедии: очень глубокий обзор предмета.

    • Не бойтесь функционального программирования: относительно простое для понимания объяснение функционального программирования, написанное для разработчиков JavaScript.

    • Практическое введение в функциональное программирование

    • Основы функционального программирования: что это такое?

    • Что такое функциональное программирование?.

  • Видео

    • Функциональное программирование; Какая? Почему? когда?

    • Функциональное программирование из первых принципов

    • Радость функционального программирования

    • Список воспроизведения: функциональное программирование – объяснение основных понятий.

  • книги

    • Чисто функциональные структуры данных

    • Алгоритмы: подход функционального программирования

    • Введение в функциональное программирование через лямбда-исчисление

    • Функциональное мышление: парадигма над синтаксисом

    • Стать функциональным

    • Дискретная математика и функциональное программирование.

Ресурсы эликсира

Есть много ресурсов во многих формах, которые помогут вам освоить эликсир.

Интернет-ресурсы

Первое место, чтобы начать изучать Elixir онлайн, это официальный языковой сайт Elixir..

Учебники
  • Официальное руководство по началу работы

  • 30 дней эликсира

  • Школа Elixir: уроки о языке программирования Elixir.

  • Видео гид по эликсиру

  • Этюды для эликсира

  • Шпаргалка эликсира.

инструменты
  • Phoenix: фреймворк веб-разработки для Elixir. И не пропустите эту великую книгу о Фениксе в соавторстве с создателем Феникса и создателем Эликсира.

  • Awesome Elixir: созданный сообществом список потрясающих проектов для Elixir.

Сообщество и продолжение обучения
  • Эликсир Форум

  • Эликсир Субреддит

  • Эликсир Фонтан

  • Еженедельный дайджест эликсира

  • Эликсир Радар.

Книги по эликсиру

  • Программирование Эликсир: Функциональный |> Параллельный |> Прагматичный |> Веселье

  • Эликсир метапрограммирования: пиши меньше кода, делай больше (и получай удовольствие!)

  • Эликсир в действии

  • Введение в Elixir: начало работы в функциональном программировании

  • Эликсир обучения

  • Эликсир Поваренная книга.

Должен ли я выучить эликсир?

Если вы заинтересованы в работе над передовыми веб-приложениями, особенно теми, которые обслуживают большое количество одновременно работающих пользователей, Elixir определенно стоит знать.

Вывод

Сообщество Erlang по-прежнему остается относительно редким языком программирования и быстро растет, особенно в связи с увеличением спроса на мобильные решения, веб-приложения и бесперебойную совместную работу в Интернете..

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

Но может быть лучше сосредоточиться на эликсире. Это зависит от того, что именно вы хотите сделать. Несмотря на это, они оба замечательные языки.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me