Эликсир – динамический функциональный язык программирования, предназначенный для создания масштабируемых и поддерживаемых приложений.
Пришло время прояснить человеческую суть, лежащую под этим википедизмом.
Начнём с конца. На Эликсире пишут приложения. О, как! Они написаны настолько понятно, что становится легко добавлять новые возможности и сопровождать их в эксплуатации. Благодаря простому синтаксису и правильным идеям в основе языка, понять незнакомый проект на Эликсире не составляет труда.
Другими словами, приложения являются легко поддерживаемыми.
Каждый отдельный кусочек кода такого приложения обрабатывается в отдельном процессе – маленькой подпрограммке внутри виртуальной машины Эрланга, поверх которой и работает Эликсир. Этой машине без разницы, запущен процесс на текущем сервере или же на сервере в другом дата-центре. Пропишите явки с паролями в конфигурацию, и инфраструктура языка сама разберётся, как связать эти части в распределённую сеть. Это называется горизонтальным масштабированием.
💚 Эликсир Здоровья ֎ Исцеление Физического Тела ֎ Устранение Болезней, Блоков и Негативных Программ
Под словом динамический подразумевается динамическая типизация. Это не значит, что строки складываются со списками – тут произойдёт ошибка. Типизация хоть и динамическая, но строгая. Типы в Эликсире просто не указываются явно – компилятор сам разберётся что к чему.
Осталось разъяснить последний термин, что же такое ф…
– А что такое функциональный язык? – нетерпеливый читатель.
…ункциональный язык программирования. Как раз об этом расскажем дальше.
Функциональное программирование
Парадигма, которой придерживаются языки программирования, – вещь туманная. Любой язык относится к главной парадигме, например, объектно-ориентированной, при этом дополнительно использует особенности других парадигм. Привычная практика программирования тесно связана с классами, объектами, прототипами и процедурами.
Работа с этими абстракциями предполагает изменение внутреннего состояния компонентов системы. Из-за таких изменений бывает, что методы одного и того же класса, дают разный результат. Виновата в этом инкапсуляция.
Инкапсуляция позволяет хранить данные внутри объектов вместе с методами для работы с ними. Изменяя состояние данных, изменяется результат выполнения методов. Такая ситуация называется побочным эффектом – вроде подаём на вход метода одно и то же, а на выходе получаем разный результат. Становится сложно разобраться с таким кодом при отладке.
Спасают нас чистые функции, работа которых достигается неизменяемостью данных, говоря на сленге – иммутабельностью. В чистых функциях при одинаковом входе воспроизводится одинаковый выход. В качестве примера, возьмём реализацию хеш-функции MD5: если сто раз подадим на вход строку Elixir , то сто раз получим в ответ a12eb062eca9d1e6c69fcf8b603787c3 . Без вариантов.
Добиться такого кода можно, отказавшись от инкапсуляции. Было бы странно отказываться от объектно-ориентированных механизмов в объектно-ориентированном языке. Куда разумнее перенестись в функциональную плоскость и отдать решение задачи функциональному языку.
Для женщин! Лифтинговая программа преображения 5в1 Бьюти Эликсир и антивозрастной уход
Основная часть сообщества Вунш – разработчики сетевых приложений. Как минимум, мы работаем с сетевыми протоколами, как максимум, пишем фуллстек веб-приложения. Значит искать нужно среди функциональных языков, заточенных под сетевую работу с прицелом на веб.
Под этот критерий точно подходит Эрланг, благодаря OTP – фреймворку для создания распределённых сетевых приложений (говоря грубо). Мешает одна проблема, язык застыл в прошлом (позапрошлом?) десятилетии, а главные изменения нужны в первую очередь мейнтейнерам, а не разработчикам его использующим.
Почему не Эрланг?
В диком мире можно встретить самых настоящих эрлангистов. Более того, свежая кровь до сих пор приходит в Эрланг, но не в том количестве, чтобы выстраивать современную экосистему вокруг языка. На помощь пришёл рубист со стажем – Жозе Валим, и решил провести ребрендинг.
Эликсир можно назвать Эрлангом 2.0. Помимо надёжности прародителя, в Эликсире:
- появилась экосистема под современные нужды: пакетные менеджеры, инструменты выполнения задач, фреймворк для тестирования и т.п.;
- улучшился синтаксис – порог вхождения снизился;
- началась кампания по пиару «свежего» языка для оживления сообщества;
- упростилось метапрограммирование;
- устранились некоторые недостатки, например, работа со строками;
- были написаны новые полезные абстракции и надстройки.
Эликсир всё ещё продолжает искать себя, и как только он встанет на ноги, отличий станет ещё больше.
Почему функциональные языки снова становятся популярными?
Помимо всех перечисленных особенностей и преимуществ Эликсира, функциональные языки снова становятся популярными благодаря распространению и удешевлению многоядерных процессоров. Говоря простым языком, на них отлично параллелится код в функциональном стиле. Особенно, если этот код запущен на виртуальной машине Эрланга.
Сравнение с конкурентами
Каждый язык старается занять свою нишу. Го и Раст – фантастические по скорости языки, они обгоняют в том числе и Эликсир. Однако сфера применения каждого из них разнится. Раст – системный язык программирования для решения низкоуровневых задач. Вряд ли на нём получится быстро написать отказоустойчивый бэкенд для приложения реального времени.
Сравнивать Эликсир с Го немного сложнее – они похожи. Начнём с того, что Го более низкоуровневый, чем Эликсир. Приготовьтесь, что вам придётся писать много кода с нуля. Го подходит для написания веб-микросервисов, как и Эликсир, однако второй из них гораздо лучше справится с группами микросервисов объединенными в одну систему.
Го отлично подойдёт для конкретных небольших задач, в которых важна производительность. Эликсир же поможет легко написать распределённые веб-приложения с элементами реального времени.
А если нужна повышенная надёжность работы системы, то Эликсир точно ваш выбор – ему не страшны ошибки и падения, т.к. в языке существуют механизмы для обработки подобных ситуаций. Написать безопасный конкурентный код на другом языке программирования – та ещё задача.
С чего начать?
Надеемся, вас впечатлил Эликсир, и вам не терпится его попробовать. Предлагаем реализовать живую распределённую «записную книжку» на Эликсире. Таким образом, вы сможете пощупать Эликсир и познакомиться с его ключевыми возможностями на практике. Ответы на многие вопросы вы сможете найти в документации, а также в любой момент обратиться к статьям, которые мы регулярно переводим.
Удачи в изучении!
P. S. И не забудьте подписаться на нашу почтовую рассылку. Всё самое интересное мы пишем именно туда.
Ламповая рассылка про Эликсир
Один-два раза в неделю присылаем тёплые письма об Эликсире: переводы самых интересных статей до их появления в открытом доступе, анонсы событий и вкусные бонусы.
Обязательно подтверди почту, перейдя по ссылке в письме, иначе мы не сможем делиться с тобой полезностями.
Надоедать точно не будем 🙂
Источник: wunsh.ru
Язык программирования Elixir
Elixir — функциональный компилируемый язык программирования общего назначения. Он построен поверх языка Erlang, то есть Elixir — это почти тот же самый Erlang, но с «синтаксическим сахаром».
Программы на Elixir компилируются в байт-код для виртуальной машины Erlang (BEAM) и используют Erlang/OTP для работы с деревьями процессов. Всё это обеспечивает распределённость и отказоустойчивость, исполнение в режиме мягкого реального времени, возможности метапрограммирования с макросами и полиморфизмом на базе протоколов.
Если сравнивать Elixir с популярными интерпретируемыми языками для веб-программиров ания (например, с PHP, Ruby или Python), то Elixir обычно обеспечивает в 5-10 раз более высокую производительность, а также позволяет эффективно работать с большим количеством веб-сокетов.
Источник: web-creator.ru
Язык программирования Elixir
Elixir — язык программирования общего назначения, использующий функциональную парадигму построения кода и динамическую типизацию переменных. По сути, является надстройкой для другого языка — Erlang, и использует его виртуальную машину для компиляции кода. По синтаксису во многом схож с Ruby.
Elixir — не самый распространенный язык. Несмотря на то что он был изобретен еще в 2012 году, такой популярности, как конкуренты, он не приобрел. Тем не менее в веб-среде он нашел свою нишу и успешно решает ряд специфических задач.
Особенности языка
- Масштабируемость.
Код на Эликсире строится из легковесных потоков, называемых процессами. Они изолированы и обрабатываются сборщиком мусора независимо друг от друга. За счет этого ресурсы устройства используются максимально эффективно.
Процессы также могут работать связно на нескольких устройствах, обмениваясь сообщениями через сеть. Это позволяет разработчикам строить горизонтальные масштабируемые системы из нескольких узлов. - Отказоустойчивость.
Для поиска и исправления ошибок в Elixir существует специальный супервизор, который описывает найденные в коде проблемы и предлагает их решение. - Функциональное программирование.
Функциональный стиль в Эликсир позволяет писать короткий, читаемый код. Технология pattern matching делает работу с данными лаконичной и эффективной. - Встроенные инструменты управления.
Mix — утилита автоматизации, которая помогает управлять разрабатываемым проектом, тестами и подключаемыми задачами.
Инструмент IEx активирует возможности языка для автосборки, перезагрузки кода и форматирования. - Полная совместимость с Erlang.
Elixir взаимодействует с Erlang без потери производительности, не требуя преобразования типов данных. Для трансляции программы в машинный код Эликсир использует виртуальную машину Erlang (BEAM). - Быстрое исполнение.
При сопоставлении с похожими интерпретируемыми языками, такими как Python и Ruby, Elixir показывает в разы более высокую скорость обработки данных и эффективнее работает co множественными веб-сокетами. - Упрощенный синтаксис.
В сравнении с Erlang в Elixir добавлено больше “синтаксического сахара” — то есть послаблений в построении команд и форматировании программы.
К недостаткам языка относят:
- непривычность синтаксиса, особенно для разработчиков, привыкших к другим ООП языкам;
- усложненность арифметики и операторов;
- малое количество готовых библиотек.
Где используется Elixir
Благодаря своему самому крупному фреймворку под названием Phoenix, язык Elixir закрепился в веб-разработке. На “Фениксе” создаются крупные многопользовательские проекты с постоянным обновлением информации в реальном времени: мессенджеры, социальные сети, дашборды.
Работа с базами данных на Эликсир осуществляется через решение Ecto. Это четыре модуля со всеми необходимыми инструментами, включая репозитории и язык запросов.
При этом сам по себе Elixir — язык программирования общего назначения. На нем в теории можно писать программы для любых платформ.
Среди известных компаний, применяющих Elixir в своих IT-продуктах — Discord, PepsiCo и Change.org.
Примеры кода
Классическая программа Hello, world! в синтаксисе Elixir.
IO.puts «Hello World!»
Определение и вызов простой функции сложения в рассматриваемом языке выглядит так.
defmodule Math do def sum_of_values(a, b) do a + b end end IO.puts Math.sum_of_values(5, 8)
В Elixir используются атомы (константные единицы для определенного типа сущностей) и кортежи — списки из нескольких параметров.
С помощью сочетания атомов и кортежей удобно записывать небольшие общеупотребимые объекты.
Атомы хорошо работают с pattern matching при сравнении объектов. По сути, это их основное предназначение.
Заключение
Elixir — платформа, предоставляющая разработчику широкие возможности для масштабирования проекта за счет использования параллельных изолированных потоков. К плюсам языка также относят отказоустойчивость, реализацию метапрограммирования и высокую производительность. В популярности Эликсир заметно уступает более распространенным платформам, но качество разрабатываемых программ на нем ничуть не хуже. В некоторых аспектах язык даже превосходит конкурентов.
Источник: app-android.ru