この記事の出典や参考文献は、一次資料や記事主題の関係者による情報源に頼っています。信頼できる第三者情報源とされる出典の追加が求められています。
出典検索?: "Elixir" プログラミング言語
Elixirパラダイム関数型プログラミング、並行計算、プロセス指向プログラミング
登場時期2012年 (2012)
開発者Jose Valim
最新リリース1.16.3 / 2024年5月20日[1]
型付け強い動的型付け
影響を受けた言語Erlang、Ruby、Clojure
プラットフォームクロスプラットフォーム
ライセンスApache-2.0
ウェブサイトelixir-lang.org
拡張子ex、exs
テンプレートを表示
.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:#f9f9f9;display:flow-root}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}ポータル FLOSS
Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。[2] 高い拡張性があり、Erlangの仮想環境上で動作するシステムを目標に、Jose Valimによって開発された。[3] 以下のサンプルはiexシェルまたはファイルに保存した上で elixir <filename> コマンドにて実行可能である。
歴史
特徴
Erlangの仮想環境 (BEAM) 上で動作する
Erlangの関数を呼び出せるため、Erlangのシステムにシームレスに統合できる
LISPのマクロと抽象構文木によるメタプログラミング
Clojureのようなプロトコルによるポリモーフィズム
ファーストクラス・ドキュメント
メッセージ交換
副作用が起こる循環構造の代わりに、再帰や高階関数に重点を置く
構文は全て式として扱われる
遅延評価と非同期処理
パターンマッチング
標準でUTF-8ユニコードを採用
例
Hello world
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> a2iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}iex> a"world"
モジュール
defmodule Fun do def fib(0), do: 0 def fib(1), do: 1 def fib(n) do fib(n-2) + fib(n-1) endend
1000個のプロセスを順番に立ち上げ
for num <- 1..1000, do: spawn fn -> IO.puts "#{num * 2}" end
非同期実行
task = Task.async fn -> perform_complex_action() endother_time_consuming_action()Task.await task
参考文献^ 出典URL: https://github.com/elixir-lang/elixir/releases/tag/v1.16.3
^ “ ⇒Elixir”. Jose 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 (英語)
表
話
編
歴
コンピュータ・プログラミング言語
低水準言語
機械語
アセンブリ言語
高水準言語
1950年代
FORTRAN
ALGOL
RPG
COBOL
1960年代
LISP
CPL
BASIC
PL/I
APL
BCPL
Simula
LOGO
B
1970年代
Forth
Pascal
C
Prolog
Smalltalk
Scheme
ML
AWK
Ada
1980年代
C++
Objective-C
Common Lisp
Eiffel
Erlang
Perl
Mathematica
J
1990年代
Python
Tcl
Haskell
Visual Basic
Ruby
Lua
Delphi
Java
ECMAScript (JavaScript)
PHP