名古屋Ruby会議01に参加

10/10に開催された名古屋Ruby会議01に参加してきました。
久しぶりにいろいろな人にお会いできて楽しかったです。


いろいろな話がありましたが、笹田さんの「Rubyのメモリ管理の改善」の話が大学の講義のノリで異彩を放っていました。これまでに提案されたRubyGCの改善手法の話が主だったのですが、Lazy Sweepがシンプルだけど効果がありそうだと思いました。Sweep(メモリを解放)するフェーズを一気に行わないで分割して行う事でプログラムが長い間止まるのを防止させる手法だそうです。コンカレントGCの一種?。


Rubyはオブジェクトのアドレスのリスト(heap)をリスト(heaps)で管理しているので、heapsまとめてじゃなくてheapごとにSweepすればいいよねという話になります。Ruby1.8ではheapごとにサイズが異なるが、Ruby1.9ではheapのサイズを同じにしたみたいな話をしていました。細かい数字は覚えてないのですがRuby1.9のソースをCSNagoyaで読んだときにはheapのサイズが違っていた気がしたので、気になってRubyGCのコードをちょっと眺めてみました。最新のソースはheapの長さ固定でした。前読んだときはheapsのサイズを大きくする辺りを間違えてよんでたのかなぁ。Lazy Sweepは1年以上前に実装されて、何かしらの理由で取りやめになったみたいでした。

組込みにつられてほいほい

組込みソフトウェア開発におけるテスト駆動開発というテーマに釣られて3/27にあった名古屋アジャイル勉強会第10回に参加してきました。

テスト駆動開発の基本は「テスト書く -> テスト失敗(Red) -> テスト通るようにプログラム書く -> テスト通る(Green) -> リファクタリング -> テスト通る(Green)」の繰り返しではあるのですが、リファクタリング(再設計とほぼ同義)をしないパターンもありだという話がためになった。それだと設計が結構きまっている職場でも適応できる余地がある。

あと Red -> Green -> Green -> Red ... よりは Red -> Yellow -> Green -> Red ... の方がイメージしやすいかなとか思った。

いまさらながらShibuya.Lisp Technical Talk #2にいってきたことを書く

2/28にShibuya.lisp Technical Talk #2にいってきました。
会場を提供してくださった ECナビさん ありがとうございました。


個人的に興味深かったことをいくつか。


id:higeponさんと休憩時間にmosh関連の話ができた。
私は平日1時間くらいmosh活動をしている(やらない日もあるので土日あわせて平均1時間くらいかもしれない)んですがhigeponさんは2時間くらいだそうで、思ったより時間を割いていないのだという印象。それでも同じ時間でmoshに利いているのは私の軽く5倍はあるだろうなあ。まあ、毎日2時間ってけっこう厳しいし、積み重なると結構な時間だ。
higeponさんがPC操作をしているところを生でみれたのは良かった。タグジャンプを当たり前のように使っていた。
ruby, perlの起動時間が恐ろしく短いのが興味深かった。ruby1.9VM方式だからなにか盗める技術がありそう。CSNagoyaで今後ruby1.9コードリーディングをする方向で進んでいるので、そこら辺を学んでmoshに貢献できるとよいなあ。


黒田さんの厳しい、けどlisp愛にあふれた話は面白かった。そのあとの和田先生の発表時の発言も良かった。
黒田さんがどんな使い方もできる general な言語が好き、もしくはそんな言語以外は選択しがたいといっていたのが印象的。なおかつisoとかで標準化されている必要があるそうで、そうなるとCommon Lisp以外にあるとすれば、C++くらいかもしれないなと思った。どちらかというと利用者が使用する立場よりの考え方かもしれないけど標準化されていることは確かに大切だと感じた。


和田先生からSICPにサインをいただけた。サインペンではなくボールペンで突撃した自分はどうなんだろうか。でも、青い字で Happy Scheme Programming と書いていただけた。大変嬉しい。
その和田先生がいっていた Hardest First は、心理的に厳しいけど全体の効率という面では理想的なのかもしれないなと思った。Hardestを終わったら満足してそこから先に進まないとかもあるかもだけど。




次は7月初旬にあるそうです。次回も参加できたらいいなと思います。

Python東海 第4回目いってきた(1/24)

まずは、株式会社Vish様会場を使わせていただいてありがとうございます。
んで、上のに載ってない感じのを適当にかきつらねる。


8人集まったけど、前日まで半分くらいだった。急遽参加可能なのは敷居を下げる意味では良いと思う。
Djangoは生成されるファイルが少ないのは素敵。Railsのイメージ強すぎだからかもしれないけど。PythonPerlRuby辺りでの主流のフレームワーク開発について何かちゃんと一回通して勉強してみたいとは思う今日この頃。
Java Appletは時代をかなり先取りしていたなという雑談。Webブラウザでも動くし、デスクトップでも動く。RIAを先取りしてるじゃん!という。

CSNagoyaいってきた

ひさびさの勉強会。
Java VMで動くコードをはくのを目指している。
そもそも最近書いてないclassファイルを読むのはその一環。あれはあれで一応完結させるつもりではいるけど、もう少し複雑なclassファイルを解析しないとまずいのでそのためのプログラムを書いていた。

Java Class ファイルを読む(2) - YasuyukiMiuraの日記で読んだconstant_poolを扱うために下みたいなgccを読んで学んだ方法を試した。効果を感じれるところまではやれたので、これってクールだなとか自画自賛してみたり。速度はともかくメモリ効率的にはいまいちな設計だとは思うがgccすげーといったところ。

typedef struct {
    int tag;
    int data[0];
} base;

typedef struct {
    base base;
    int hoge;
} hoge;

typedef struct {
    base base;
    int fuga;
} fuga;

typedef union {
    base base;
    hoge hoge;
    fuga fuga;
} structures;

NGK2008 いってきた(12/20)

またの名を名古屋合同懇親会 2008年忘年会の部。


楽しんできました。プレゼンをその場でつくって場を沸かせるプレゼンテータの方々すごかったっす。
あとどこもかしくも人材不足な印象を受けました。私もmoshのコミッタしてなかったら手を挙げてそうなプロジェクトがありました。手を挙げなくても巻き込まれていくものもあるかもしれないけど巻き込まれたときは巻き込まれた時ですね。というかコミッタしてなかったらとか言い訳くさいなと自分でも感じるので悲しい。まあ必要か無駄かはなんともいえないけどゆとりの時間があるのは確かだと思う。


何をいいたいのか分らなくなってきた。
とりあえず、宿題だった

はやったのでよしとする。