第12回 RHG読書会@CSNagoya

11月 17th, 2009 admin Posted in CSNAGOYA, Ruby |

img_0695

第12回 RHG読書会を開催しました。
今回から内容はいよいよ第3部 評価にはいります。
僕はLLの人間のはずなのに、コンパイル型の言語と勘違いしており、勉強会の冒頭から評価ってなんですかという質問をしてしまい会場をなごませました。

メモ

・「評価」の日本語訳は「価にする」というものの方が適切
・評価器はeval.c(9000行ぐらい)
・コアはrb_eval()という関数
・rb_eval()の呼び出し一回がNODE1つを処理し、再帰しながら構文木全体を処理する
・breakやnext実装のためにC言語のライブラリ関数setjump()とlongjmp()を活用
・do~whileが二つのマクロに分かれているため、かならずセットで使用しなければならない

まとめ

・setjump/longjumpが再帰のところで使われていて、僕の頭の中の再帰の「イメージ映像」ではsetjumpするというのは絶対にできないことだったのだけど、イメージ映像が間違っていたのでそっちを変えたら理解できた。
・それでもメモリとかどうなっちゃうんだろうと不安
・あのあたりのコードを「ふんふん」とかって読んでしまう皆はすごい
・Rubyの勉強会のはずなのだが、やっぱりC言語をすらすら読めないと厳しい
・次回は第14章「コンテキスト」から

Leave a Reply