elixir язык программирования для чего

Elixir

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

Несколько дней назад Jose Valim опубликовал в своем репозитории проект языка, построенного поверх Erlang. Этот язык обладает простой объектной моделью и Ruby-подобным синтаксисом. Под катом выжимки из документации и видео, демонстрирующее простой пример.

disclaimer: %username%, прежде чем делать выводы насчет того, что умеет, а что не умеет elixir, просьба глазами пройтись хотя бы по readme.

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

Основное различие между Elixir и Erlang — синтаксис и объектная ориентированность. Elixir обеспечивает очень простую объектную модель и синтаксис, большей частью основанный на Ruby.

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

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

Комментарии в Elixir, как и в Erlang, обозначаются через “%”:

Далее, “% =>” показывают значение выражения:

Elixir поддерживает целые и дробные числа:

Как в Ruby, любая конструкция является объектом. Мы можем вызывать методы у чисел:

Атомы в Elixir называются Symbols (как в Ruby). Но синтиксис позаимствован у Lisp (Jose объяснил это в твиттере тем, что хочет «:» использовать в словарях):

Списки являются наиболее полезной структурой в Elixir (как и в любом другом функциональном языке), могу содержать все, что угодно и имеют набор методов:

Списки в Erlang и Elixir реализованы как связные списки, поэтому предварительное добавление элементов происходит намного быстрее, чем последующее:

Настоящую силу списков получаешь, когда используешь их вместе с функциями

Строки в Erlang представлены списком символов:

Это накладно, поскольку каждый символ занимает 8 байт памяти (не бит!). Elixir реализует строки, в виде utf8 бинарных строк:

Это существенное изменение. Строки являются единственными объектами, требующими преобразования:

Наконец, строки поддерживают интерполяцию:

Функции являются важной частью Elixir, как и любого другого функционального языка. Функции можно создавать с помощью «do» или «->»:

Как и Erlang, Elixir поддерживает Pattern matching и единичное присваивание.

Как и в Eralng, pattern matching используется в сигнатурах функций:

Вызов методов Erlang весьма тривиален:

Это описание малой части возможностей Elixir. В репозитории опубликована отличная обзорная документация. Ролик ниже иллюстрирует небольшой пример работы языка:

Источник

Elixir

Здравствуйте, сегодня я Вам расскажу о современном языке программирования под BeamVM (или ErlangVM).
Первая часть является неполным введением в основы, а вторая часть статьи показывает на простых примерах главные особенности языка, новые для erlang-разработчика.

Два года назад вышла 0.1 версия elixir, которая и была представлена хабрасообществу раньше.

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

На данный момент, elixir стал самым популярным языком программирования (естественно, помимо erlang-а), построенным поверх BeamVM. Вплоть до того, что автор erlang Joe Armstrong посвятил статью, а Dave Thomas написал книгу. За два года очень многое изменилось, язык сильно стабилизировался и обрёл более или менее конечный вариант для версии 1.0. За это время, из elixir исчезла объектная модель, остался Ruby-подобный синтаксис, но добавился метапрограмминг и полиморфизм, которые органично, в отличие от объектно-ориентированной парадигмы вписываются в Beam VM.

Чтобы опробовать у себя, можно скачать его с гитхаба:

В elixir-е имеется интерактивная консоль iex, в которой можно сразу же всё и попробовать. В отличие от erlang-а в консоли elixir-а можно создавать модули, как будет показано ниже.

Далее, “# =>” показывают значение выражения:

Типы данных в elixir-е такие же, как и в erlang-е:

Строки в elixir-е, как и в erlang-e могут быть представлены через списки или через binary:

В отличие от erlang, elixir использует везде binary, как стандартную имплементацию строк из-за скорости и компактности их перед списками букв.

A так же есть многострочные строки:

Вызов функций, мы уже видели выше для модуля, но можно и так, опуская скобки:

Хороший стиль программирования для elixir-а рекомендует, если и опускать скобки, то при использовании макро.
Coding Style в стандартной библиотеке говорит о том, что для вызова функций скобки должны быть.

Переменные в elixir являются по-прежнему immutable, но можно делать reassigment:

Изменять переменные можно только между выражениями, а внутри одного выражения это будет по-прежнему match. При этом сохранился весь pattern matching из erlang и при этом можно с помощью ^ делать их неизменяемыми как в erlang-е:

После того, как я сам начал программировать на elixir-е, смотреть на код erlang, который создаётся часто через copy-paste с изменением одного значения(а такая необходимость есть почти в каждом проекте, который я встречал) или постоянные повторения определённого паттерна, которые увеличивают код, мне так и хочется переписать их грамотно на elixir-е.

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

Начнём с метапрограммирования. В elixir-е всё является выражениями, по крайней мере насколько это возможно(«Everything is an expression»).
Первый пример, мы возмём самый обычный модуль с одной функцией, как наш эксперимент.

Запищем его в фаил и скомпилируем его так:

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

Давайте изменим наш пример немного:

Теперь, вовремя компиляции мы можем увидеть «Hello compiler».

Теперь попробуем изменить что-то в нашем модуле, в зависимости от компиляции:

Теперь, мы если мы скомпилируем код, то в зависимости от того, как мы его компилируем, мы можем увидеть:

Либо, если мы скомпилируем наш модуль так, то получим другое действие нашей функции:

А теперь, попробуем сделать что-то более интересное, например сгенерировать код.
В erlang-коде часто можно встретить такой или подобный код:

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

В elixir-е, мы можем получить ту же скорость работы функции, не повторяясь, если будем генерировать те же самые функции во время компиляции:

lc inlist do — это list compression в языке elixir, пример использования:

Сейчас с помощью list compression мы сгенерировали по две функции(или точнее match для функции).

Макро в elixir-e действуют, как в clojure(программисты lisp-а будут чувствовать себя, как дома), у любого кода можно увидеть его AST:

Как видно из примеров, AST состоит из кортежей с тремя элементами:
Теперь, попробуем написать наше первое макро:

Теперь используем наше макро:

Следующий пример покажет, как можно использовать полученные знания, например для оптимизации.
Если мы используем где-то регулярные выражения, то это выглядит так:

А теперь, используя наши знания выше, мы можем вынести компиляцию регулярного выражения, тем самым сделая наш runtime код быстрее:

В данном примере, мы вынесли компиляцию регулярного выражения вне функции. Используя Macro.escape (есть много других полезных функций в модуле Macro) мы вставили в нашу функцию уже скомпилированное регулярное выражение, имея по-прежнему в коде читабельный вариант. Собственно, в эликсире с регулярными выражениями не нужно этого делать, так как %r макро это уже делает за вас, в зависимости от того, если можно сразу скомпилировать регулярное выражение.

Таким образом, мы можем сравнить скорость нашей функции:

Пример показывает, что мы можем использовать библиотеку Enum над любым типом данных, который имплементирует протокол Enumerable.

Имплементация для протоколоа может находиться где угодно, независимо от самого протокола: главное, чтобы скомпилированный код находился там, где BeamVM может его найти(т.е. в :source.get_path). Т.е. например, Вы можете расширять существующие библиотеки, не изменяя их код для своих типов данных.

Ещё один интересный встроенный протокол — это access protocol — возьмём на примере верхнего списка символ-значение:

Мы сделаем очень простой пример с бинарным деревом, который будет находиться в записи(record) Tree и для нашего дерева мы тоже имплементируем Access протокол.

Теперь точно так же мы можем находить наши значения через Access Protocol

Протоколы дают полиморфизм.

И теперь, немного синтаксического сахара, который упрощает написание и чтение кода в определённых ситуациях.
[<:a, 1>] можно писать так: [a: 1]

Точно так же, часто приходиться писать такие конструкции, как:
func3(func2(func1(list))), несмотря на то, что вызов функции func1 произойдёт первым, мы пишем вначале func3 или должны вводить переменные, как в этом случае:

C помощью оператора pipeline (|>) мы можем переписать наш пример так:

В библиотеке elixir-а стандартизировано субъект идёт первым аргументом. И это даёт возможность с помощью |> оператора, который подставляет результат предыдущего действия как первый аргумент функции в следующий вызов, писать более понятный, компактный и последовательный код.

Ещё, мы можем упростить этот пример, используя curry или partials в простых случаях:

Я думаю, Elixir будет интересен erlang-разработчикам, которые хотят улучшить качество своего кода, продуктивность, и опробовать метапрограммирование в действии. Аналогично, разработчики с других языков и платформ также проявят к нему интерес. Например те, кто хотели бы опробовать BeamVM, но не решались из-за синтаксиса erlang-а или сумбура в его библиотеках. Здесь важным достоинством elixir-а является стандартизированная и компактная стандартная библиотека(Standard Library).

Источник

Elixir (язык программирования)

мультипарадигмальный: функциональный, параллельный, распределённый, процессо-ориентированный

1.2.0 (1 January 2016)

Erlang, LFE, Python, Ruby, Clojure

Elixir — функциональный, распределённый, язык программирования общего назначения, который работает на виртуальной машине Erlang (BEAM). Elixir построен поверх Erlang, что обеспечивает распределённость, отказоустойчивость, исполнение в режиме мягкого реального времени, метапрограммирование с макросами и полиморфизмом, реализованным через протоколы. Elixir использует Erlang/OTP для работы с деревьями процессов.

История

Elixir был создан Жозе Валимом (José Valim), одним из основных разработчиков Ruby on Rails о со-основателем компании Plataformatec. Его целью было включить более высокую расширяемость и производительность в Erlang VM, сохраняя совместимость с инструментами и экосистемой Erlang.

Возможности

Сравнение с Erlang

Installing

Mac OS X

Windows

Прекомпилированный пакет

Elixir предоставляют прекомилированные пакеты каждого релиза. Сначала установите Erlang, потом скачайте и разархивируйте Precompiled.zip файл последнего релиза.

Установки Erlang

Единственной зависимость для Elixir является Erlang версии 18.0 и выше. Его можно установить при помощи прекомпилированного пакета. Если вы хотите скомпилировать его сами, используйте исходный код, который можно найти на сайте Erlang или следуйте инструкции из документации Riak

Для пользователей Windows рекомендуется использовать прекомпилированные пакеты.

Обратите внимание, что после установки, исполняемые файлы Erlang не будут доступны в переменной окружения PATH. Удостоверьтесь, что они прописаны в PATH, иначе Elixir не будет работать.

Setting PATH environment variable

Рекомендуется добавить путь до bin Elixir в переменную окружения PATH для упрощения разработки.

Инструкция для Windows, объясняющая процесс.

В Unix системах необходимо найти файл профиля shell и добавить в конец файла следующую страку, указывающую путь к Elixir:

Источник

Что такое Эликсир?

Мы уже выучили наизусть, что

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

Пришло время прояснить человеческую суть, лежащую под этим википедизмом.

Начнём с конца. На Эликсире пишут приложения. О, как! Они написаны настолько понятно, что становится легко добавлять новые возможности и сопровождать их в эксплуатации. Благодаря простому синтаксису и правильным идеям в основе языка, понять незнакомый проект на Эликсире не составляет труда. Другими словами, приложения являются легко поддерживаемыми.

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

Под словом динамический подразумевается динамическая типизация. Это не значит, что строки складываются со списками – тут произойдёт ошибка. Типизация хоть и динамическая, но строгая. Типы в Эликсире просто не указываются явно – компилятор сам разберётся что к чему.

Осталось разъяснить последний термин, что же такое ф…

– А что такое функциональный язык? – нетерпеливый читатель.

…ункциональный язык программирования. Как раз об этом расскажем дальше.

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

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

Инкапсуляция позволяет хранить данные внутри объектов вместе с методами для работы с ними. Изменяя состояние данных, изменяется результат выполнения методов. Такая ситуация называется побочным эффектом – вроде подаём на вход метода одно и то же, а на выходе получаем разный результат. Становится сложно разобраться с таким кодом при отладке.

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

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

Под этот критерий точно подходит Эрланг, благодаря OTP – фреймворку для создания распределённых сетевых приложений (говоря грубо). Мешает одна проблема, язык застыл в прошлом (позапрошлом?) десятилетии, а главные изменения нужны в первую очередь мейнтейнерам, а не разработчикам его использующим.

Почему не Эрланг?

В диком мире можно встретить самых настоящих эрлангистов. Более того, свежая кровь до сих пор приходит в Эрланг, но не в том количестве, чтобы выстраивать современную экосистему вокруг языка. На помощь пришёл рубист со стажем – Жозе Валим, и решил провести ребрендинг.

Эликсир можно назвать Эрлангом 2.0. Помимо надёжности прародителя, в Эликсире:

Эликсир всё ещё продолжает искать себя, и как только он встанет на ноги, отличий станет ещё больше.

Почему функциональные языки снова становятся популярными?

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

Сравнение с конкурентами

Каждый язык старается занять свою нишу. Го и Раст – фантастические по скорости языки, они обгоняют в том числе и Эликсир. Однако сфера применения каждого из них разнится. Раст – системный язык программирования для решения низкоуровневых задач. Вряд ли на нём получится быстро написать отказоустойчивый бэкенд для приложения реального времени.

Сравнивать Эликсир с Го немного сложнее – они похожи. Начнём с того, что Го более низкоуровневый, чем Эликсир. Приготовьтесь, что вам придётся писать много кода с нуля. Го подходит для написания веб-микросервисов, как и Эликсир, однако второй из них гораздо лучше справится с группами микросервисов объединенными в одну систему. Го отлично подойдёт для конкретных небольших задач, в которых важна производительность. Эликсир же поможет легко написать распределённые веб-приложения с элементами реального времени.

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

С чего начать?

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

P. S. И не забудьте подписаться на нашу почтовую рассылку. Всё самое интересное мы пишем именно туда.

Ламповая рассылка про Эликсир

Один-два раза в неделю присылаем тёплые письма об Эликсире: переводы самых интересных статей до их появления в открытом доступе, анонсы событий и вкусные бонусы.

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

Источник

Почему я ставлю на Elixir

6 лет я создавал приложения на языке Ruby и фреймворке Rails. Я щупал всякие новые языки программирования по мере их выхода, но Elixir – первый из них, который меня действительно увлёк.

В своё время Ruby уделал всех

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

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

elixir язык программирования для чего. Смотреть фото elixir язык программирования для чего. Смотреть картинку elixir язык программирования для чего. Картинка про elixir язык программирования для чего. Фото elixir язык программирования для чего

Ruby прошёл путь от скромного положения невразумительного языка до одного из самых популярных языков, в основном из-за фреймворка Rails и огромного лидерского потенциала таких людей, как DHH, Wycats, Aaron Patterson, Jose Valim и множества других. Но периодически, и тут и там начинают вылезать артефакты, оставшиеся из-за такого скромного старта языка.

Убегающая память

Зед Шо [Zed Shaw] в посте «Rails – это гетто» разглагольствует на тему проблем со сборкой мусора, из-за которых первые приложения на Rails перезапускались каждые 4 минуты.

Один из самых популярных серверов для Rails сегодня – это unicorn. Моё веб-приложение – это приложение для Rails, оно довольно простое, по сравнению с другими приложениями, которые я разрабатывал. Я перенёс его на сервер с 512 Мб памяти, и после нескольких дней работы мой unicorn съел всю доступную память и приложение начало тормозить.

Решение? unicorn-worker-killer. Не слишком отличается от более ранних решений.

Мой сервер способен обслужить два потока unicorn, забирающих большинство ресурсов, базу данных Postgres и несколько других приложений. Отзывается он, правда, довольно быстро, поэтому работу свою делает.

Параллелизм

Хотя я занимаюсь разработкой приложений для Rails уже несколько лет, я ни разу не использовал дополнительные потоки в приложениях для продакшена. Сам по себе Rails нормально работает с потоками, но по моим ощущениям, от них возникают одни лишь проблемы – я пробовал использовать их в Java, C++ и других ООП-языках.

Суть в том, что я не хочу задумываться про мьютексы, семафоры, и всяком таком. Если я буду останавливать один поток, чтобы дать другому поработать, не особенный-то это будет параллелизм. И ещё — вы точно-точно уверены, что исполнение вашего кода не приводит к взаимным блокировкам?

Тестирование – главная парадигма сообщества Ruby, поэтому неудивительно, что большинство рубистов не трогают многопоточность, поскольку её практически невозможно тестировать, а её баги очень сложно воспроизводить.

Как и большинство нормальных разработчиков, я использую sidekiq или resque для обработки вещей в параллели. В Rails 2.2 добавили безопасность для потоков, но в Rails 4.2 добавили Active Job API, которое оказалось гораздо более полезным.

Но процессы, выполняемые в фоне, нужно выполнять в фоне. А критичные вещи нужно выполнять в главном процессе – чтобы можно было среагировать на ошибку или проследить, что все транзакции были успешно завершены, перед тем, как завершать задачу.

Скорость

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

Какое-то время выполнение функциональных и юнит-тестов у проекта, над которым я работал, занимало порядка 20 минут. Я использовал hydra для распределённых тестов, но мне всегда было сложно сделать так, чтобы тесты проходили (скорее всего, из-за слишком сложного и не особо красивого кода).

Даже запуск тестов занимал секунд 40. Вы когда-нибудь ждали 40 секунд, только чтобы увидеть: “syntax error, unexpected end-of-input, expecting keyword_end”, или ещё такую же ерунду? А я ждал.

Что делать? Zeus. Прекрасный gem, которая предварительно загружает всё необходимое для приложения и может загрузить (согласно описанию на github) любое приложение для Rails за секунду. Он мне нравится, и я рекомендую его всем.

Но как они достигли такого быстродействия? Просто написали его на Go.

Scala

Пару лет назад я обрадовался появлению Scala. Потом я начал её использовать – и ненавидеть.

У неё есть много концепций из функционального программирования. Фреймворк akka позволяет писать надёжные приложения. Она запускается в JVM, поэтому может использовать любую библиотеку из Java, а JVM очень хорошо обработана на предмет быстродействия.

Сам язык приятный. Но что меня остановило? JVM. Управление пакетами jar слишком сложное, если сравнить его с Rubygems и Bundler.

Есть, конечно, всякие решения: SBT, Maven, Ivy,- но все они заставляют меня морщиться, когда мне нужно импортнуть чью-либо чужую библиотеку. Может, Ruby меня испортил, но управление пакетами в нём – одна из основных причин моей продуктивности.

Что меня ещё напрягало в Scala, так это что используемые мною библиотеки были написаны на Java людьми, чьи ценности и установки сильно отличались от моих.

Создание веб-приложения на Scala в фреймворке Play! выглядело так же, как создание веб-приложения на Java в фреймворке Play!, кроме чуть более простого синтаксиса и возможности поиска шаблонов. Хотя Rails сильно повлиял на Play!, разница между ними чувствуется интуитивно.

Экосистема Elixir

Управление пакетами через Mix

Впервые погрузившись в Elixir, я наткнулся на Mix. Это гибрид Bundler и Rake в Ruby. Что мне в нём так нравится – это то, что он не хуже, чем Bundler и Rake. Он и не сильно лучше, но планка поднята достаточно высоко и подняться до неё – это уже достижение.

Mix делает свою работу прекрасно, не мешается под ногами, и не заставляет вас возиться с XML.

Виртуальная машина Erlang

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

Веб-фреймворк Phoenix

На phoenix framework, очевидно, сильно повлиял Ruby on Rails, и создание веб-приложения для Phoenix выглядит очень похоже на создание приложения для Rails. Мне нравится роутер у Rails. А также ActionController, ActiveRecord, Rails Views и способ, каким вы можете программировать приложение. Мне нравится организация приложений в Rails.

Phoenix так похож на Rails, что вам покажется, будто вы делаете приложение для Rails, кроме того, что оно будет работать под Elixir и иметь все преимущества Elixir и виртуальной машины Erlang.

Кроме этого, он поддерживает WebSockets через каналы. Это позволяет вам легко использовать WebSockets, предоставляемые в Firebase.

elixir язык программирования для чего. Смотреть фото elixir язык программирования для чего. Смотреть картинку elixir язык программирования для чего. Картинка про elixir язык программирования для чего. Фото elixir язык программирования для чего

Лидерство

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

Движение Rails приобрело такой большой импульс, благодаря работе DHH, Aaron Patterson, Jose Valim, Wycats и кучи других. Не было такого, чтобы запустили первую версию Rails и работа встала.

Это всё старая привычка много работать – а построение грамотного сообщества требует большой работы. Jose Valim, Chris McCord, и все остальные члены основных команд Elixir-Lang и Phoenix работали и продолжают работать над процветанием их сообщества.

Веб ждут великие преобразования

Признайте – CRUD-приложения на сегодняшний день являются товаром. Следующий стартап «AirBnB для аренды кетчупа» скорее всего не выживет.

Победят те, кто примут изменения в технологиях. То, что в WebSockets, процессы и параллелизм в Phoenix и Elixir легко достижимы, и из-за них не надо поступаться лёгкостью программирования, просто меняет всё дело.

Я очень люблю Ruby on Rails. Он поменял способ создания веб-приложений в годах 2005–2014. Думаю, что Elixir и Phoenix произведут такой же эффект в годах 2015–2025.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *