Jump to content

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

(Перенаправлено с Reia (язык программирования) )
Эликсир
язык программирования эликсир
Эликсир
Парадигмы мультипарадигмальность : функциональная , параллельная , распределенная , процессно-ориентированная.
Разработано Хосе Валим
Впервые появился 2012 год ; 12 лет назад ( 2012 )
Стабильная версия
1.17.1 [1]  Отредактируйте это в Викиданных / 18 июня 2024 г .; 3 дня назад ( 18 июня 2024 г. )
Дисциплина набора текста динамичный , сильный
Платформа Эрланг
Лицензия Лицензия Апач 2.0 [2]
Расширения имен файлов .ex, .exs
Веб-сайт эликсир-ланг .org
Под влиянием
Кложур , Эрланг , Руби
Под влиянием
Блеск , ЛФЭ

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

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

История [ править ]

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

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

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

Управление версиями [ править ]

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

Особенности [ править ]

Примеры [ править ]

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

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

iex> IO.puts("Hello World!")
Hello World!

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

iex> "Elixir" |> String.graphemes() |> Enum.frequencies()
%{"E" => 1, "i" => 2, "l" => 1, "r" => 1, "x" => 1}

iex> %{values: 1..5} |> Map.get(:values) |> Enum.map(& &1 * 2)
[2, 4, 6, 8, 10]

iex> |> Enum.sum()
30

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

iex> %{left: x} = %{left: 5, right: 8}
iex> x
5

iex> {:ok, [_ | rest]} = {:ok, [1, 2, 3]}
iex> rest
[2, 3]

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

iex> case File.read("path/to/file") do
iex>   {:ok, contents} -> IO.puts("found file: #{contents}")
iex>   {:error, reason} -> IO.puts("missing file: #{reason}")
iex> end

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

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

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

1..5
|> Task.async_stream(&File.read!("#{&1}.txt"))
|> Stream.filter(fn {:ok, contents} -> String.trim(contents) != "" end)
|> Enum.join("\n")

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

def fib(n) when n in [0, 1], do: n
def fib(n), do: fib(n-2) + fib(n-1)

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

schema "weather" do
  field :city     # Defaults to type :string
  field :temp_lo, :integer
  field :temp_hi, :integer
  field :prcp,    :float, default: 0.0
end

Weather |> where(city: "Kraków") |> order_by(:temp_lo) |> limit(10) |> Repo.all

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

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

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

task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

[ нужна ссылка ]

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

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

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

Дальнейшее чтение [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b02e5d34c3dab682012c91f09754fe71__1715021700
URL1:https://arc.ask3.ru/arc/aa/b0/71/b02e5d34c3dab682012c91f09754fe71.html
Заголовок, (Title) документа по адресу, URL1:
Elixir (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)