erlaNg and eLixir
2016/04/16 NLNagoya
2016/04/19 tokyo.ex
自己紹介
name = ハヤブサ
|> TwitterID = hayabusa333
|> heart = [カーネル, GC, Erlang, Elixir]
|> jobs = 派遣ウェッブプログラマ
|> position = [Joel教, 翔鶴瑞鶴仲良し姉妹同盟, 社畜系
Alchemist]
ElixirとPhoenixの薄い本を出しました(ページ数:240)
電子書籍版をBOOTHで販売中
https://hayabusa333.booth.pm/items/186705
自己紹介(宣伝)
Elixirとは
ErlangVM(BEAM)にて動くプログ
ラム言語
Erlangを今風の言語っぽくかける
ようにした言語
Erlangとは
小さな子プロセスを大量に作成し
、管理することによって平行性・
耐障害性に強い関数型言語
Elixirをやりたいなら
Elixirは(それなりに)ドキュメン
トが(たぶん)しっかりしている
ので、ドキュメント読めばよい
なのでElixirの
ドキュメントに書いて
ない箇所を話します。
なにを話せば良いかなっと考
えて(ElixirにはNの文字がない
し)
ElixirはErlangVM上で動くし、
Erlangに近い部分を話せば
良いかと考えた
過去にElixirの起動時の話をし
て内部実装について話してい
て
http://www.slideshare.net/hayabusa333/iex
その時気づいたこと
http://d.hatena.ne.jp/hayabusa333/20160113/1452686320
Elixirには4つのコマンドがある
elixir
elixirc
iex
mix
Elixirのコマンド自体を
確認してみる
https://github.com/elixir-lang/elixir/blob/master/bin/elixir
あっ、これ
シェルスクリプトだ
elixirコマンドの
最終行を確認
最終的にコードを
Erlang側に渡しているだけでしたー
ま、まあElixirをやっていたら
Erlangをやるのは当たり前だし(震
え声
/lib/*/ebin のファイルは
どうやってできるのか
ElixirのビルドはMakefile
でビルドするので
Makefileを見ていけばわ
かる
make したらデフォルトは
compileのため
Erlangで書かれたElixirの
コードをcompileしているだけ
rebarは Erlangのcompileや
テストやリリースを行うた
めの統合ビルドツール
elixir.app.src では
Erlangでビルドするため
の情報が記載されている
make install で
compileでできたbeamファイル
を指定のディレクトリに配置!
Erlang以外の何物でもないな!
Elixirが作られた理由は
Erlangの文法でアプリケーショ
ンを書くのが苦痛だったため
(出典不明)
しかしElixirの内部はErlang
ElixirはErlangを抽象化できる
ほどには育っていない
(そもそも全て抽象化しきる
つもりもない…はず?)
漏れのある抽象化の法則
抽象化は失敗する。
あるときは小さく、あるときは大きく
、漏れがあるのだ。
物事は悪くなるものだ。
この漏れは抽象化が行われているあら
ゆる場所で起こる。
そもそもElixirを書くと
きの考え方はErlangの
思想が必要
ElixirをやるならErlangは
切っても切れない関係
ご静聴ありがとうございました

Erlang and Elixir