GC: Garbage Collection

GCは私のような日曜プログラマの強い見方だ.正直,GCのない言語はよほどのことがない限り使う気がしない(動的メモリ管理の要らないおもちゃコードなら別だが,GCすらない言語にはそもそも気軽なプログラミングを支援する仕組みがないことがほとんど).
C/C++のライブラリとして実現されたHans Boehm*1氏の有名なGCライブラリ(いわゆる "Boehm GC" )の読みやすい解説としては,あのw3m*2の開発者AITOさんの Boehm GCを使おう
http://homepage2.nifty.com/aito/gc/gc.html
や,東京農工大並木Lab笹田さんの Boehm GCを使ってみる
http://www.namikilab.tuat.ac.jp/~sasada/prog/boehmgc.html
がある.いっぺん使ってみたいものだ.
GCについてのFAQのまとめもある.けっこう難しいことまで載ってるのでなかなか読みきれない.
http://www.iecc.com/gclist/GC-faq.html
GCの原理についての解説はとりあえず理情コンパイラ演習の資料 一般教養としてのGarbage Collection を読むつもり.ドラゴンブックとかタイガーブックにも載ってるのかな?
http://www.is.s.u-tokyo.ac.jp/~vu/01/jugyo/processor/process/soft/compilerresume/gc/gc.html
あとJava関係の資料にもGCの解説が多いようだ(JavaVMは優れたGCを使ってるから).
GCがあるかないかでプログラミングの負担が全然違う.C/C++だと主にメモリ管理ばかり考えるハメになる. ...というか今日思ったのは,プログラミング言語の使い易さって2004年現在では「GCがある/ない」が一番大きいのではないだろうか.
そのうちGCは(デバイスドライバとか以外の普通のアプリケーション開発では)当り前の機能になるのだろう(もうなりつつある?).MSの推すC#GC搭載だ.でもやはりCを使う場面は今後も多いだろうから,うまくBoehm GCを活用できればよいと思う.

*1:Boehmはベームと読むと思う.

*2:w3mはメモリ管理にBoehm GCを使っている.10数回に1回,ページを開くのが目立って遅くなるのは,回線の遅延ではなくGC (Mark & Sweep) を行うからだ.