WEB+DBのJulia特集を読んだ

ここ数日、Juliaに少しずつ触れようとしている。

Ruby言語しか知らないので、新しい言語にふれるとものすごくストレスを感じる。
Juliaのデータフレームが使いやすいとは思えず、Daruって意外とよくできているんだなと思ったりした。
Pythonも何回か挑戦したけどあきらめてしまった。Juliaは粘り強くやらないとね。

WEB+DBのJulia特集が出たので読んでみた。Julia1.0が登場した時期なので、これからJuliaを始めるにはちょうどいい時期らしい。

読んでみて、やっぱりJuliaはRubyに似ているなと思った。

 だから一番記憶に残ったところは、Rubyとは全く違うところ…「多重ディスパッチ」だ。データの操作とデータの定義が分離しているとのことだ。これはRubyと違う。真っ先に思い出したのは、Crystalのオーバーロードである。Crystalは、メソッドの中で型を判定しようとはせず、引数の型ごとにメソッドを別々に定義する。これは便利な機能である一方で、制約にもなると思う。

 Rubyの場合、引数の型が何であるかはわざと曖昧になっていて、型の判定はメソッドのなかでゴチャゴチャやることも多く、その方法も必ずしも一通りではないと思う。最近にはRubyにも型を導入しようとする流れがあるみたいだけど難しいことはよくわからない。

 けれども、JuliaはCrystalとも違う。Crystalはデータ解析向けのパッケージは充実していない。もしもCrystalに優秀な統計・行列計算のパッケージが付属すればJuliaのような言語になったのかもしれない。

 Crystalで特に素晴らしいと思ったのは、crystal コマンドであった。Rubyにおいてbundler(パッケージ管理), yard(ドキュメント), pry(REPLなど)が提供している機能が統一感のある簡潔なインターフェイスで提供されていて美しいと感じた。Rubyのbundlerやyardやpryはもともと外付けのツールで、Crystalのほど一体感があるわけではない。 ところがJuliaはこの点はむしろRubyよりもさらにいい加減にする方針のようだ。パッケージ管理やプロジェクトの管理についてはすべてREPLで行い、コマンドラインツールは使わないようである。確かにREPLの中で新しいライブラリを追加できたり、プロジェクトを作れるのは便利である。でも、これはとりあえず一つのメソッドを作って、その中で様々な型を判定して使い分けるRuby方式に近く、多重ディスパッチの努力までしているJuliaっぽくない…と感じたりする。

 だから、REPLの中で全部やるっていうのは、スタートアップ時期に人を集めるための工夫で、黎明期は便利だけど、ひょっとすると普及後の未来には足かせになるかもなと思った。

 Pythonを勉強している時は、Rubyの方がわかりやすいと感じることが多くて、なんでPythonが群を抜いて素晴らしい言語のように言われているのだろう?控えめに見てもRubyよりも劣っている点いっぱいあるよね?欧米人はこういうのが好きなの?と納得いかないことも多かったけど、Juliaの場合は、Rubyっぽい記法が随所に見られて「これならRubyから乗り換えても仕方ないか。やっぱりPythonの文法よりもRubyの文法の方が使いやすいと欧米のみなさんも思ってたんだね。納得〜」と感じる謎の安心感がある。引き続き勉強していきたい。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です