Статьи

Введение в эрланг и эликсир

Elixir — это быстрый, динамичный и масштабируемый язык, быстро внедряемый толпой стартапов и созданными предприятиями для производственных приложений.

Pinterest, Brightcove, Discord и Canvas, и многие другие, работают на Elixir, который, в свою очередь, использует отказоустойчивую, отказоустойчивую Erlang VM, что означает полный доступ к экосистеме Erlang, используемой такими компаниями, как Heroku, WhatsApp, Кларна и Башо.

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

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

1
2
%User{name: name, age: age} = User.get(«John Doe»)
name #=> «John Doe»

В сочетании с охраной мы имеем мощную структуру:

1
2
3
4
5
6
def serve_drinks(%User{age: age}) when age >= 21 do
  # Code that serves drinks!
end
 
serve_drinks User.get(«John Doe»)
#=> Fails if the user is under 21

Утвердительно ; Elixir был создан с учетом масштабируемых, распределенных систем.

Elixir предлагает многопоточное выполнение (называемое процессами) в среде, в которой несколько процессов могут взаимодействовать друг с другом посредством сообщений.

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

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

Установите Elixir на свой компьютер, прежде чем мы продолжим:

  • Homebrew
    • Обновите ваш homebrew до последней версии: brew update
    • Запустить: brew install elixir
  • MacPorts
    • Запустить: sudo port install elixir
  • Arch Linux (репозиторий сообщества)
    • Run: pacman -S elixir
  • openSUSE (и SLES 11 SP3 +)
    • Добавить репозиторий Erlang devel: zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
    • Run: zypper in elixir
  • Gentoo
    • Запустите: emerge --ask dev-lang/elixir
  • GNU Guix
    • Запустите: guix package -i elixir
  • Fedora 21 (и старше)
    • Выполнить: yum install elixir
  • FreeBSD
    • Из портов: cd /usr/ports/lang/elixir && make install clean
    • Из pkg: pkg install elixir
  • Ubuntu 12.04 и 14.04 / Debian 7
    • Добавьте репозиторий Erlang Solutions: wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb
    • Запустите: sudo apt-get update
    • Установите платформу Erlang / OTP и все ее приложения: sudo apt-get install esl-erlang
    • Установить эликсир: sudo apt-get install elixir

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

1
2
3
4
5
6
$ iex
Interactive Elixir — press Ctrl+C to exit (type h() ENTER for help)
iex> c «my_file.ex» # Compiles a file
iex> t Enum # Prints types defined in the module Enum
iex> h IEx.pry # Prints the documentation for IEx pry functionality
iex> i «Hello, World» # Prints information about the given data type

Пользователям Windows потребуется запустить iex.bat для доступа к интерактивной консоли.

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

Давайте сделаем несколько основных выражений:

1
2
3
4
5
6
ie> 2 + 2
4
ie> round(3.58)
4
iex> «hello» <> » world»
«hello world»

Когда мы запускаем скрипт, мы делаем это из терминала оболочки следующим образом:

1
$ elixir scriptName.exs

Для вывода из скрипта на терминал нам нужно использовать следующий класс IO :

1
IO.puts «Hello world from Elixir»

Для Elixir доступны модули, так что разработчики могут расширять язык разными способами.

Вот пример использования тестовой платформы Elixir ExUnit :

1
2
3
4
5
6
7
defmodule MathTest do
  use ExUnit.Case, async: true
 
  test «can add two numbers» do
    assert 1 + 1 == 2
  end
end

Вы можете запустить тесты параллельно, установив async: true . В этой настройке Elixir использует максимально возможное количество процессорных ядер.

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

Elixir — это мощный и универсальный язык, используемый в настоящее время некоторыми из крупнейших приложений в мире. Быстрое время компиляции, легкие потоки, расширяемость с помощью модулей DSL и отказоустойчивость, предоставляемые Supervisor делают его идеальным для любой серьезной команды веб-разработчиков. Ясно, что когда Эликсир полностью используется, можно добиться огромных успехов.

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