昨日またルビーイベント参加してきた。今回はルビーの作者マッツさんの話が聞けるという訳で楽しみだった。実際に気になっていたことや、ここから半年で気になるだろう的なこともいっぱい聞けてよかった。

マッツさんのメインテーマはルビー3×3ということ、ルビー3を2.0と比べて3倍早くするというルビーの将来図だった。ベンチマークの理想的な使い方も語って、どういう指数をなんのために見ればいいのかが参考になった。

それでも3倍早くするのは(ありがたい話ではあるが)単純な目標ではないので実際にどこまでいけるかが気になる。去年のイタビューではまだ予定だったJIT追加の概要も固まりつつありそうで、MJITって(Mはマッツさんで)CRubyに実装される見込み。言語としてはメンテし切れない外部ライブラリーじゃなくて自分で作る方針で固まったっぽい。

それ以外にも、マルチスレッド強化や、(早期バグ発見のための)型推論も新しく入るとのこと。もちろん書きやすさを意識するルビーには硬い型は導入される予定はない。

後の懇親会で、ルビーがリスプとして成り立つという話を振ったら「当たり前、もともとリスプエンジニアだから」と言われてびっくりした。やっぱ優秀な人ほどリスプが近いかな?それでもルビーはCで書かれてるけどね。

言語は使ってもらうためのもので、互換性がないと使ってもらえないし、綺麗にしただけでも速くならないとわざわざ移るコストをかけてもらえないし…パイソン2と3の壁が代表例。

どうしても負債が大きくなると、全部ぶん投げてゼロから作り直したくなるという話は心に響いた。改めて考えてみると哲学の正反合の原則を思い出した。今後の作業や企画にもそれを意識して取り掛かろう。

マッツの話のあとに、クリスタルのファンが言語の紹介をした。公式サイトにはいろんな大胆な発言があるが、印象としては静的型のルビーですごく若い言語にしか見えなかった。Elixir、Go、Rust、Swiftと比較されたが、Elixir以外は全部大手が付いているので比較が難しいかなと思った。

ElixirとCrystalどっちか使うとしたら今流行りの関数型Elixirの方に行きたいかな。マッツも結構Elixir好評だったんで、俺もやる気湧いてきました。関数型になれるのはやっぱ楽じゃない。