simotin13's message

simotin13といいます。記事の内容でご質問やご意見がありましたらお気軽にコメントしてください\^o^/

Elixir入門 ~1日目 導入~

コンパイラの授業でお世話になった石浦先生に教えて頂いたelixirを勉強してみることにしました。
(コンパイラの授業を受けた話はまだ書けていないのでそのうち書きたいと思います)

ちなみに石浦先生の研究室ではerlangFPGAの高位合成をする研究をしているそうです。
普段の記事は「です・ます調」で書いていますが、elixirの勉強の記事は個人的な記録としての意味合いが強いので、この勉強の記録は独白・口語体で書くことにします。
あと学習の過程を書いているのでその時点で間違ったことを書いている可能性はあります。
理解の度合いや指摘があれば直すと思いますが、もしここに書いている内容を参考にされる方は自己責任でお願いします。

はじまり

とりあえずがっつりelixirの勉強だけはできないだろうから毎日数行のコードを書いて行くことにする。
こういうのは本当に少しでもいいから毎日やった方がいいかもしれない。
コンパイラの勉強とかLinuxカーネルの勉強とか、やりたいことはいろいろあるし仕事関係の勉強もあるので時間はどうせたくさんは取れない。

なぜerlangにしなかったのか。

Elixirの文法がrubyに近いという噂を聞いたから。コツがつかめらたらerlangとかBEAMのレイヤも勉強したい。

参考書籍

プログラミングElixir

プログラミングElixir

サンプルプログラムのダウンロードもできる。

導入

elixir-lang.org

でインストール方法を調べる。

windows環境

とりあえずwindows用にインストーラを走らせてみた。
何も考えず「次へ」を押したので何が入ったとかよく分かっていない。

インストールが終わるとErlangがインストールされていた。elixirはErlang用のBEAMという仮想マシン上で動くらしいので、まぁそういうことなんだろう。
cygwinのコンソールからiexしてみても動かなかった。

後でパスを通そう。

Linux環境

VMLinux Mint上で、

$ sudo apt-get install elixir

してみた。

iexでインタラクティブなシェルが立ち上がったので多分大丈夫だろう。

Hello World

拡張子

elixirの拡張子は

.ex もしくは .exs にするのが習慣らしい。

.exはコンパイル済みのファイルに付け、 .exs はスクリプトに書くらしい。

感覚としては、Elixirは中間言語による仮想マシン方式とのことなので
Javaの .class と .java みたいな感じだろうか。
Javaと違ってコンパイルしなくても動かせる。LispHaskellと同じ。

IO.puts "Hello, World!"

スクリプト実行

コンパイルなしの実行はRubyPython等と同じで

$elixir ファイル名

とすればよい。

上記のコードをhello.exs に保存して動かす。

$ elixir hello.exs
Hello, World!

ちゃんと動いた。

iexでの実行

c ヘルパーという機能でiexからも実行できる

c "hello.exs"
Hello, World!
[]

評価された後[]が出ている。パッと見は空の配列に見えるけど、全てはリストで表現されているんだろうか。


コンパイルについてはなんか長くなりそうなので今日はこれまでにしておく。