第13回 RHG読書会@CSNagoyaComments

12月 7th, 2009 admin

第13回 RHG読書会を開催しました。
今回は第14章 コンテキストからでした。プログラムで言うコンテキストというのは内部状態とかっていう意味みたいです。

メモ

・C言語では内部状態を管理するスタックが1つだが、Rubyは7つある
・それはイテレータやProcを実現するため
・そのおかげで複雑さは7倍ではなく、約20倍程度
・種類としては、メソッド呼び出し記録、ローカル変数スコープ、ブロックスコープ、現在のFRAMEがイテレータか、ブロックローカル変数スコープ、メソッド定義クラス、クラスのネスト情報

まとめ

・スタック7つもあってそれらが連動しているというのは僕には複雑すぎる
・「このフラグは機能Aのためにある」「ここでGC避けをしているのはC1がC2のときBになることがあるため」など、正しく動作するための微調整のようなものはどの程度最初から行われていたのか気になる(そんなの最初から想定できるの?できてたら天才じゃない?
・Matzのことを今まで「Rubyという素敵な言語を作った人」としか思っていたけど、「Rubyという素敵な言語を作ったとんでもなくこだわりが強く、かつ根気のある人」という感じに変わった。Rubyを完成までもっていったモチベーションというのはすごいものがあると思う。
・だんだんC言語だけじゃなく、Rubyのことも知っていないと読めない部分がでてきた(各種スコープの範囲についてとか)ので、次回からRubyの本をもっていったほうが良いかも(逆にいままで不要だったのがすごい)
・次回は14.3から

懇親会など

・事務所に泥棒がはいって実質被害0だったが、動揺したため、電源タップ、ルータなどの大事な道具をすべて忘れた
・雑誌IKKIが売っている本屋を探せ
・最近評価が下がっているとはいえビレッジバンガードの小説の揃え方は上手だと思う
ポポロのもつ鍋はうまい

第12回 RHG読書会@CSNagoya

11月 17th, 2009 admin

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章「コンテキスト」から

第11回 RHG読書会@CSNagoya

11月 2nd, 2009 admin

1721b

今回は第12章構文木の構築をやりました。

メモ

・Rubyプログラムは構文木に変換される
・構文木のノードはNODE型で表される
・ノードはRubyオブジェクトなのでガーベージコレクタが生成・解放を行う
・ノードにはファイル名、行番号が保持されている
・葉・・・リテラル、変数参照など
・枝・・・ifなど
・elsifとelse ifは構文木になると違いはない
・優先順位の違いも構造がその情報を含んでいるのでandと&&なども同じになる
・「32-(10+8)」とあるが「32-(11+8)」(正誤表より)
・意味解析・・・変数を定義前に使っていないかなどのエラーはここで補足
・value_expr()で末尾再帰の除去のテクニックが使われている、こっちのほうが速いそうだ
・ローカル変数が定義されるのは「現れたとき」
・ローカル変数、ブロックローカル変数はst_tableで管理されていない(スコープ管理のため?)
・しかもブロックローカル変数はローカル変数と実装が違う(なぜ?)
・図12.12はlequeさんのブログで補足して下さった(bbとeの間にもヘッダが必要じゃねの?という件。結果=>必要)

まとめ

・ローカル変数が「現れたとき」に定義されるというのが気持ち悪いなと思った。「初期化されたら」のほうがわかりやすい気がするが
・構文木っていうのが具体的にイメージできた。本などではツリーの絵が描いてあるが、それより横向きのフローチャートのような図で書いたらすんなり頭に入った。枝とか葉とかは名前としてはいいが、解説に使われるとわかりにくい気がする。
・次回は第3部 第13章 評価器から
・次から『Rubyソースコード完全解説』正誤表はきちんと見よう
・RGHが終ったらなにをやりたいか
-なんか成果物が残るものがいいんじゃないか
-Prolog => 脈絡が無さ過ぎるらしい
-Coq入門と証明駆動開発 => フランス語の文献を読む必要があるらしい
-データベースを作る => もうすぐ俺俺DB開発のブームが来る
-ふつうのコンパイラ読書会 => CSNagoyaの正しい流れ

第101回CSNagoya 第10回RHG読書会にいってきた

10月 19th, 2009 admin

img_06251

勉強会100回開催に寄せて

この間の名古屋Ruby会議をもってCSNagoyaの開催数が100回を超えました(分科会などをふくめない回数で)

CSNagoyaを立ち上げたのは2007年1月でした。そのときにドミニオンと
「カーネル読書会に開催数だけでも追いつこう!疲れたらやめよう。」
という、今思うと本当に恥ずかしいだけじゃなく、まったく無意味な目標を設定して、疲れたらやめていいはずなのに未だに続いている僕らはどんだけ日曜日に暇なんだよと。

感じたのはそれだけです。
(一方的に感じている奇跡として、カーネル読書会さんも次回で100回開催を迎えます)

今週のRHG読書会

第11章の11.4 修飾子から。以下クラメソッドで
・yylexと発声すると「わいわいレックス」みたいで楽しい雰囲気がでる
・メソッドの括弧省略のせいでスキャナは結構泥臭い
・条件式や括弧のネストを(なぜか)ビット単位のスタックで管理しているので、それらは32ビットマシンならネスト数は32を超えられない
・ひたすら括弧省略のせいで泥臭い処理、開発時は新しい問題がでるたびに頭が痛かっただろうなと勝手に想像
・LALR(1)の先読みの逆用というのをしている。結構トリッキーなことをしていることに驚いた
・{~}をカーリーブレースと読んでいる人がいた。かっこいい。 調べた=>キーや記号の読み方
・do~endと{~}との区別のところは、なんとなくしかわからない

LT・懇親会

・ニコテックはテッキーな話題以外も多い
・ロケットネタに意外とみんなときめかないみたい。(缶サットは本の帯を読んだだけでテンション下がった覚えがあるぐらい憧れがある、あと映画ロケットボーイズとかも死にたくなる)
lequeさんのキーボードをみせてもらった。キネシスすごい。猛毒。あのカーブは極端だけど、親指活用は本気で考えたい。
・他にも入力ネタがあるようなので楽しみ
・思い出せないけど次はPrologをやろうという流れになっていた

OSC2009 Nagoyaが開催されました

8月 24th, 2009 admin

e794bbe5838f-167
8月22日(土)にオープンソースカンファレンス2009 Nagoya - オープンソースの祭りだぎゃーが開催されました。僕は去年に引き続きスタッフとして参加し、今年は前夜祭幹事、CSNagoyaブース担当、勉強会大集合パネラー、2次、3次、4次会会計としてオープンソースというよりはアルコールと関係する部分で関わらせていただきました。

オープンソースカンファレンスとは

公式サイトによると「オープンソースの今を伝えるイベント」ということです。オープンソースに関わる人や興味のある人が集まってセミナーを開いたり、展示をしてオープンソースを広める活動をしたりします。

写真で振り返るOSC

e794bbe5838f-242
前夜祭は「つばさや 桜山店」で行われました。すばらしいスタッフの皆さんはもちろん、遠方から来てくださったオープンソース関連、勉強会関連の有名人のかたから楽しい話をたくさん聞かせていただきました。
g新部さんから聞いた、なぜ日本人はソフトウェアが自由でないことに疑問をもたないのかという話が特に印象的でした。

e794bbe5838f-204
場所は去年と同じ名古屋市立大学 山の畑キャンパス。

e794bbe5838f-216
朝っぱらからたくさんの人たち。

e794bbe5838f-155
CSNagoyaも去年より小さいながらパネルを展示。

e794bbe5838f-185
Ruby東海の片桐さんの発表「日常で使うRuby」。初心者向けの内容ということでしたが、irbの中でirbを立ち上げるという玄人技や、.irbrcでirbの設定を書けるという話など、まったくの初心者でなくても楽しめる話が盛りだくさんでした。

e794bbe5838f-219
こちらはCSNagoya dominion525氏の発表、「Key Value Storeについて調べてみよう」です。地味な内容にもかかわらず結構な人が入っています。続編があるそうなので期待!

ちなみに勉強会大集合では私もパネリスト&CSNagoyaの紹介者として少し喋らせてもらいました。自分の参加している勉強会を他の勉強会と比較してみるという機会はなかなかないので面白かったです。特に男女比の質問で、他の勉強会には結構女子がいたのは驚きでした。(まぁCSNagoyaにはW妖精がいるのでよしとしましょう)

e794bbe5838f-223
あっという間の閉会式、最後のジャンケン大会ではStaffなのに空気を読まずに勝利してしまい、Microsoftのソフトをもらってしまいました。有難う御座います!

OSC終了後

e794bbe5838f-175
くっ!くそ!WARABIの烙印がうずく!なぜだ!こんなときに。。。*1

e794bbe5838f-176
と、思ったら懇親会の司会がワラビモチ愛好会会長でした。去年に比べてビール、食事の量がUP!今年はたくさん飲めました。きちんと仕事をした後なのでおいしー!

e794bbe5838f-173
2次会はすしやのがっこうきゃべつばたけ。コストパフォーマンスがハンパない。安すぎる

e794bbe5838f-231
3次会。

まとめ

最後は4次会までやって始発の時間に解散しました。400人ぐらいの参加者があったそうですが、あれだけの会をたいした役割分担もせずに成功させてしまうのはすごいです。その辺はやはりびぎねっとさんのノウハウや、実行委員の人たちの素敵な人柄が重要だったと思うし、その上でさらにスタッフの積極的なボランティア精神だったり、参加者の参加姿勢なんかも欠かせないと思うとなかなか貴重なカンファレンスだったなと思います。

個人的にはOpenStreetMapという自由な地図をつくろう!というプロジェクトが面白いと思ったので、できるところから参加してみることにしました。

では、また来年

*1・・・Wordpressのタトゥーシールです。ありがとうございました。