Elixir (エリクサー) は並行処理の機能や関数型といった特徴を持つ、Erlangの仮想マシン (BEAM) 上で動作するコンピュータプログラミング言語である。ElixirはErlangで実装されているため、分散システム、耐障害性、ソフトリアルタイムシステム等の機能を使用することができるが、拡張機能として、マクロを使ったメタプログラミング、そしてポリモーフィズムなどのプログラミング・パラダイムもプロトコルを介して実装されている。

歴史

高い拡張性があり、Erlangの仮想環境上で動作するシステムを目標に、José Valimによって開発された。

特徴

  • Erlangの仮想環境 (BEAM) 上で動作する
  • Erlangの関数を呼び出せるため、Erlangのシステムにシームレスに統合できる
  • LISPのマクロと抽象構文木によるメタプログラミング
  • Clojureのようなプロトコルによるポリモーフィズム
  • ファーストクラス・ドキュメント
  • メッセージ交換アクターモデルによるシェアード・ナッシング・アーキテクチャを採用
  • 副作用が起こる循環構造の代わりに、再帰や高階関数に重点を置く
  • 構文は全て式として扱われる
  • 遅延評価と非同期処理
  • パターンマッチング
  • 標準でUTF-8ユニコードを採用

以下のサンプルはiexシェルまたはファイルに保存した上で elixir コマンドにて実行可能である。

Hello world
内包表記
パターンマッチング
モジュール
1000個のプロセスを順番に立ち上げ
非同期実行

参考文献

  • 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 (英語)

The Elixir programming language

Introduction to the Elixir Programming Language 2024 Guide Instagrid.me

Elixir Programming Course for Beginners

Elixir Programming Language Coding Ninjas

an Elixir Programmer AIPowered Learning for Developers