Эликсир (язык программирования)

Язык программирования, работающий на виртуальной машине Erlang
Эликсир
язык программирования эликсир
Эликсир
Парадигмымультипарадигмальный : функциональный , параллельный , распределенный , ориентированный на процесс
РазработаноХосе Валим
Впервые появился2012 ; 12 лет назад ( 2012 )
Стабильный релиз
1.17.3 [1]  / 18 сентября 2024 г. ; 40 дней назад ( 18 сентября 2024 )
Дисциплина набора текстадинамичный , сильный
ПлатформаЭрланг
ЛицензияЛицензия Apache 2.0 [2]
Расширения имени файла.ex, .exs
Веб-сайтelixir-lang.org
Под влиянием
Clojure , Erlang , Ruby
Под влиянием
Проблеск , LFE

Elixir — это функциональный , параллельный , высокоуровневый язык программирования общего назначения , работающий на виртуальной машине BEAM , которая также используется для реализации языка программирования Erlang . [3] Elixir построен на основе Erlang и использует те же абстракции для построения распределенных отказоустойчивых приложений. Elixir также предоставляет инструментарий и расширяемую конструкцию. Последнее поддерживается метапрограммированием во время компиляции с макросами и полиморфизмом через протоколы. [ 4]

Сообщество организует ежегодные мероприятия в Соединенных Штатах, [5] Европе, [6] и Японии, [7] , а также небольшие местные мероприятия и конференции. [8] [9]

История

Хосе Валим создал язык программирования Elixir как проект исследований и разработок в Plataformatec. Его целью было обеспечить более высокую расширяемость и производительность в Erlang VM, сохраняя при этом совместимость с экосистемой Erlang. [10] [11]

Elixir нацелен на крупномасштабные сайты и приложения. Он использует возможности Ruby , Erlang и Clojure для разработки языка с высокой степенью параллелизма и низкой задержкой. Он был разработан для обработки больших объемов данных. Elixir также используется в телекоммуникациях, электронной коммерции и финансах. [12]

В 2021 году было объявлено о проекте Numerical Elixir, цель которого — привнести в экосистему Elixir машинное обучение, нейронные сети, компиляцию на GPU, обработку данных и вычислительные блокноты. [13]

Версионирование

Каждая из второстепенных версий поддерживает определенный диапазон версий Erlang/ OTP . [14] Текущая стабильная версия релиза — 1.17.3 [1] .

Функции

Примеры

Следующие примеры можно запустить в iex оболочке или сохранить в файле и запустить из командной строки , введя .elixir <filename>

Классический пример Hello world :

iex> IO . puts ( "Привет, мир!" ) Привет , мир!

Оператор трубы:

iex> "Эликсир" |> Строка . графемы () |> Перечисление . частоты () %{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}    iex> %{ значения : 1 .. 5 } |> Карта . получить ( : значения ) |> Перечисление . карта ( & &1 * 2 ) [2, 4, 6, 8, 10]        iex> |> Перечисление . сумма () 30 

Сопоставление с образцом (также известное как деструктуризация):

iex> %{ влево : x } = %{ влево : 5 , вправо : 8 } iex> x 5      iex> { :ок , [ _ | отдых ]} = { :ok , [ 1 , 2 , 3 ]} iex> отдых [2, 3]        

Сопоставление шаблонов с несколькими предложениями:

iex> case File.read ( "путь/к/файлу" ) do iex > { :ok , содержимое } -> IO.puts ( " найден файл: # { содержимое } " ) iex > { : error , причина } - > IO.puts ( "отсутствует файл: #{ причина } " ) iex> end          

Понимание списка :

iex> для n <- 1 .. 5 , rem ( n , 2 ) == 1 , do : n * n [1, 9, 25]         

Асинхронное чтение файлов с помощью потоков:

1 .. 5 |> Задача . async_stream ( & Файл . read! ( " # { &1 } . txt " )) |> Поток . filter ( fn { : ok , содержимое } -> Строка . trim ( содержимое ) != "" конец ) |> Перечисление . join ( " \ n " )          

Многофункциональные корпуса с защитой :

def fib ( n ) когда n в [ 0 , 1 ], do : n def fib ( n ), do : fib ( n - 2 ) + fib ( n - 1 )             

Реляционные базы данных с библиотекой Ecto:

схема "погода" do поле :city # По умолчанию тип :string поле :temp_lo , :integer поле :temp_hi , :integer поле :prcp , :float , по умолчанию : 0.0 конец                Погода |> где ( город : "Краков" ) |> order_by ( :temp_lo ) |> limit ( 10 ) |> Repo . all         

Последовательное порождение тысячи процессов:

для num <- 1 .. 1000 , do : spawn fn -> IO . puts ( " #{ num * 2 } " ) end           

Асинхронное выполнение задачи:

задача = Задача . асинхронная функция -> выполнить_сложное_действие () конец другое_время_потребляющее_действие () Задача . ожидание задачи       

[ необходима ссылка ]

Смотрите также

Ссылки

  1. ^ ab "Release 1.17.3". 18 сентября 2024 г. Получено 21 сентября 2024 г.
  2. ^ "elixir/ЛИЦЕНЗИЯ на master · elixir-lang/elixir · GitHub". GitHub .
  3. ^ "Самые популярные языки программирования 2018 года - блог Elite Infoworld". 2018-03-30. Архивировано из оригинала 2018-05-09 . Получено 2018-05-08 .
  4. ^ «Эликсир». Хосе Валим . Проверено 17 февраля 2013 г.
  5. ^ "ElixirConf" . Получено 2018-07-11 .
  6. ^ "ElixirConf" . Получено 2018-07-11 .
  7. ^ "Erlang & Elixir Fest" . Получено 2019-02-18 .
  8. ^ "Эликсир LDN" . Получено 2018-07-12 .
  9. ^ "EMPEX - Empire State Elixir Conference" . Получено 2018-07-12 .
  10. ^ Elixir - Современный подход к программированию для Erlang VM . Получено 2013-02-17 .
  11. ^ Хосе Валим - Основной доклад ElixirConf EU 2017. Архивировано из оригинала 2021-11-17 . Получено 2017-07-14 .
  12. ^ "За кодом: Тот, Кто Создал Эликсир" . Получено 25.11.2019 .
  13. ^ "Числовой эликсир (Nx)" . Получено 2024-05-06 .
  14. ^ Elixir — это динамичный, функциональный язык, предназначенный для создания масштабируемых и поддерживаемых приложений: elixir-lang/elixir, Elixir, 2019-04-21 , получено 2019-04-21
  15. ^ abcdef "Эликсир" . Получено 2014-09-07 .
  16. ^ "Написание утвердительного кода с помощью Elixir". 24 сентября 2014 г. Получено 05.07.2018 г.
  17. ^ Лодер, Вольфганг (12 мая 2015 г.). Erlang и Elixir для императивных программистов. «Глава 16: Концепции структурирования кода», заголовок раздела «Модель актора»: Leanpub . Получено 7 июля 2015 г.{{cite book}}: CS1 maint: местоположение ( ссылка )
  18. ^ Wlaschin, Scott (май 2013 г.). «Железнодорожное программирование». F# для развлечения и прибыли . Архивировано из оригинала 30 января 2021 г. Получено 28 февраля 2021 г.

Дальнейшее чтение

Взято с "https://en.wikipedia.org/w/index.php?title=Elixir_(язык_программирования)&oldid=1222605666#Reia"