Green Fortress

プログラマーのポエム隔離所

Crystal-lang雑感

Qiitaに書くほどきっちりした内容がないのでとりとめもなく書く。

最近Rubyによく似た文法でありながら静的型付け言語であるCrystal言語が勢いを少しづつ増している。 まだまだ言語としてもエコシステムとしても発展途上であり、実運用への適用は先の話となりそうだが、ものすごい勢いでPRが飛び交い、エコシステムの整備が行われており、熱量を感じる。あと個人的にセルフホスティングされてるのがグッと来た。

「近い将来Crystalの時代がくるーっ!」とは言っているもののウォッチだけして特に触っていなかったが、homebrewに追加されたとの話を聞きインストールしてみることにした。 ところがhomebrewに入っているバージョンは0.5台。最新版が0.9というのに対しあまりにもバージョンがズレている。 そこでcrenvを使ってインストールすることに。

crystalのコードをどう書こうかと思っていたがとりあえず手元のRubyコードを書き換えてみることに。 以前、以下の記事でRubyをそのままCrystalに書き換えるのは無理だよね、って結論になっていたが、それはガチのライブラリのお話。 数十行の書き捨てみたいなスクリプトであれば型定義を付け加える程度で動くようだ。 実用的なコード変換的には厳しいが、もともとなんの互換性も謳っていない言語がごくわずかな変更で別言語になるというのはそれはそれですごい。お遊びには十分である。

で、Crystal で Ruby のコードってどんだけそのまま動くの? - Qiita

自分が手元に持っていたスクリプトではそこまで実行時間がかからないものばかりであったが、せっかくCrystalはコンパイル言語になって動作速度が大幅に早くなっているというのだから是非とも試してみたい。 そこでプログラミング言語の実行速度を比較している記事を適当に見繕いその中からRubyのコードをダウンロードしてCrystalに書き換えてみる。 (著作物の私的複製にあたるのでここではその内容については触れない)

実行させてみると参照元スクリプトにもよるが、実行時間がざっくり10分の1〜100分の1になったりする。 (ループ演算しているファイル全体での実行時間短縮なので、1回の計算がどのくらい早くなっているかはきちんと比較する必要あり)

雑にとりあえず動かしてみただけの状態であるが、「Rubyよりはやーい!」と悦に浸っていた。 引き続きウォッチして有益な情報がまとまったらQiitaにも記事を書いていこうと思う。