Из Википедии, бесплатной энциклопедии
  (Перенаправлено с Reia (язык программирования) )
Перейти к навигации Перейти к поиску

Эликсир является функциональным , одновременно , универсальным языком программирования , который работает на ЛУЧЕВОЙ виртуальной машине , используемая для реализации Эрланга языка программирования. [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]

См. Также [ править ]

  • Параллельные вычисления
  • Распределенных вычислений

Ссылки [ править ]

  1. ^ "Релизы - эликсир-язык / эликсир" . Проверено 16 марта 2021 года - через GitHub .
  2. ^ "Эликсир / ЛИЦЕНЗИЯ на master · elixir-lang / elixir · GitHub" . GitHub .
  3. ^ «Самые популярные языки программирования 2018 - блог Elite Infoworld» . 2018-03-30 . Проверено 8 мая 2018 .
  4. ^ "Эликсир" . Хосе Валим . Проверено 17 февраля 2013 .
  5. ^ "Эликсир в PagerDuty" . PagerDuty . 2018-06-14 . Проверено 21 апреля 2019 .
  6. Вишневский, Станислав (6 июля, 2017). «Как Discord масштабировал Эликсир до 5 000 000 одновременных пользователей» . Проверено 21 апреля 2019 .
  7. ^ Валим, Хосе (2020-06-23). «Эликсир в финтехе с Brex» . elixir-lang.github.com . Проверено 14 ноября 2020 .
  8. ^ «Что нового в версии 6.0 | Документация» . www.emetrotel.com . Проверено 21 апреля 2019 .
  9. ^ «Представляем новые инструменты с открытым исходным кодом для сообщества Elixir» . Проверено 1 августа 2016 .
  10. ^ «Открытие новых возможностей в Moz Pro с архитектурой без баз данных» . Проверено 1 августа 2016 .
  11. ^ "Эликсир" . Отчет об отбеливателе . Проверено 22 мая 2019 .
  12. Люсия, Дэйв (24 сентября 2018 г.). «Два года Elixir в The Outline» . Проверено 22 мая 2019 .
  13. ^ "Какие большие проекты используют Эликсир?" . Проверено 1 августа 2016 .
  14. ^ «Почему Divvy использует Elixir вместо более популярных языков программирования» . Проверено 30 апреля 2019 .
  15. ^ Операционная система и все связанное программное обеспечение, которое работает на Raspberry Pi от FarmBot: FarmBot / farmbot_os , FarmBot, 2019-10-28 , получено 2019-10-29
  16. ^ "Эликсир в производственном интервью: Гарт Хитченс" . Проверено 1 августа 2016 .
  17. ^ a b «Нервы - Создайте и разверните надежное встроенное программное обеспечение в Elixir» . Проверено 1 августа 2016 .
  18. ^ "ElixirConf" . Проверено 11 июля 2018 .
  19. ^ "ElixirConf" . Проверено 11 июля 2018 .
  20. ^ "Erlang & Elixir Fest" . Проверено 18 февраля 2019 .
  21. ^ "Эликсир ЛДН" . Проверено 12 июля 2018 .
  22. ^ "EMPEX - Конференция по эликсиру Empire State" . Проверено 12 июля 2018 .
  23. ^ Elixir - современный подход к программированию для виртуальной машины Erlang . Проверено 17 февраля 2013 .
  24. ^ Хосе Valim - ElixirConf ЕС 2017 Keynote . Проверено 14 июля 2017 .
  25. ^ "Behinde the code: The One Who Created Elixir" . Проверено 25 ноября 2019 .
  26. ^ "Эликсир: мини-документальный фильм" . Проверено 12 июля 2018 .
  27. ^ «Императивные задания нарушают работу приложения в обновлении 1.7. · Проблема № 8076 · elixir-lang / elixir» . GitHub . Проверено 10 февраля 2020 .
  28. ^ Elixir - это динамический функциональный язык, разработанный для создания масштабируемых и поддерживаемых приложений: elixir-lang / elixir , Elixir, 21 апреля 2019 г. , получено 21 апреля 2019 г.
  29. ^ a b c d e f "Эликсир" . Проверено 7 сентября 2014 .
  30. Лодер, Вольфганг (12 мая 2015 г.). Эрланг и Эликсир для императивных программистов . «Глава 16: Концепции структурирования кода», заголовок раздела «Модель действующего лица»: Leanpub . Проверено 7 июля 2015 года .CS1 maint: location (link)
  31. ^ Wlaschin, Скотт (май 2013). «Железнодорожное программирование» . F # для развлечения и прибыли . Архивировано 30 января 2021 года . Проверено 28 февраля 2021 года .
  32. ^ «Написание напористого кода с помощью Эликсира» . Проверено 5 июля 2018 .
  33. ^ "Микс" . Проверено 18 апреля 2019 .
  34. ^ «Обзор» . Проверено 18 апреля 2019 .
  35. ^ "Начало работы" . Проверено 18 апреля 2019 .
  36. ^ "Начало работы" . Проверено 16 апреля 2019 .

Внешние ссылки [ править ]

  • Веб-сайт языка Эликсир