ToDo:
最近になって、ようやく体調が回復してきた。検査結果は基本的に異常無しだったし、やっぱり精神的なものが原因だったのか。とはいえ、特にストレスの元となるような事があったとは思えないのだが、自覚して無いところで、何かストレスを貯めてたのかもしれない。この調子で完治すれば良いのだが。
更新が滞ってる間に、コメントスパムが凄い量になってる。さっさと何か対策をしなければ。調べてみると、tDiary用にコメントスパム用のフィルタプラグインがあるようなので、これを使ってみるか。
Dolphin(JDK 7)の追加機能として、クロージャが提案されたというお話。以前からDolphinにクロージャが載るという話はあったが、どのような形で搭載されるのかはわからなかった。今回言及されている案は、より具体的なものになっている。
この案で自分的に一番嬉しいのは、型として新しくFunction Typeが導入されること。C#のデリゲートだと、ある型の関数、例えばint型の値を受け取ってint型の値を返す関数のようなものを値として扱いたい場合、一度delegate int intFunc(int);のように宣言しなければいけないのが嫌だったので、Javaが同じようにならなかったのは良かったと思う。
気になるのはNon-local transferの項で、クロージャからそれを囲むメソッドの外側へreturnするための方法について言及されていること。どうやら、
return メソッド名:式;
のような形でクロージャからそれを囲むメソッドの外側へreturnできるようになるらしい。これは確かに欲しい機能なのだが、どうやって実装するのかが疑問だ。現在のJava VMを前提にするなら、簡単に実装するには例外を使った実装が思い浮かぶのだが、それだと性能が出ないだろうし、
String indexOfHoge(List<String> lst){
try {
int i = 0;
forEach(lst, (String s){
if(s.equals("hoge")) return indexOfHoge:i;
i++;
});
}catch(Throwable e){
/*
* もし例外を使ってNon-local transferが実現されるなら、
* ここでcatchされてしまうような気が…
*/
...
}
}
みたいなコードを書かれたらどうなるんだろうという疑問もある。ちなみに、クロージャをメソッドの外側へ持ち運ばれて、return対象のメソッドがスタックから既に無くなっているような場合は、UnmatchedNonlocalTransfer例外が発生するようなので、それについては心配はいらないようだ。
あと面白そうなのは、無名関数のリテラル -> メソッド1つのインタフェースへの自動変換。この機能は、以前Onionに導入しようかと検討したことがあったが、なんだかんだで結局実装していない。たとえFunction Type(やクロージャ)を導入しても、結局、それを有効に活用したライブラリが整備されなければあまり意味が無いので、既存のライブラリでもクロージャを活用できるこの機能は、是非とも実現して欲しいと思う。
木山さんがLLRingのために前日から上京&サイボウズラボを見学されるということで、それに便乗してサイボウズラボを見学させてもらった。soutaroさんとつくば駅で合流した後、Texで東京へ。サイボウズラボを見学したのは今回が初めてだが、広々としていて快適そうで、気持ちよく仕事ができそうな環境に思えた。見学後はサイボウズラボで立食パーティー(?)。木山さん、竹迫さん、soutaroさん、k.inabaさん、sumiiさん、ささださん、まつもとさんをはじめとする方たちとお会いすることができて、いろいろな話をすることができて、大変楽しかった。個人的には、もうちょっと話を聞いていたかったが、終電が近づいてきている&明日もあるので、23:00頃に解散することに。
LLRingの感想は、また後で書くが、それはともかくとして。LLRingのラストに抽選会があり、表題の本があたった。ただ、自分はPerlは全然使わないので、これをもらっても正直使い道が無いなあ…と思ってしまうのであった。
9:00頃にインターネット喫茶を出発して、秋葉原で少し時間をつぶした後に、地下鉄で新木場へ。新木場に到着して駅から外に出たところで、soutaroさんと偶然合流して、会場へ。
正直、毎年のことで、そろそろ飽きてきた感もあるLanguage Update。実際の発表順番は順不同なので注意。
Dukuleleを鳴らしながらの発表。内容は、JDK 6でJavaからスクリプト言語を呼び出すためのAPIが標準ライブラリに取り込まれるよというお話。内容については、既に知っている話だったので特に印象は残らなかったが、Dukuleleで弾き語りというのは新鮮だった。ただ、照れがあったのか、途中からトーンダウンしていたようなのは残念。
FORTHは拡張性が高く、実装もしやすい言語だよ&今でも現役だよというような感じ。個人的には、FORTHスゲーと思わず言ってしまうようなのを期待していたのだが、そういうのでは無かった。残念。
去年の発表と内容がかなりかぶっていたこともあって、あまり印象に残っていない。
唯一、ハワイから生中継という形での発表。内容は、もうすぐ次の仕様であるR6RSが出るよー、というお話。音声によってスライド切り替えの指示を行っていたせいで、切り替えのタイムラグが発生していたのがやや気になった。
前回もそうだったが、今回も斬新なデモをして会場を湧かせていた。ちなみに今回のデモは、Croquetを使った仮想?ペアプログラミング。
一番手だったせいかかなり緊張されていたようで、ものすごい早口だった。内容自体はふつうのHaskellの紹介といった感じだった。
馬?(後にラクダと判明)の被り物をかぶって参戦。発表スライドの所属も「富士サファリパーク」になっていた。内容自体はごくふつーのOCamlの紹介だったが、途中で酸欠になって苦しそうだったのが、会場の笑いを誘っていた。今回唯一、体を張った?発表だったように思う。
毎年のように起こる、プレゼンの呪いは今年は起こらなかった模様。 内容は、Ruby1.8.5リリースしましたというもので、いたってふつー。
use Dan::Kogai;これにつきる。
内容は一言でいうと、「Lispサイコー」。
関数型プログラミングの定義やそのメリット・デメリットなどについてスピーカーがディスカッションするセッション。Lisp系の人とOcamlやHaskell系(とくくるのが正しいかはわからないが)の人で、関数型プログラミングに対する認識の違いが見られたのは面白かったが、議題の設定の仕方がまずかったのか、議論が発散しがちだったのはイマイチだった。
Ruby,ActionScript,JavaScript,awk,Pythonの5つの言語で書かれたじゃんけん対戦プログラムについて、お互いに対戦させて勝敗を競うというセッション。Pythonの人がワンライナーで書いてたり、awkがネタに走っていたのが印象的だった。逆に言えばネタに走らなければ面白みにかけるとも言える。唯一?ネタに走らず勝つためのアルゴリズムを実装してきたJavaScriptが、圧倒的な強さで優勝していた。
正直言うと、かなりウトウトしていた。自分はWebアプリケーションフレームワークというものにあまり興味が持てないのかもしれない。内容については、あまりよく覚えていないので、特にコメント無し。
LLで作った作品を自慢するセッション。Lightning Talkみたいなものか。 発表者による出来不出来が一番激しいセッションだった。
GaucheからCライブラリを経由してRubyを呼び出すデモは傑作。かなりウケた。
去年のLLDNや未踏ユース成果発表会などで、何度も見ているせいかイマイチ新鮮味にかけた。発表自体は良かったと思う。
うーん。このイベントの参加者は、一度どこかで聞いたことがあるんじゃないかなあ、ということありきたりな話ばっかりだったのが残念。
話自体は興味深いのだが、発表が致命的にまずいように思えた。スクリーンに小さいフォントで書かれた大量のコードを表示して、ここがこうなって〜とか説明されてもわからない。
tcsh -> realcsh、ksh -> realkshへの話の運び方が大変うまい。
機能的には便利そうだが、リストボックスから変換候補を選択するのはちょっと使いにくいような気がした。AjaxIMEみたいなインタフェースにすることはできないのかな。
なんでもPlagger。大量のスライドを短い時間で消費しつつ、ウケを取ることを決して忘れない姿勢に圧巻。このセッションで一番楽しめたプレゼンだった。
リング上から投げられたボールをうまく受け取れたら、景品をもらえるという抽選会。自分は上に書いたPerlネットワークプログラミングという本があたった。
追記:LLRingのサイトに感想トラックバックを送るときにミスって、全文掲載されてしまった。ギャー。
スピーカーも豪華だし、内容的にも自分の興味があるので申し込んでみることに。今回は、去年のBinary 2.0カンファレンスのときの教訓を生かして、申し込みが始まってからすぐに申し込むことにした。
で、12:00になった瞬間、さっと名前とE-mailアドレス、コメントを書いて送り、申し込むことに成功した。しかし、その後、恐るべきことが。なんと、再度ページをリロードしたら、定員に達したので申し込みを閉め切ったという表示が。申し込み開始してから、2〜3分しか経ってないのに、凄まじい人気だ。
_ ささだ [実はcall/ccだったりして。 ]
_ M田 [Throwableのインスタンスを比較して、違っていればcatch節の中からthrowしなおせばできるんでは。 ]
_ みずしま [> ささださん call/ccだったらやばすぎですな。果たしてVM変更無しで&言語仕様の互換性を保ったまま実現できる..]