Juliaを使ってみた
ブログ遅れちゃいましたが。 今週のはじめにJuliaで書いたPCA hashとITQの実装を公開しました。
https://github.com/beam2d/julia-pcahash
Juliaというのは数値計算・科学計算がメインターゲットの新しい言語です。 つい最近触り始めたんですが、今のところ割りと良好です。 julia-pcahashは勉強用に書きました。
Juliaには以下の様な特徴があります(僕の目にぱっとついたところだけで)。
- 多次元配列が簡単に扱えて線形代数計算が充実している(MATLABやnumpy/scipyのノリ)
- 文法はMATLABとRubyとPythonを混ぜたような感じ
- LLVMベースで、JITが走る
- 動的型付けで、型アノテーションや多相型があり、型推論による静的最適化が走る
- 他の科学技術用言語にくらべて数値計算以外の処理が比較的速い
- Juliaの構文自体をデータ構造として扱えて、マクロが書ける(LISPみたいに1)
Juliaでコード書いてみてわかったことが以下のとおり。
- ファイルの読み書きは割りと簡単にできる
- 行列計算はMATLABやnumpy/scipyみたいに書けるが細かい所はいろいろ違う
- 1-originはやっぱり不便
- マクロが結構便利に見える
- BitArrayは2階以上でもびっちり詰まっていて、そこを意識しないと性能劣化する
- 引数・戻り値が簡単な型(行列含む)なら、Cのコード呼び出し(ccall)はとても簡単
- 今回、ハミング距離の計算をSSEでやるコードをCで書いて、それを呼び出した2
- 標準ライブラリはまだ痒いところにちょっと手が届かないレベル
- パッケージは盛んに開発されている雰囲気
- 起動が重い
速度もそこそこ速いように思います。 そのうちちゃんとC++やPythonと比較したいところ。 もうちょっと使ってみようと思います。