kmizuの日記

プログラミングや形式言語に関係のあることを書いたり書かなかったり。

ScalaMatsuri 1日目の雑感

ScalaMatsuri Training Dayは、別チケットであることからもわかるように、ScalaMatsuriとは若干独立していました。というわけで、この日から本番でした。この日、私が一番楽しみにしていたのはMartin Thompsonさん(Javaで高パフォーマンスのメッセージングライブラリLMAX Disruptorの作者でもある)の発表でした。彼はScalaにはあまり縁がない人物ではありますが、Javaカリカリに性能をチューニングをする専門家であり、そのノウハウの一端でも聞ければという思いでした。

関数型プログラミングによるパフォーマンス」

寝坊したので間に合わないかと思いましたが、タクシーに乗って、なんとかMartinさんの発表には間に合うことができました。しょっぱなからHaswellのアーキテクチャ図を示して、低レベルな部分での動きを把握することの重要さを語っていたのが印象てきでした。また、関数型データ構造について、一般的には木構造が多いが、それはポインタをたぐる操作を多用するために、現代のCPUアーキテクチャでは遅くなりがちであるというのはなるほどと思いました。後半、CRDTというデータ構造を中心に説明が進んでいくのですが、私は恥ずかしながらCRDTについてほとんど知らなかったので、後半ついていけなくなったのが少々悔しかったです。まとめとしては、関数型データ構造を使うときでもハードウェアを意識すべきだ、ということでしょうか?

HaskellScala

これは私の発表ですが、HaskellScalaについて、言語戦争に陥らないように、それぞれの利点を比較しようという趣旨のものでした。聴衆の方にうまく伝わったか自信がないのですが、私は、最近のScalaコミュニティがHaskellから学ぶことはあっても、ML系言語からあまり学んでいないことにもったいなさを感じていて、ScalaでMLスタイルのモジュールがエミュレートできることを示すことで、MLから学ぶこともあるのだということを主張したかったのでした。なお、発表中は、Scala型推論は雑魚ですという言い方をしたのが結構うけたようですが、これ自体はまぎれもない事実です。しかし、型システムの表現力と型推論の強力さは一般的にトレードオフの関係にあるものであり、両立させるのが難しいので、どちらを取るかは好みの問題かもしれません。

なお、発表の後、元、筑波大学のM先生と鉢合わせした(M先生が非学術系のこういうイベントに参加されるとは思っていなかったので)のは印象深かったです。Scala型推論をディスったことについても、もうちょっとScala型推論を評価してもいいんじゃないかなあということを言われましたw(M先生は型システムの専門家です)。

Haskell + Scala ハイブリッド開発大作戦」

HaskellJVM用の実装Eta、というか、処理系としてはGHCをベースにしてクラスファイルを出力するもの、ととらえればいよいのでしょうか、についての発表でした。正直なところ、Etaの実装については興味深かったのですが、現在のJavaジェネリックスととても相性が悪そうなところが気になりました。また、ただでさえコンパイルが遅いScalaなのに、それにさらにコンパイルが遅いであろうEtaGHCベース)と組み合わせて大丈夫なのかとか、Javaとの連携がScalaほどうまく行かなそうなのが気になりました。用途としては、Java側のfacadeを用意して、それをHaskellを呼び出すようにするのが一番良いのでしょうか。

その他

昨日に引き続き、不眠気味で体力がかなりぎりぎりだったので、自分の発表といくつかの発表を聴いた他は休憩用のソファーで休んでいました。せっかくのMatsuriなのでもったいないとも思うのですが、体調の問題はどうしようもなく。

この日は、懇親会があったのですが、私はオプテピピック会場で色々な方とお話しました。中にはカンボジアからはるばる来られた方や、自分に関係のある方(詳細は伏せますが)との思いがけない出会いもあって楽しく過ごすことができました。

私は、体力的には懇親会が終わったあたりで限界が来ていたので、翌日のアンカンファレンスにも出られませんでいたし、楽しみ切れたかわからないのですが、とりあえず私の発表に穴を空けずに済んだことはほっとしています。

後日、公開されるであろう動画を見て、今回視聴できなかったお話を見てみようかと思います。

以上、短い感想でしたが、読んでくださった方ありがとうございました。