公開講座を卒業する

水曜日にSML#の公開講座の最終回に参加してきました。
で、最後ってことで公開講座懇親会をするということで行ってきました。
で、日記書き始めると、SML#よりもScalaが素晴らしいみたいな話になってしまうので寝かせておいたのでした。

おお、憧れの大堀先生と飲める!ってことで行ってきました。

上野さんはRubyのコミッタだったそうで、すげぇなぁっと。
で、コンカレントGCを今月中に作らないと行けないらしく飲んでる場合じゃないんだけど、まぁ、いいんですってことらしいです。
リアルタイムOSでも動かせるようにするとかなんか言ってたけど、そこまで出来るのかなぁ?
JavaリアルタイムOS上で動かすみたいな話も昔聞いた事があったのでできるのかもなぁ。とは思ったんですけどやってるそうです。
あと、SML#のバックエンドをLLVM化することで一気にマルチプラットフォーム対応にするってことをやっているそうです。
やっぱり今それなりのコンパイラを作るなら、LLVMをバックエンドにする方がいいんだろうなぁと思う次第です。
ってことで、これじゃ、とても忙しくて色々対応するのは難しいんだろうなぁっと思った次第でした。

さらにGCCが速いみたいな話をX86/64最適化勉強会でやってました。ああー、ARM大変だなぁ。
やっぱりCは短く書けて良いなぁと改めて思ったりしてました。
それでも、俺はバックエンドも勉強するのかね?別にフロントエンドだけでいいんじゃねぇの?
って思ったり、いやいや、LLVMC++だから、Scalaか俺言語で書かねばとか、妄想しているうちに寿命来るなぁっていう。

めったにない機会だったので、SML#のもっと突っ込んだ技術的な話も聞きたかったんだけど、
他の人達もいてわけわからない状態になると悪いのであんまし突っ込んだ話はしなかったんですけど本当に嬉しかったです。
本当は根掘り葉掘り教えてもらいたかったんですけど、質問攻めしては申し訳ないのでやめました。

上野さんがdelimited continuationがどうのとか言い始めて分け分からんなぁっと思い

for (i <- 1 to 5) yield i

でジェネレーターが作れるとかいうのが、限定継続とかなのかなと勝手に思ってたんですけど、調べてみたら違ってました。
http://www.itpl.co.jp/ocaml-nagoya/?delimited%20continuation
特に、必要性を感じてなかったのでどうでもいいやと思ってたのでした。駄目だな。
まぁ、継続使って何が嬉しいっていうと、コルーチン使って、シューティングゲームのキャラごとにマルチスレッドじゃないけどマルチスレッド的に書けたり、セッション情報としてVBライクにwebアプリ書けたりして嬉しいわけですけど、限定って付くから、たいした事できないんじゃないのかとか思ってたのですけど、そうでもないっぽいのでゲームを作らなくてはぁとか思えど、まぁいいや。

ああ、英語力が足りないなぁ。論文も全然読んでないし、さらっと書いたり読んだり出来るといいんだけどなぁ。
っというか、人の話をあまりきいてなくて、仕事とコンパイラを作る事しか頭になかったようです。申し訳ないです。
ケースクラスとパターンマッチングがあれば大体コンパイラ作れるので新しい機能とか弄ってる暇あったら言語作るってかんじだったのです。

ScalaとSMLの戦いはしたくないので避ける方向で居たんですけど、Scalaが何故盛り上がっているかについては、ModulaとかではなくてC++だからだと言う話をしてきました。

意味良くわからなかったんじゃないかと思うんですけど、純粋で美しければいいってもんでもなく、新しい概念はスロースタートで徐々に、じわじわ覚えることが出来る言語があると嬉しいんだろうと思う訳です。
ベターCとして使えた事で構造化プログラミングから徐々にオブジェクト指向に行けた訳です。
ScalaはベターJavaとして使う事で徐々に関数型言語に移行出来るので良いのかなと。
それで、様々な企業でも使われている実績があるので、盛り上がるんじゃないかなと。

で、まぁ、パラダイムシフトはいつだって大変な事です。
今回もまた大変時間がかかるのでしょう。
それでも、10年20年後には、パターンマッチング機能がないなんて、信じられない。
とか、末尾再帰最適化がされない時代があったなんて信じられない。
っていうことに本当になっているんじゃないかなと思います。
普通に関数プログラミングを業務で使うんじゃないかなと。

住井先生にはきっと嫌われてしまったに違いないので、無礼な事だけはすまいと思ってたので、
楽しく話せたのでよかったです。ありがとうございました。

講座修了証書を送ってくれるそうでそれもまた楽しみです。