Elixir(プログラミング言語)

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
エリクサー
Elixirプログラミング言語
パラダイムマルチパラダイム機能的並行的、分散的、プロセス指向
初登場2012 ; 10年前 (2012
安定リリース
1.13.0 [1] ウィキデータでこれを編集する / 2021年12月3日; 2ヶ月前 (2021年12月3日
規律の入力ダイナミックストロングダック
プラットホームErlang
ライセンスApacheライセンス2.0 [2]
ファイル名拡張子.ex、.exs
Webサイトelixir-lang .org
に影響を受けた
ClojureErlangRuby
影響を受ける
LFE

Elixirは、 Erlangプログラミング言語の実装にも使用されるBEAM仮想マシン上で実行される、機能的並行し汎用 プログラミング言語です。[3] ElixirはErlangの上に構築され、分散型のフォールトトレラントアプリケーションを構築するための同じ抽象化を共有します。Elixirは、生産的なツールと拡張可能な設計も提供します。後者は、プロトコルを介したマクロポリモーフィズムを使用したコンパイル時のメタプログラミングによってサポートされます。[4]

Elixirは、Ramp、[5] PagerDuty[6] Discord[7] Brex[8] E-MetroTel、[9] Pinterest[10] Moz、[11] Bleacher Report[12] などの企業で使用されています。概要[13] [14] Divvy、[15] FarmBot [16]および組み込みシステムの構築用。[17] [18]コミュニティは、米国、[19]ヨーロッパ[20]、および日本で毎年イベントを開催しています。[21]だけでなく、マイナーな地元のイベントや会議。[22] [23]

歴史

JoséValimは、Plataformatecで作成された研究開発プロジェクトであるElixirプログラミング言語の作成者です。彼の目標は、Erlangのエコシステムとの互換性を維持しながら、ErlangVMの拡張性と生産性を高めることでした。[24] [25]

JoséValimは、大規模なサイトやアプリ向けのプログラミング言語の作成を目指しました。彼はRuby開発者であり、Ruby、Erlang、Clojureの機能を使用して、同時実行性が高く、待ち時間が短い言語を開発しました。Elixirは、大量のデータを処理するように設計されています。その速度と機能により、Elixirは通信、eコマース、および金融業界に広がりました。[26]

2018年7月12日、HoneypotはElixirに関するミニドキュメンタリーをリリースしました。[27]

バージョン管理

Elixirは主に[28]セマンティックバージョン管理に従い、メジャーバージョンは1つしかなく、1秒間の計画はありません。各マイナーバージョンは、特定の範囲のErlang / OTPバージョンをサポートしています。[29]

機能

次の例は、iexシェルで実行することも、ファイルに保存して、コマンドラインから「。」と入力して実行することもできますelixir <filename>

クラシックHelloWorldの例:

iex> IO puts "Hello World!" 
Hello World!

理解

iex > for  n  <  - [ 1、2、3、4、5 ] rem n 2 == 1 do n * n [ 1、9、25 ] _ _ _      

パターンマッチング(破壊)

iex > [ 1  a ]  =  [ 1、2 ] iex  > a 2



iex> { :ok  [ hello  a ]}  =  { :ok  [ hello  "world" ]} 
iex> a 
"world"

パターンマッチング(複数の句)

iex> case ファイルread "path / to / file"  do 
iex>   { :ok  contents }  ->  IO puts "見つかったファイル:#{コンテンツ} " 
iex>   { :error  reason }  ->  IO puts "missing file:#{ reason } " 
iex> end

パイプオペレーター

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   
end

千のプロセスを順次生成する

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

タスクを非同期的に実行する

task  =  Task async  fn-  >  Perform_complex_action (  end 
other_time_sumption_action ()
タスクタスクを待つ 

注目すべきElixirプロジェクト

  • Mixは、Elixirプロジェクトの作成、コンパイル、テスト、依存関係の管理などのタスクを提供するビルド自動化ツールです。[34]
  • Phoenixは、サーバー側のModel View Controller(MVC)パターンを実装するElixirで記述されたWeb開発フレームワークです。[35]

も参照してください

参考文献

  1. ^ https://elixir-lang.org/blog/2021/12/03/elixir-v1-13-0-released/
  2. ^ 「マスターでのelixir / LICENSE・elixir-lang / elixir・GitHub」GitHub
  3. ^ 「2018年の最も人気のあるプログラミング言語-エリートInfoworldブログ」2018-03-30 2018年5月8日取得
  4. ^ 「エリクサー」JoséValim 2013年2月17日取得
  5. ^ 「ランプのエリクサー」ランプ2021-05-24 2022-02-25を取得
  6. ^ 「PagerDutyのエリクサー」PagerDuty2018-06-14 2019年4月21日取得
  7. ^ Vishnevskiy、Stanislav(2017年7月6日)。「DiscordがElixirを5,000,000人の同時ユーザーにスケーリングした方法」2019年4月21日取得
  8. ^ ヴァリム、ホセ(2020-06-23)。「フィンテックでのElixirとBrex」elixir-lang.github.com 2020年11月14日取得
  9. ^ 「リリース6.0の新機能|ドキュメント」www.emetrotel.com 2019年4月21日取得
  10. ^ 「Elixirコミュニティ向けの新しいオープンソースツールの紹介」2016年8月1日取得
  11. ^ 「データベースフリーアーキテクチャを使用したMozProの新機能のロック解除」2016年8月1日取得
  12. ^ 「エリクサー」ブリーチャーレポートエンジニアリング2019年5月22日取得
  13. ^ ルシア、デイブ(2018年9月24日)。「アウトラインでのエリクサーの2年」2019年5月22日取得
  14. ^ 「どのような大きなプロジェクトがElixirを使用していますか?」2016年8月1日取得
  15. ^ 「Divvyがより一般的なコーディング言語の代わりにElixirを使用する理由」2019年4月2日2019年4月30日取得
  16. ^ FarmBotのRaspberryPiで実行されるオペレーティングシステムとすべての関連ソフトウェア:FarmBot / farmbot_os、FarmBot、2019-10-28、2019-10-29取得
  17. ^ 「プロダクションインタビューのエリクサー:GarthHitchens」2015年6月3日2016年8月1日取得
  18. ^ 「神経-Elixirで防弾組み込みソフトウェアを作成して展開する」2016年8月1日取得
  19. ^ 「ElixirConf」2018年7月11日取得
  20. ^ 「ElixirConf」2018年7月11日取得
  21. ^ 「Erlang&ElixirFest」2019-02-18を取得しました。
  22. ^ 「エリクサーLDN」2018年7月12日取得
  23. ^ 「EMPEX-帝国国家エリクサー会議」2018年7月12日取得
  24. ^ Elixir-ErlangVMのプログラミングへの最新のアプローチ2013年2月17日取得
  25. ^ JoséValim-ElixirConfEU2017基調講演2021-11-17にオリジナルからアーカイブされました2017年0月14日取得
  26. ^ 「コードの裏側:エリクサーを作成した人」2019年11月25日取得
  27. ^ 「エリクサー:ミニドキュメンタリー」2021-10-30を取得しました。
  28. ^ 「命令型割り当ては1.7アップデートでアプリケーションを壊しています・問題#8076・elixir-lang / elixir」GitHub 2020-02-10を取得
  29. ^ Elixirは、スケーラブルで保守可能なアプリケーションを構築するために設計された動的で機能的な言語です:elixir-lang / elixir、Elixir、2019-04-21 、取得済み2019-04-21
  30. ^ a b c d e f "Elixir" 2014年9月7日取得
  31. ^ Loder、Wolfgang(2015年5月12日)。命令型プログラマーのためのErlangとElixir「第16章:コード構造化の概念」、セクションタイトル「アクターモデル」:Leanpub 2015年7月7日取得{{cite book}}: CS1 maint: location (link)
  32. ^ Wlaschin、Scott(2013年5月)。「鉄道指向プログラミング」楽しさと利益のためのF#2021年1月30日にオリジナルからアーカイブされました2021年2月28日取得
  33. ^ 「Elixirを使用したアサーティブコードの記述」2014年9月24日2018年7月5日取得
  34. ^ 「ミックス」2019年4月18日取得
  35. ^ 「概要」2019年4月18日取得

外部リンク