«前の日記(2006年07月13日) 最新 次の日記(2006年07月15日)» 編集

Matzにっき


2006年07月14日 [長年日記]

_ 筑波大集中講義(2日目)

「プログラミング言語の良さ」とか、結構抽象的な話ばかりだった昨日とは 打って変わって実装の話に突入。結構楽しかった。学生さんはどう感じたのかな。

今日の話は

  • 言語処理系のバリエーション
    • 機械語、アセンブラ、コンパイラ、インタプリタとか
  • 言語処理系の構成
    • 字句解析、構文解析、最適化、コード生成、実行環境
  • 仮想機械
  • ゴミ集め

などなど。ゴミ集めの解説には、実際に学生さんにオブジェクトになってもらい、 リファレンスカウントしたり、マークしたり、スイープしたり、 コピーしたり、世代別スキャンしたりしてみた。 Java使ってて、漠然とGCについて聞いたことがあった人でも 実際にどうやって回収しているのか、初めて目で見てわかった人もいたようだ。 レポートでは「GC手法の名前はもう忘れてしまいましたが、実際の動きは一生忘れません」とか 書いてる人もいた。キミ、忘れるの早すぎ。でも、ありがとね。

やってる方も面白かった。

スライドはこちら。 「実演」の部分が学生さんに実際にGCしてもらった部分。

_ failmalloc

なかなかmalloc(3)が失敗する瞬間にお目にかかることはないので、 ついエラーチェックを怠りがちになる。そんな怠慢を強制的にあぶり出してくれるためのツール。おくじさんによる。

Rubyはちゃんとチェックしてる、つもりだったが、 実際には表題のページで「ダメな例」としてあがっている(泣)。

調べてみると、利用しているハッシュ表の実装(st.c)がチェックしてなかった。 だめじゃん。st.cが使っているmalloc()をチェック付き(必要に応じてGCもする) ruby_xmalloc()に置換。あと、win32.cとwince.cにそれぞれ未チェックの場所があった。 うーむ、こういうのって一箇所ダメならダメだからなあ。

_ [Ruby] るビまッ 15号

でたよ。


«前の日記(2006年07月13日) 最新 次の日記(2006年07月15日)» 編集