Эта статья содержит контент, который написан как реклама . ( Июнь 2020 г. ) ( Узнайте, как и когда удалить этот шаблон сообщения ) |
Парадигма | мультипарадигма : функциональная , параллельная , распределенная , ориентированная на процессы |
---|---|
Впервые появился | 2011 |
Стабильный выпуск | 1.11.4 / 16 марта 2021 г . [1] |
Печатная дисциплина | динамичный , сильный , утка |
Платформа | Erlang |
Лицензия | Лицензия Apache 2.0 [2] |
Расширения имени файла | .ex, .exs |
Веб-сайт | elixir-lang |
Под влиянием | |
Clojure , Erlang , Ruby | |
Под влиянием | |
LFE |
Эликсир является функциональным , одновременно , универсальным языком программирования , который работает на ЛУЧЕВОЙ виртуальной машине , используемая для реализации Эрланга языка программирования. [3] Elixir строит на вершине Erlang и разделяют те же абстракции для построения распределенных , отказоустойчивые приложения. Elixir также предоставляет производительные инструменты и расширяемый дизайн. Последнее поддерживается метапрограммированием во время компиляции с макросами и полиморфизмом через протоколы. [4]
Elixir используют такие компании, как PagerDuty , [5] Discord , [6] Brex , [7] E-MetroTel, [8] Pinterest , [9] Moz, [10] Bleacher Report , [11] The Outline , [12] ] Inverse , [13] Divvy, [14] FarmBot [15] и для создания встроенных систем . [16] [17] Сообщество ежегодно организует мероприятия в США, [18] Европе [19] и Японии [20]а также небольшие местные мероприятия и конференции. [21] [22]
История [ править ]
Хосе Валим - создатель языка программирования Elixir, исследовательского и опытно-конструкторского проекта Plataformatec. Его цели состояли в том, чтобы обеспечить более высокую расширяемость и производительность виртуальной машины Erlang при сохранении совместимости с экосистемой Erlang. [23] [24]
Хосе Валим стремился создать язык программирования для крупномасштабных сайтов и приложений. Будучи разработчиком Ruby, он использовал функции Ruby, Erlang и Clojure для разработки языка с высокой степенью параллелизма и малой задержкой. Эликсир был разработан для обработки больших объемов данных. Его скорость и возможности распространяют Elixir в телекоммуникациях, электронной коммерции и финансах. [25]
12 июля 2018 года Honeypot выпустила мини-документальный фильм об Эликсире. [26]
Управление версиями [ править ]
Elixir в основном [27] следует семантическому управлению версиями и имеет только одну основную версию без каких-либо планов на секунду. Каждая из дополнительных версий поддерживает определенный диапазон версий Erlang / OTP . [28]
Особенности [ править ]
- Компилируется в байт-код для виртуальной машины Erlang (BEAM) [29]
- Все есть выражение [29]
- Функции Erlang можно вызывать из Elixir и наоборот, без влияния на время выполнения , благодаря компиляции в байт-код Erlang.
- Мета-программирование, позволяющее напрямую управлять абстрактным синтаксическим деревом (AST) [29]
- Полиморфизм с помощью механизма, называемого протоколами. Как и в Clojure , протоколы предоставляют механизм динамической отправки . Однако это не следует путать с множественной отправкой, так как протоколы Elixir отправляются по одному типу.
- Поддержка документации через Python-подобные строки документации на языке форматирования Markdown [29]
- Ничего не разделяет параллельное программирование через передачу сообщений ( модель акторов ) [30]
- Акцент на рекурсию и высшие порядки функций вместо побочного эффекта основанного зацикливание
- Легкий параллелизм с использованием механизмов Erlang [29]
- Железнодорожно-ориентированное программирование через
with
конструкт [31] - Встроенные инструменты для управления зависимостями, компиляции кода, запуска тестов, форматирования кода, удаленной отладки и многого другого.
- Ленивые и асинхронные коллекции с потоками
- Сопоставление с образцом [29] для продвижения напористого кода [32]
- Unicode поддержка и UTF-8 строк
Примеры [ править ]
Следующие примеры можно запустить в iex
оболочке или сохранить в файле и запустить из командной строки, набрав .elixir <filename>
Классический пример Hello world :
iex> IO . put ( "Hello World!" ) Hello World!
Понимания
iex> для n <- [ 1 , 2 , 3 , 4 , 5 ], rem ( n , 2 ) == 1 , do : n * n [1, 9, 25]
Сопоставление с образцом (деструктуризация)
iex> [ 1 , a ] = [ 1 , 2 ] iex> a 2IEX> { : хорошо , [ привет : ]} = { : хорошо , [ привет : "мир" ]} IEX> "мир"
Сопоставление с шаблоном (несколько предложений)
iex> case File . read ( "путь / к / файлу" ) do iex> { : ok , contents } -> IO . путы ( "найден файл: # { содержание } " ) IEX> { : ошибка , причина } -> IO . put ( "отсутствующий файл: # { причина } " ) iex> конец
Оператор трубы
iex> "1" |> Строка . to_integer () |> Ядро . * ( 2 ) 2
Модули
defmodule Fun do def fib ( 0 ), do : 0 def fib ( 1 ), do : 1 def fib ( n ), do : fib ( n - 2 ) + fib ( n - 1 ) конец
Последовательное порождение тысячи процессов
для NUM <- 1 .. 1000 , сделать : порождение п -> IO . кладет ( " # { число * 2 } " ) конец
Асинхронное выполнение задачи
task = Задача . async fn -> perform_complex_action () end other_time_consuming_action () Задача . ждать задачи
Примечательные проекты Эликсира [ править ]
- Mix - это инструмент автоматизации сборки, который предоставляет задачи для создания, компиляции и тестирования проектов Elixir, управления его зависимостями и многого другого. [33]
- Phoenix - это среда веб-разработки, написанная на Elixir, которая реализует шаблон контроллера представления модели ( MVC ) на стороне сервера . [34]
- Nerves - это платформа, фреймворк и инструментальная среда для создания встраиваемых систем и устройств. [17] [35]
- Ecto - это оболочка базы данных и генератор запросов для Elixir. [36]
См. Также [ править ]
- Параллельные вычисления
- Распределенных вычислений
Ссылки [ править ]
- ^ "Релизы - эликсир-язык / эликсир" . Проверено 16 марта 2021 года - через GitHub .
- ^ "Эликсир / ЛИЦЕНЗИЯ на master · elixir-lang / elixir · GitHub" . GitHub .
- ^ «Самые популярные языки программирования 2018 - блог Elite Infoworld» . 2018-03-30 . Проверено 8 мая 2018 .
- ^ "Эликсир" . Хосе Валим . Проверено 17 февраля 2013 .
- ^ "Эликсир в PagerDuty" . PagerDuty . 2018-06-14 . Проверено 21 апреля 2019 .
- ↑ Вишневский, Станислав (6 июля, 2017). «Как Discord масштабировал Эликсир до 5 000 000 одновременных пользователей» . Проверено 21 апреля 2019 .
- ^ Валим, Хосе (2020-06-23). «Эликсир в финтехе с Brex» . elixir-lang.github.com . Проверено 14 ноября 2020 .
- ^ «Что нового в версии 6.0 | Документация» . www.emetrotel.com . Проверено 21 апреля 2019 .
- ^ «Представляем новые инструменты с открытым исходным кодом для сообщества Elixir» . Проверено 1 августа 2016 .
- ^ «Открытие новых возможностей в Moz Pro с архитектурой без баз данных» . Проверено 1 августа 2016 .
- ^ "Эликсир" . Отчет об отбеливателе . Проверено 22 мая 2019 .
- ↑ Люсия, Дэйв (24 сентября 2018 г.). «Два года Elixir в The Outline» . Проверено 22 мая 2019 .
- ^ "Какие большие проекты используют Эликсир?" . Проверено 1 августа 2016 .
- ^ «Почему Divvy использует Elixir вместо более популярных языков программирования» . Проверено 30 апреля 2019 .
- ^ Операционная система и все связанное программное обеспечение, которое работает на Raspberry Pi от FarmBot: FarmBot / farmbot_os , FarmBot, 2019-10-28 , получено 2019-10-29
- ^ "Эликсир в производственном интервью: Гарт Хитченс" . Проверено 1 августа 2016 .
- ^ a b «Нервы - Создайте и разверните надежное встроенное программное обеспечение в Elixir» . Проверено 1 августа 2016 .
- ^ "ElixirConf" . Проверено 11 июля 2018 .
- ^ "ElixirConf" . Проверено 11 июля 2018 .
- ^ "Erlang & Elixir Fest" . Проверено 18 февраля 2019 .
- ^ "Эликсир ЛДН" . Проверено 12 июля 2018 .
- ^ "EMPEX - Конференция по эликсиру Empire State" . Проверено 12 июля 2018 .
- ^ Elixir - современный подход к программированию для виртуальной машины Erlang . Проверено 17 февраля 2013 .
- ^ Хосе Valim - ElixirConf ЕС 2017 Keynote . Проверено 14 июля 2017 .
- ^ "Behinde the code: The One Who Created Elixir" . Проверено 25 ноября 2019 .
- ^ "Эликсир: мини-документальный фильм" . Проверено 12 июля 2018 .
- ^ «Императивные задания нарушают работу приложения в обновлении 1.7. · Проблема № 8076 · elixir-lang / elixir» . GitHub . Проверено 10 февраля 2020 .
- ^ Elixir - это динамический функциональный язык, разработанный для создания масштабируемых и поддерживаемых приложений: elixir-lang / elixir , Elixir, 21 апреля 2019 г. , получено 21 апреля 2019 г.
- ^ a b c d e f "Эликсир" . Проверено 7 сентября 2014 .
- ↑ Лодер, Вольфганг (12 мая 2015 г.). Эрланг и Эликсир для императивных программистов . «Глава 16: Концепции структурирования кода», заголовок раздела «Модель действующего лица»: Leanpub . Проверено 7 июля 2015 года .CS1 maint: location (link)
- ^ Wlaschin, Скотт (май 2013). «Железнодорожное программирование» . F # для развлечения и прибыли . Архивировано 30 января 2021 года . Проверено 28 февраля 2021 года .
- ^ «Написание напористого кода с помощью Эликсира» . Проверено 5 июля 2018 .
- ^ "Микс" . Проверено 18 апреля 2019 .
- ^ «Обзор» . Проверено 18 апреля 2019 .
- ^ "Начало работы" . Проверено 18 апреля 2019 .
- ^ "Начало работы" . Проверено 16 апреля 2019 .
Внешние ссылки [ править ]
- Веб-сайт языка Эликсир