第9回 GC本読書会

11月 22nd, 2010 admin

2010年11月21日にCSNagoya勉強会の「第9回 GC本読書会」を開催しました。
ガベージコレクションのアルゴリズムと実装という本を読む会です。

第10章 DalvikVMのGC

 今回はDalvikVMのGCの話です。DalvikVMってなんのVMと思いましたがAndroidのVMだそうです。AndroidはJavaでかけるのでJVMで動くんだとばっかり思っていたらそうではないようです。Androidがリソースの限られた携帯端末で使うことが想定されているので、それように軽量だったほうがいいとかそういうことのようです。

気になったこと・知らなかったことなど

・すべての親プロセスの「Zygote(ザイゴウト)」って語源は何?
・DalvikVMはマークスイープGC(ビットマップマーキング)
・DalvikVMはレジスタマシン(Javaといえばスタックマシンだが、これはAndroidが「ARM」上で動作するため)
・保守的GCを採用(これも速度を優先)
・基本的に関数名がながい(おかげでわかりやすい)

まとめ

 60ページほどの長い章だったが、あまりトリッキーなことをしていないため割りと素直に読み進めることができた。携帯端末用のVMということでGC一つにしても数多くの工夫がしてあるのがわかり、世界中で使われ始めているAndroidというプロダクトの凄さに触れることができたと思う。
 また章の前半はGCの話をするための下準備として、DalvikVMのオブジェクトのデータ構造やメモリ管理の仕組みについてページが割かれているのですが、この内容がとても濃い。単に「こういうデータ構造だよ」と概要を説明するだけでなく、要点を抜き出したソースコードも併記して詳しく解説がされてある。これだけの解説を書くのにどれほどのソースを読む必要があったのだろうかと思うと頭が下がる。

次回、その他

・「けんろん!」の話を聞くと学生のときに授業についていけなくなったときの感覚を思い出して胸が苦しくなるので見るのも嫌だ
・次回は12月4日NGK忘年会2010(夜の部) : ATNDに合流(12月5日はお休み)

第8回 GC本読書会を開催しました

11月 8th, 2010 admin

磯丸水産 CSNagoya懇親会 GC本読書会

2010年11月7日にCSNagoya勉強会の「第8回 GC本読書会」を開催しました。
ガベージコレクションのアルゴリズムと実装という本を読む会です。

久しぶり

いろいろあって休むことが多かったので2ヶ月ぶりぐらいの参加になりました。
おかげでいつもの持ち物(電源コードとか)を忘れました

あいかわらずGCに関する内容だった

今回は第9章のPythonのGCの後半からでした。Pythonのコードなんて1行も書いたことないのに、どんどんGCについて詳しくなっていきます。(しかも本書中にもPythonのコードはほとんどでてきません)

・Pythonは参照カウントを採用
・メモリ確保にmallocやfreeなどC言語レベルでの層の上に3つの独自のレイヤーを設けて、効率的に取り扱うようになっている
・循環参照はルートを探す=>ルートからたどれないオブジェクト群を削除というアプローチをとっている
・循環参照GCの対象はコンテナオブジェクト(タプル・辞書・リスト)
・GCのデバッグにはgcというライブラリをインポートすると便利
・gc.set_debug()を使えばGCの情報が出力される
・gc.collect() / gc.cdisable()でGCの発動を制御できる

まとめ

・今日もGCについて勉強した
・中日負けた
・懇親会は磯丸水産、美味しいし、値段も手ごろ、活気があって楽しめた
次回はDalvicVMのGCをやる予定(11/21)

謝辞


結婚祝いにCSNagoyaの皆さんから素敵なグラスとワインを頂きました。
有難う御座います!

第6回GC本読書会を開催しました

9月 6th, 2010 admin


CSNagoyaで第6回GC本読書会を開催しました。

今回で本書の前半部分であるアルゴリズム編が終りました。

世代別GC

「若い奴は死にやすい」をGCにとりいれたもの。メモリを2~3ぐらいの領域(世代)に分けて、オブジェクトを寿命に応じて振り分ける。すべてのオブジェクトはいったん第1世代の領域にいれられ、そこでGCされなかったものが第2世代に移動される。第1世代の領域は頻繁にGCされる(マイナーGC)が、第2世代以降の領域はメモリ不足などの場合以外はGC(メジャーGC)をしない。
こうしてGCが不要な可能性が高いものをGCから除外することで効率UPを図っている。

JavaやPythonなどでも取り入れられているので、割とバランスのとれたよいGCなのかもしれない。

トレインGC

世代別GCの中でもメジャーGCのアルゴリズムを工夫したもの。オブジェクトを参照関係によって複数の列車のように並び替えを行うことで、メジャーGCのスピードUPをさせたもの。

その他懇親会・雑談


グリーンバンド(みずぴー日記)を入手。自分の戒めになるだけでなく、テストに恵まれない人たちが救われるらしい。(まだ在庫あるらしいです / 帰ってから家族に環境活動でも始めたのか心配されました)
・圏論を勉強する「けんろん!」という会が発足しようとしているらしい。なぜか!マークの数でもめていました
・岡山からきびだんごの差し入れ
・わらびもち愛好会からワラビモチの差し入れ
・水筒にカルピスをいれてもっていったが欲張ったため濃すぎて気持ち悪かった
・名古屋LISP・名古屋Emacsとか
・GC本読書会の次はなにやろうという話。僕はカジュアル路線に戻りたいかなー
・料理がしたい・わらびもちセンサーが作りたい(勉強会ってなんなんだろうっていう議論が必要)
・既婚者の勉強会参加の難しさ
・逆に勉強会という名目であれば家族をおいてスノボなどもいきやすい
・名古屋Ruby会議の準備しないとね

[速報]「ガベージコレクションのアルゴリズムと実装」の読書会をします

4月 1st, 2010 admin

gc

ガベージコレクションのアルゴリズムと実装」という本がでましたのでCSNagoyaで読書会をすることになりました。詳しい内容などはまた後日案内させて頂きます。

受付URL
http://atnd.org/events/3898

第16回RHG読書会とCSNagoya3周年の会

2月 8th, 2010 admin

2月7日(日)にCSNagoyaのRHG読書会が開催されました。今回はCSNagoyaが2007年02月11日に「たのしいRuby」の読書会として始まってから3周年ということで発表大会も開かれました。

RHG読書会

第16章 ブロックのところを読み、ブロック付メソッドがどのように評価されるのか。メソッドとブロックの対応がどう保持されているのかがわかりました。

発表会

1人15分ほどで好きな話題で発表

私は「Rubyで作る奇妙なプログラミング言語 ~Esoteric Language~」について発表しました。この本はbrainf*ckやwhitespaceなどの特殊な言語を実装しながら言語を作るということを学ぶ本です。
タイトルからして不真面目な内容かと思っていたのですが、全然違う!数十行でコーディングできる言語から始まり、インタプリタ、スタック型、VM型の言語の作り方から、構文木の解析などをやさしく段階的に学べる非常に優れた本だったのです。プログラミング言語ってどうやって作るんだろうという人にはとてもオススメです。(発表で使ったネタ言語はこちらから見ることができます)

そのほかの人の発表をざっくり

最近の半導体について cho_tekitouさん

最近の最先端の半導体について話して頂きました。全然知らない分野だったので面白かった。
・450mmウエハーの工場を作るには8000億円~1兆円かかる
・EUV(光の波長を短くする),TSV(縦につむ)という方式の実用化はまだ先らしい。ムーアの法則の限界が来ている
・シミュレーションなどではまだまだ早いCPUが必要。マシンの分散などをしても通信のコストがあるのでこの分野では使えない

15分でわかる継続 lequeさん

Rubyにもある継続の話。2度説明してもらってやっと継続がなにかその場ではわかった気になった。
「継続とは計算の未来」
とのこと。よい頭の刺激になりました。

こういう自分の知らない概念は「いつうれしいのか」というのを聞くとすんなり理解できたりするのだけど、継続はそういうたとえもあまりないっぽい。

組み込み系の開発モデルについて Yasuyuki Miuraさん

組み込み系では設計からテストまでどのような順序で行われるのかという話でした。人の命を左右する可能性のあるプログラムをつくるというのは大変だなと思いました。

Scalaの開発Tips maedaさん

Scalaのsbt (simple-build-tool) とmockitoの紹介。Scala開発の際には、sbtを使うと自動でコンパイルとかしてくれて非常に便利だし、テストの際はモックを作るのにmockitoというのが便利ですよという紹介でした。

ハイプ曲線をしっていますか? dominion525さん

あるテクノロジに対する期待度の変化の曲線のこと。「このテクノロジーはいま○○だよね」と当てはめて考えるのが面白かったです

エンタープライズをハックしよう かたぎりさん

エンタープライズをハックしようということで、RspecとCucumberの話でした。もうテストコードをテストコードを呼ぶのはやめて、コードの一部と考えようという意見が印象的でした。確かにそう思うべきなのかもしれません。僕もRspecの本を読んでみたいと思いました。

中華料理について phiripさん

4大中華料理である、「北京料理」「広東料理」「四川料理」「上海料理」の地が中国の地図でいうとどこなのかという話と、この発表の後は何料理を食べに行くかという話でした。

まとめ

・みんなで発表は楽しい!
・CSNagoyaは4年目に突入。これからも楽しくやっていきたい