Kansai.pmでコルーチンについて発表してきた

Kansai.pm#11にて「Perlで学ぶコルーチン」という発表をしてきました.

だいぶ前のRuby勉強会でRuby 1.9のFiberをみてPerlでもいろいろやってみていたので,その時しらべたことを中心にぐだぐだとしゃべりました.

コルーンは継続や並行処理などいろいろな概念がからんでいて調査がたいへんでした.PerlでのCoroの実装がどうなっているのかもう少し詳細に調査/発表できたらよかったです.

スライドにも書いてますが,Ruby 1.9のFiberとまったく同じインターフェースをもったFiber.pmをつくってみました.githubで 公開しています.

http://github.com/hakobe/perl-fiber/tree

以下のように簡単にFiber(=コルーチン)をつくれます.Coro::Stateとちがってコルーチン中断したとき(= Fiber->yield時)に値が返せるので便利です.

use Fiber;
my $factorial = Fiber->new(sub{
    my $n   = 1;
    my $val = 1;
    while (1) {
        $val = $val * $n++;
        Fiber->yield($val);
    }
});
$factorial->resume; #1
$factorial->resume; #2
$factorial->resume; #6

どうぞご利用ください.

今回は聞いていて勉強になる発表がいろいろあって,非常に参考になりました.なかでも吉田さんの発表からはアーキティクチャとアルゴリズムの知識の重要さがすごく伝わってきました.アーキティクチャとアルゴリズムの知識をどういんして処理速度を300倍にするとかすごすぎる.古き良き知識もしっかりみにつけたいですね.

ともあれ,運営のみなさま,ホストのid:naoyaさん,ほかみなみなさま,本日はどうもありがとうございました.次回もたのしみですね.