Знакомство с языком программирования Elixir

Мы знаем многое о тех языках веб-разработки, которые повсеместно используются на протяжении долгого времени. К таким наиболее популярным языкам относятся Python, PHP и Ruby. Однако не так давно мир программирования обратил внимание на перспективного новичка – язык программирования Elixir.

 

Что такое Elixir?

 

Elixir – это функциональный язык программирования, который был представлен в 2012 году. Хосе Валим (José Valim), один из создателей языка, решил написать его на базе виртуальной машины Erlang под названием BEAM. Именно эта база была выбрана не просто так. Erlang – это язык программирования, который поддерживает параллельные вычисления и позволяет вести продуктивную разработку. Поэтому Хосе хотел, чтобы создаваемый его командой язык также обладал всеми положительными качествами, взятыми от Erlang.

Существует так называемая Основная команда языка Elixir (Elixir Core team), которая занимается поддержкой исходного кода. В эту команду входят: Хосе Валим (José Valim), Эрик Мидоус Йонссон (Eric Meadows-Jönsson), Джеймс Фиш (James Fish), Алексей Магусев (Aleksei Magusev), Майк Мускала (Michał Muskała) и Андреа Леопарди (Andrea Leopardi). Изменения в исходный код Elixir вносятся только в том случае, если все участники достигли взаимопонимания и выступают за внесение правок.

С 2012 вышло около 100 релизов Elixir. Несмотря на то, что этот язык считается достаточно молодым, он активно развивается и обрастает все более обширным сообществом.

 

Erlang – прародитель Elixir

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

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

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

 

Что такое фреймворк Phoenix, и как он связан с Elixir?

Знакомясь с Elixir, также необходимо понять, что такое Phoenix. Phoenix – это фреймворк для веб-разработки, написанный на Elixir и используемый для работы на этом языке.

Как и Elixir, Phoenix также работает на виртуальной машине Erlang (BEAM). Поэтому данный фреймворк также получил все преимущества, которые мог дать Erlang.

Главными характеристиками Phoenix являются:

  • Простота.
  • Удобство сопровождения.
  • Высокая скорость.
  • Продуктивность.
  • Масштабируемость.

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

 

Достоинства языка Elixir

При использовании языка программирования Elixir вместе с фреймворком Phoenix перед программистами открывается целый ряд плюсов:

  • Высокая скорость.
  • Надежность.
  • Параллелизм.
  • Высокая производительность.
  • Отказоустойчивость.
  • Масштабируемость.
  • Понятный синтаксис.

Высокая скорость

Elixir и Phoenix отличаются высокой скоростью. К примеру, тесты на производительность данного языка показывают результаты на порядок выше, чем у того же Ruby, а скорость реагирования у Phoenix иногда исчисляется микросекундами. Впечатляет, не правда ли? Если мы говорим о пользовательском опыте, то скорость – это один из ключевых параметров. И когда приложение быстро реагирует на все наши запросы, это не может не радовать. Кроме того, высокая скорость повышает уровень производительности, который, в свою очередь, экономит энергию и средства.

Надежность

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

Параллелизм

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

Высокая производительность

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

Отказоустойчивость.

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

  • сторонние проблемы (например, неполадки с сетью);
  • проблемы внутри приложения (к примеру, неправильные данные, логические ошибки).

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

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

Масштабируемость

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

Понятный синтаксис

Любой программист, посмотрев на фрагмент кода на Elixir, точно скажет, что код выглядит приятно. Благодаря понятному синтаксису, код на данном языке не только приятно читать, но и легко писать. Единственное, что нужно учитывать, это то факт, что Elixir – это язык функционального программирования, которое в значительной степени отличается от объектно-ориентированного (ООП). Поэтому тем программистам, кто раньше работал с ООП, понадобится некоторое время, чтобы привыкнуть к созданию кода на Elixir.

 

 

Недостатки языка Elixir

К недостаткам Elixir относятся:

  • Небольшое количество вакансий для работы с этим языком.
  • Недостаток Elixir-разработчиков.
  • Elixir – это молодой язык программирования.
  • Небольшое сообщество.
  • Небольшая экосистема.

Небольшое количество вакансий для работы с Elixir и недостаток разработчиков

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

Небольшое сообщество и экосистема

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

Elixir – это молодой язык программирования

Этот язык программирования возник не так давно, поэтому многие программисты все еще присматриваются к нему. Некоторые разработчики пока не уверены насчет того, какое будущее ждет Elixir, поэтому не решаются перейти на него.

 

Для каких проектов Elixir станет отличным выбором?

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

В частности, Elixir отлично подойдет для проектов со следующими требованиями и характеристиками:

  • Параллелизм.
  • Низкая задержка.
  • Большой поток трафика.
  • Масштабируемость.
  • Распределенные системы (к примеру, блокчейн-проекты).
  • Встроенные системы (к примеру, проекты в области интернета вещей).
  • Приложения реального времени (системы обмена мгновенными сообщениями, чаты, видео-чаты, приложения для финансового учета и прочее).

 

Какие проекты и компании используют Elixir?

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

Так какие компании все-таки используют Elixir? Среди наиболее известных компаний можно выделить Pinterest, Postmates и Bleacher Report. Pinterest – это популярная во всем мире социальная сеть, где люди делятся вдохновляющими их картинками и видео. Каждый месяц количество пользователей исчисляется миллионами, тем самым создавая немалую нагрузку на приложение. Pinterest использовал Elixir для внедрения системы уведомлений. По результатам, размер кода уменьшился в 10 раз – вместо 10 000 строк кода сейчас данное нововведение занимает всего 1 000 строк. Кроме того, с помощью Elixir разработчики смогли в два раза снизить нагрузку на сервер.

Bleacher Report – это популярный в Америке сайт со спортивными новостями. Изначально сайт был создан на Ruby on Rails, однако со временем стало понятно, что с помощью данного языка больше нет возможности масштабировать систему. Поэтому было принято решение перевести сайт на язык программирования Elixir. Это решение сэкономило компании значительную часть средств, которые бы были потрачены на сервера и инструменты. Вместо 150 серверов для работы с Ruby on Rails, после перехода на Elixir компании Bleacher Report понадобилось всего 5 серверов. Впечатляет, правда?

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

 

Почему разработчики отдают предпочтение Elixir

  1. Elixir отличается крайней продуктивностью. Он позволяет с легкостью масштабировать приложения.
  2. Elixir обладает отличным набором инструментов, в том числе, превосходным веб-фреймворком Phoenix. Конечно, пока нет достаточного набора библиотек и сервисов для этого языка, однако основная команда по развитию языка и многочисленные поклонники активно работают в этом направлении.
  3. Писать код на Elixir крайне просто благодаря понятному синтаксису. Реализовать функцию можно с помощью всего нескольких строк кода.
  4. Хоть сообщество этого языка и невелико на данный момент, однако оно крайне радушное и всегда готово прийти на помощь. С несомненным ростом популярности языка будет увеличиваться и количество разработчиков и последователей.
  5. Те разработчики, которые уже работают с Elixir, с радостью отмечают, что теперь у них нет необходимости выбирать между скоростью разработки и производительностью.

 

Самое время попробовать Elixir

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

 

Читайте новости первыми в нашем Telegram-канале!

Подписывайтесь на наш канал в Дзен!

Версия для печатиВерсия для печати

Рубрики: 

  • 1
  • 2
  • 3
  • 4
  • 5
Всего голосов: 2
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!

Комментарии

Аватар пользователя savely

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

 

Аватар пользователя mike

В гробу я видал такое "знакомство" с языком. Хотелось бы хоть немного понятий без лозунгов типа "скорость", "масштабируемость" и т.д.

+1
Аватар пользователя savely

>  без лозунгов типа "скорость", "масштабируемость" и т.д.

Ты прав, конечно же. Просто лозунги уже мимо мозга пропускаются, ибо "несть им числа".

Мда... Хоть бы пару примеров привели ... Насколько я понял, это язык для выполнения на стороне сервера, типа php, perl, или python