Skip to content

Latest commit

 

History

History
164 lines (110 loc) · 3.5 KB

PITCHME.md

File metadata and controls

164 lines (110 loc) · 3.5 KB

Elixir ことはじめ

ひげ


注意

+++

注意

  • Elixirを勉強し始めて5日目
  • まだ書いたことすらない
  • 諸事象で使う必要が出てきたので自分用メモ

Elixir is 何?

+++

Elixir is Programming Langage

  • 2012年生まれ
  • José Valim 作
    • RoRのコミッタ
  • 動的型付け
  • 関数型プログラミング言語(本人曰く)

Erlang を Ruby のような構文にしたもの

+++

加えて

  • プロトコルによる多相性(Clojure由来)
  • マクロ(Lisp由来)
  • ファーストクラスドキュメント
  • MixHex というリッチな言語サポート機能
  • 構文が全て式
    • do ... enddo: (...) の糖衣構文

などなど

+++

Erlang/OTP

Elixir は BEAM(ErlangVM) 上で動作する (Erlang AST に変換されて)

  • 1986年生まれ
  • Ericsson が自社用言語として開発
    • 電話交換制御ソフトウェア
  • 並列処理・耐障害性が非常に優れている
    • オブジェクトの生成と同じ感覚でプロセスを生成
  • 関数型的機能やパターンマッチがある

VM レベルで並行処理をサポートしてるのがすごい

+++

BEAM(ErlangVM)

OSのプロセス・スレッドとは違う 独自の抽象化したプロセスやノードというのを持つ.

  • プロセス
    • アクターモデル
      • メモリを共有しない
    • めちゃくちゃ軽量(1236バイト?)
      • 大量生産
      • 壊れたら捨てて起動しなおす +++

BEAM(ErlangVM)

OSのプロセス・スレッドとは違う 独自の抽象化したプロセスやノードというのを持つ.

  • ノード
    • VMの抽象化された単位
    • 複数のVMを接続するため
    • 同じマシン上でもそうでなくても関係ない

書籍: プログラミング Elixir

+++

プログラミング Elixir

  • 唯一の日本語書籍
  • ver1.2なので少し古い
  • 面白い構成
    • パターンマッチから始まる
    • 制御構文が12/23章
    • 並行の仕組みがII部

15章までしか読めてない...

+++

面白い話

  • 1章のタイトル「赤いカプセルをとれ」が7L7Wのオマージュ
    • Elixir作者自身が7L7WのErlangから着想を得たらしい
  • 一般的な代入がない
    • 全てパターンマッチ
    • 3 = x とか書ける
  • プロセス単位でGCを持つ
    • すぐ捨てるから Stop The World はない

+++

面白い話

  • PID型とポート型が組込みである
  • バイナリ文字列と文字リスト文字列
    • Haskellみたい(笑)
  • 13章の演習
  • VMを抽象化したノード

その他

+++

Elixir Conf 2017 Japan

  • 作者が基調講演
    • Data, Module, Prosses
    • 静的型検査の研究中
  • Erlang/OTPの知識は必要になる

+++

某社とElixir

  • 「Elixir歴が日本一長い」と自負してるらしい
  • ファイトリーグのサーバー側がElixir
    • 他にもちょこちょこっと使ってたらしい
  • モンストは RoR
    • この差は??

まとめ

  • ElixirはErlangVM上で動く
    • Erlangの欠点の構文はRubyより
    • 他にもモダンな機能が盛りだくさん
  • ErlangVMが強い
    • 超軽量プロセス
    • もはや小さいOS

ミドルウェアレベルの通信系好きな人は楽しいかも


おしまい