Upload
hayabusa333
View
2.925
Download
0
Embed Size (px)
Citation preview
erlaNg and eLixir2016/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 つのコマンドがあるelixirelixirciexmix
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 は切っても切れない関係
ご静聴ありがとうございました