Elixir (プログラミング言語)
表示
出典: フリー百科事典『ウィキペディア(Wikipedia)』
パラダイム | 関数型プログラミング、並行計算、プロセス指向プログラミング ウィキデータを編集 |
---|---|
登場時期 | 2012年 (2012) |
開発者 | José Valim ウィキデータを編集 |
最新リリース | 1.18.2/ 2025年1月23日 (21日前) (2025年01月23日) |
型付け | 強い動的型付け |
影響を受けた言語 | Erlang、Ruby、Clojure ウィキデータを編集 |
プラットフォーム | クロスプラットフォーム ウィキデータを編集 |
ライセンス | Apache-2.0 ウィキデータを編集 |
ウェブサイト |
elixir-lang |
拡張子 | ex、exs ウィキデータを編集 |
テンプレートを表示 |
Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。[1]
歴史
[編集 ]高い拡張性があり、Erlangの仮想環境上で動作するシステムを目標に、José Valimによって開発された。 [2]
特徴
[編集 ]- Erlangの仮想環境 (BEAM) 上で動作する
- Erlangの関数を呼び出せるため、Erlangのシステムにシームレスに統合できる
- LISPのマクロと抽象構文木によるメタプログラミング
- Clojureのようなプロトコルによるポリモーフィズム
- ファーストクラス・ドキュメント
- メッセージ交換アクターモデルによるシェアード・ナッシング・アーキテクチャを採用
- 副作用が起こる循環構造の代わりに、再帰や高階関数に重点を置く
- 構文は全て式として扱われる
- 遅延評価と非同期処理
- パターンマッチング
- 標準でUTF-8ユニコードを採用
例
[編集 ]以下のサンプルはiexシェルまたはファイルに保存した上で elixir <filename>
コマンドにて実行可能である。
iex> IO.puts"Hello World!" Hello World!
- 内包表記
iex> forn<-[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"
- モジュール
defmoduleFundo deffib(0),do:0 deffib(1),do:1 deffib(n)do fib(n-2)+fib(n-1) end end
- 1000個のプロセスを順番に立ち上げ
fornum<-1..1000,do:spawnfn->IO.puts"#{num*2}"end
- 非同期実行
task=Task.asyncfn->perform_complex_action()end other_time_consuming_action() Task.awaittask
参考文献
[編集 ]- ^ "Elixir". José Valim. 2013年2月17日閲覧。
- ^ "Elixir - A modern approach to programming for the Erlang VM". 2013年2月17日閲覧。
- Dave Thomas:「プログラミングElixir」、オーム社、ISBN 978-4-274-21915-3(2016年8月19日)。
- Dave Thomas:「プログラミングElixir」(第2版)、オーム社、ISBN 978-4-274-22637-3(2020年12月)。
外部リンク
[編集 ]- 公式ウェブサイト (英語)
- elixir - GitHub (英語)
- Elixir - A modern approach to programming for the Erlang VM video presentation (英語)
スタブアイコン
この項目は、ソフトウェアに関連した書きかけの項目 です。この項目を加筆・訂正などしてくださる協力者を求めています(PJ:コンピュータ/P:コンピュータ)。