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 на свой компьютер, прежде чем мы продолжим:
Mac OS X
- Homebrew
- Обновите ваш homebrew до последней версии:
brew update
- Запустить:
brew install elixir
- Обновите ваш homebrew до последней версии:
- MacPorts
- Запустить:
sudo port install elixir
- Запустить:
Unix (и Unix-как)
- Arch Linux (репозиторий сообщества)
- Run:
pacman -S elixir
- Run:
- openSUSE (и SLES 11 SP3 +)
- Добавить репозиторий Erlang devel:
zypper ar -f http://download.opensuse.org/repositories/devel:/languages:/erlang/openSUSE_Factory/ erlang
- Run:
zypper in elixir
- Добавить репозиторий Erlang devel:
- 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
- Добавьте репозиторий Erlang Solutions:
Windows
- Веб-установщик
- Скачать установщик
- Нажмите Далее, Далее, …, Готово
- шоколадный
-
cinst 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 и узнаем, как писать больше кода, и, наконец, приступим к его компиляции!