Эликсир (язык программирования) - Википедия - Elixir (programming language)
Эта статья содержит контент, который написан как Реклама.Июнь 2020 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Парадигма | мультипарадигма: функциональный, одновременный, распределен, ориентированный на процесс |
---|---|
Впервые появился | 2011 |
Стабильный выпуск | 1.11.2 / 3 ноября 2020[1] |
Печатная дисциплина | динамичный, сильный, утка |
Платформа | Erlang |
Лицензия | Лицензия Apache 2.0[2] |
Расширения имени файла | .ex, .exs |
Интернет сайт | эликсир-ланг |
Под влиянием | |
Clojure, Erlang, Рубин | |
Под влиянием | |
LFE |
Эликсир это функциональный, одновременный, общее назначение язык программирования что работает на ЛУЧ виртуальная машина используется для реализации Erlang язык программирования.[3] Elixir строится поверх Erlang и использует те же абстракции для построения распределен, отказоустойчивой Приложения. Эликсир также предоставляет производительные инструменты и расширяемый дизайн. Последний поддерживается во время компиляции метапрограммирование с макросы и полиморфизм по протоколам.[4]
Эликсир используют такие компании, как PagerDuty,[5] Раздор,[6] Brex,[7] Е-МетроТел,[8] Pinterest,[9] Moz,[10] Отчет об отбеливателе,[11] Схема,[12] Обратный,[13] Диввы,[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]
Управление версиями
Эликсир в основном[27] следует семантическое управление версиями и имеет только 1 мажорную версию без каких-либо планов на секунду. Каждая из дополнительных версий поддерживает определенный диапазон Erlang /OTP версии.[28]
Функции
- компилирует к байт-код для Erlang Виртуальная машина (BEAM)[29]
- Все это выражение[29]
- Функции Erlang можно вызывать из Elixir, и наоборот, без время выполнения влияние из-за компиляции в байт-код Erlang
- Мета-программирование, позволяющее напрямую управлять абстрактное синтаксическое дерево (AST)[29]
- Полиморфизм через механизм, называемый протоколами. Как в Clojure протоколы обеспечивают динамическая отправка механизм. Однако это не следует путать с множественная отправка Так как протоколы Elixir рассылаются по единому типу.
- Поддержка документации через Python-подобные строки документации в Markdown язык форматирования[29]
- Параллельное программирование без общего доступа через передачу сообщений (Актерская модель )[30]
- Акцент на рекурсия и функции высшего порядка вместо побочный эффект -основан зацикливание
- Легкий параллелизм с использованием механизмов Erlang[29]
- Железнодорожное ориентированное программирование через
с
строить - Встроенный инструментарий для управления зависимостями, компиляции кода, запуска тестов, форматирования кода, удаленной отладки и т. д.
- Ленивый и асинхронные коллекции с ручьями
- Сопоставление с образцом[29] продвигать напористый код[31]
- Unicode поддержка и UTF-8 струны
Примеры
Следующие примеры можно запустить в iex
оболочку или сохраните в файле и запустите из командной строки, набрав эликсир <filename>
.
Классический Привет, мир пример:
iex>IO.ставит("Привет, мир!")Привет, мир!
Понимания
iex>за п <- [1,2,3,4,5], rem(п, 2) == 1, делать: п*п[1, 9, 25]
Сопоставление с образцом (деструктуризация)
iex>[1, а] = [1, 2]iex>а2iex>{:Ok, [Привет: а]} = {:Ok, [Привет: "Мир"]}iex>а"Мир"
Сопоставление с образцом (несколько предложений)
iex>дело Файл.читать("путь / к / файлу") делатьiex> {:Ok, содержание} -> IO.ставит("найденный файл: #{содержание}")iex> {:ошибка, причина} -> IO.ставит("отсутствующий файл: #{причина}")iex>конец
Оператор трубы
iex>"1" |> Нить.to_integer() |> Ядро.*(2)2
Модули
defmodule Весело делать def выдумать(0), делать: 0 def выдумать(1), делать: 1 def выдумать(п), делать: выдумать(п-2) + выдумать(п-1) конец
Последовательное порождение тысячи процессов
за число <- 1..1000, делать: порождать fn -> IO.ставит("#{число * 2}") конец
Асинхронное выполнение задачи
задача = Задача.асинхронный fn -> Perform_complex_action() конецother_time_consuming_action()Задача.Ждите задача
Примечательные проекты Elixir
- Смешивание - это инструмент автоматизации сборки, который предоставляет задачи для создания, компиляции и тестирования проектов на Elixir, управления его зависимостями и многое другое.[32]
- Феникс - это фреймворк веб-разработки, написанный на Elixir, который реализует серверный контроллер представления модели (MVC ) шаблон.[33]
- Нервы представляет собой платформу, фреймворк и инструментальную среду для создания встроенных систем и устройств.[17][34]
- Ecto - оболочка базы данных и генератор запросов для Elixir.[35]
Смотрите также
Рекомендации
- ^ «Релизы - эликсир-ланг / эликсир». Получено 3 ноября 2020 - через GitHub.
- ^ "elixir / LICENSE at master · elixir-lang / elixir · GitHub". GitHub.
- ^ «Самые популярные языки программирования 2018 года - блог Elite Infoworld». 2018-03-30. Получено 2018-05-08.
- ^ "Эликсир". Хосе Валим. Получено 2013-02-17.
- ^ "Эликсир в PagerDuty". PagerDuty. 2018-06-14. Получено 2019-04-21.
- ^ Вишневский, Станислав (6 июля, 2017). «Как Discord масштабировал Эликсир до 5 000 000 одновременных пользователей». Получено 2019-04-21.
- ^ Валим, Хосе (23.06.2020). «Эликсир в финтехе с Brex». elixir-lang.github.com. Получено 2020-11-14.
- ^ «Что нового в версии 6.0 | Документация». www.emetrotel.com. Получено 2019-04-21.
- ^ «Представляем новые инструменты с открытым исходным кодом для сообщества Elixir». Получено 2016-08-01.
- ^ «Открытие новых возможностей в Moz Pro с архитектурой без баз данных». Получено 2016-08-01.
- ^ "Эликсир". Отчет об отбеливателе. Получено 2019-05-22.
- ^ Люсия, Дэйв (24 сентября 2018 г.). «Два года Elixir в The Outline». Получено 2019-05-22.
- ^ «Какие большие проекты используют Эликсир?». Получено 2016-08-01.
- ^ «Почему Divvy использует Elixir вместо более популярных языков программирования». Получено 2019-04-30.
- ^ Операционная система и все сопутствующее программное обеспечение, которое работает на Raspberry Pi от FarmBot: FarmBot / farmbot_os, FarmBot, 28.10.2019, получено 2019-10-29
- ^ «Эликсир в производственном интервью: Гарт Хитченс». Получено 2016-08-01.
- ^ а б "Nerves - Создавайте и развертывайте надежное встроенное программное обеспечение в Elixir". Получено 2016-08-01.
- ^ «ЭликсирКонф». Получено 2018-07-11.
- ^ «ЭликсирКонф». Получено 2018-07-11.
- ^ "Эрланг и Эликсир Фест". Получено 2019-02-18.
- ^ «Эликсир ЛДН». Получено 2018-07-12.
- ^ "EMPEX - Конференция Empire State Elixir". Получено 2018-07-12.
- ^ Эликсир - современный подход к программированию для виртуальной машины Erlang. Получено 2013-02-17.
- ^ Хосе Валим - основной доклад ElixirConf EU 2017. Получено 2017-07-14.
- ^ "Behinde the code: The One Who Created Elixir". Получено 2019-11-25.
- ^ «Эликсир: мини-документальный фильм». Получено 2018-07-12.
- ^ «Императивные задания нарушают работу приложения в обновлении 1.7. · Проблема № 8076 · elixir-lang / elixir». GitHub. Получено 2020-02-10.
- ^ Эликсир - это динамический функциональный язык, разработанный для создания масштабируемых и поддерживаемых приложений: elixir-lang / elixir, Эликсир, 2019-04-21, получено 2019-04-21
- ^ а б c d е ж "Эликсир". Получено 2014-09-07.
- ^ Лодер, Вольфганг (12 мая 2015 г.). Эрланг и Эликсир для императивных программистов. «Глава 16: Концепции структурирования кода», заголовок раздела «Модель действующего лица»: Leanpub. Получено 7 июля 2015.CS1 maint: location (связь)
- ^ «Написание напористого кода с помощью Эликсира». Получено 2018-07-05.
- ^ "Смешивание". Получено 2019-04-18.
- ^ "Обзор". Получено 2019-04-18.
- ^ "Начиная". Получено 2019-04-18.
- ^ "Начиная". Получено 2019-04-16.