LL Future に行ってきましたよ

http://ll.jus.or.jp/2008/
今年は奇跡はおきず、きっちり寝すごした。けど、結局後半だけLL Futureに行ってきたので、例によって今の印象を偏見もまじえて垂れ流し。今回は1000人以上収容できる広いホールでの開催でなかなか壮観だった。800人とかいたらしい。そうとう規模がでっかくなってきたような。ほんと、その規模を支えてるスタッフの方々には感謝感謝です。

君ならどう書く?

すでにかなり後半のこのセッションの途中、yuguiさんが解説しはじめるあたりに到着。
今回のネタは「LL Golf」ということで、いくつかのお題をLL言語でGolfしよう、という話だった。いろんな言語のGolfコードが公開&解説されてて結構おもしろかった。
が、このセッションはプロゴルファー浜地先生の指導とコメントが全てだったような気がする。パーサーの不意を付くような細かい規則がでてくることでてくること。よく発見したなあ&よく覚えてるなあ。でもGolfで一番重要なのは、そういう短く書ける構文要素を駆使するアルゴリズムの構成能力だよなあ。プロゴルファーになれる気がしない。
Golfテクニック以外のコメントもおもしろかった。だれか先生のコメントをまとめて欲しい。「classの作りかたくらいはわかります」くらいしか覚えていない。残念。

古い言語、新しい言語

セッションタイトルからはよくわかんなかったけど、要はECMAScript(JavaScriptActionScriptとかtamarinとか) + LLVMなセッションだった。Lispの話もちらっとだけあったか。Lisp=ゴキブリ説。個人的にはセッションのパネラーだった、あろはくんとomoさんが生で見られて満足。あろはくんには隙あらば挨拶しようかなと思ってたけど、結局つかまえられず。

Javascriptで実装したJVM上で、現実的なスピードでテトリス(Applet?)が動くデモがあったりして「どのブラウザでもお手軽に動作するJavaScriptは、現在の機械語的な役割をになっているのでは」というのもやや納得。ただなー、JavaScriptはライブラリが(環境ふくめて)ぜんぜん統一されてないから、ちょっと不信感があるんだよなあ。まだActionScriptのほうがいいような。難しいところか。

LLVMの話とtamarinの話はだいたい聞いたことがある話だったけど、omoさんによるMozillaががんばってるtamarinSpiderMonkeyの統合の現状の話はおもしろかった。

あとあれか、ActionScript3から生成したABCをそのままAVMで動かすよりも、LLVMを経由してABCにした方が高速っていうのがおもしろかった。LLVMのほうでは関数呼びだしとかが静的に決まるC言語になってるから、メソッド呼びだしが動的なActionScriptを対象にするより最適化が効きやすいのでは?って話だったけど、そうだとすればCコードを書いてる人間がある程度最適化してるとも言えるよなー。妄想としてはそこを自動化できるとおもしろそう。例えば、Rubyとかで(evalやクラスの変更はぴたっと止めて)メソッドの呼びだしの解析とかやって、インライン展開とかのがりがりした最適化処理いれたりできんかなあ。

残念だったのは、このセッションは明らかに各パネリストの時間の配分に失敗していたこと。omoさんが結局一言もしゃべらずに終わるのではないかと見ててドキドキした。あ、あと、「ABC?Concurrent Clean?」ってネタはきっちり笑いました。そう思うよなー。


以下、ライトニング・トーク。三つめのセッションにして早くもLT。どんだけ遅刻してるんだ。例によって、おもしろかったのや興味をひかれたのだけ列挙。

Client-side database storageで実際にアプリケーションを作成してみた

ブラウザのクライアントサイドのストレージ(SQLite?)を使うアプリケーションを作ってみた、という話。手法としていちおう押さえておきたいとは思ったけど、実際にどういう環境でどうしてるかを聞きのがしてしまった。あとで調べよう

私は如何にしてNarioを作り、一面をクリアしたか

ライトニングトークでまさかのゲームライブプレイ。ゲームセンターCXかと思った。GCでのかたまり具合いがみれなかったのは残念。なんかパッチがはいってまともに動くようになってたのかな?

「Pit」で救う世界

あいかわらずプレゼンが派手で楽しめた。抜群の安定感。PitっていうのはパスワードとかIDとかを簡単に管理できるようなライブラリらしい。たしかにたまにそういう機能は必要で常にアドホックにやっつけてしまうので、こういうのはいいな。必要な時におもいだそう。

Babel21(仮) LLにLLを埋め込んでみた

発表時には仮称がとれて、Unbabelが正式名称になってた。えーと要は、ある言語の中に違う言語を記述して透過的に使うライブラリ。ゲスト言語のほうはプロセスたちあげて文字列を丸投げしてるだけみたいだけど、「Unbabelプロトコルさえ実装してもらえればどの言語から(このへん記憶あいまい)でも使えます」って言ってたのが気になった。自作言語作るとき、ライブラリの不足を補う足掛りにはよさそう。「Unbabelプロトコル」を調べてみる価値はあるかなあ。どこまでできるんだろ。

ちょっと草植えときますね型言語Grass

知る人ぞ知る、Grass言語の紹介。軟派な見た目とはうらはらに一皮むけば超シンプルなλ計算という硬派。Grass on Railsにも期待。「見た目で釣っといて、formalizmを叩きこむ!」っていうのにおおうけ。いいぞもっとやれ。

超未来言語 Gallina

関数だけでなく型までも第一級である(変数に代入できる)言語Gallinaの紹介。OCaml-Nagoyaの今井さんが去年のCoqに引き続きマニアックな一品をたんたんと説明する姿に感動した。
で、も、あくまで静的検証もできる関数型言語として紹介してたけど、検証するにはさらっと省略してた「証明」ってとこにCoqみたいな論理式を書きまくらないと駄目なんじゃないのかなあ。すでにはてなキーワードにも登録されていて、それを見るとCoqのための言語って書いてあるし。推測してないで使ってみろってことだな。haskellOCamlと連携できるっていってたしちょっと楽しみ。
あーで、たしか静的な検証の話への導入だったと思うけど、「プログラミング言語の未来、っていう話なのに誰もプログラム品質の話をしないのは不思議」的なことをいっててそれは確かにそうだな、と思った。うん。

未来の並列プログラミング言語としての Haskell

これは気になります。次のバージョンアップや次の次のバージョンアップとかでGHCに並列プログラミング向けのライブラリ?が追加されるよ的な話。Haskellびいき者としては、ちゃんとキャッチアップしとかなきゃだめだなあ。それと、Haskellの最適化フェイズをプラグインでさしかえられるようにするプロジェクトをやってる、、って言ってた気がするんだけど、詳細が気になる。これもそのうち調べよう。

その他

最後にボール投げ抽選会があったけど今年は拾えず。休み時間に書籍販売のとこで「実践CommonLisp」を買ったので書籍分はこれで満足しておくことにする。

見逃したセッションの中では「LL でアート」のセッションがよかったらしい。情報をさがさねば。

あと今回も「ブログでは良く知ってるけど御会いしたことない人」数人と(ほんのちょっとだけだけど)お話できて収穫。ここにまともな名前を書いてないので、いつも「はてなで、sshi*1ってIDでブログ書いてるものですが」なんていうまだるっこしい挨拶をするんだけど、皆さんちゃんと反応してくれるのでありがたい。でもさすがに、そろそろ名前書いとくか。どうすっかな。

*1:ここの発音も考えてないので「えす えす えいち あい」とか言っちゃう始末