SICP 勉強会 加速会に行ってきた

4月 16th, 2009 admin

claなんとかさんが開催してくれた
SICP 勉強会 加速会 #01 をやるよ
に4月11日12日と行ってきました。

これは「計算機プログラムの構造と解釈」(愛称:SICP)という本をCSNagoyaで読んでいるのだけど、問題が面倒すぎて毎回3問ずつぐらいしか進まなくて、(幸運にも)このペースで進んだとして終了まであと3年かかるらしいことがわかったので、3年もたったらロンドンオリンピックだし、それに俺30歳だよ!やってらんねえよ!ってわめきたかったけど、他に30歳超えている人が普通にいるので口に出せなくてっていうそういう感じの焦りからとりあえず泊まりでやれば一気に進むんじゃないか?というclaさんらの提案のもの開催された会です。
当日は天気がよくて、窓を開けると本当に昼寝日和といった感じで気持ちのよい勉強会になりました。

場所

旅館かう楽
名古屋市瑞穂区のかう楽という旅館でした。素泊まりで5,500円。地下鉄から徒歩1分、LAN有りなのでなかなかいいですね。

様子

dsc00014
ネットワークはclaなんとかさんが整えてくれたので何の心配も要りませんでした。僕はプロジェクターをもって行きましたが、今回は活躍できませんでした。

dsc00016
まさかのノンアルコール。男7人が同じ部屋に集まり、ろくに外出もせず深夜までカタカタ夜までやっていたので旅館のおばちゃんはさぞ気持ち悪く思ったでしょう。

dsc00017
布団を敷いてもなお勉強するメンバー。

まとめ

・12時間ぐらいやったのに5問ぐらいしか進まないSICP恐ろしい
・アリッサはみんなのために頑張ったのにフルボッコでかわいそう
・なんとかして問題も解きながらお酒を飲みたい
・準備が嫌いなので泊りが嫌いな僕も近ければ気が楽ということに気がついた。またやりたい

第1回RHG読書会を開催しました

4月 8th, 2009 admin

RHG(Ruby Hacking Guide)と聞くと、どうしても「銀河ヒッチハイク・ガイド」を思い出してしまう私ですが、5日(日)にCSNagoyaとしてRHG読書会を開催しました。

Rubyのソースコードを読むという、CSNagoyaなのにカジュアルでもなんでもない内容ということもあって、また参加者1人の自習時代に戻る覚悟もしていましたが結局10人以上が集まる会になりました。

個人的な目標

僕は大きなコードを読んだことがないというのと、Rubyが好きなのだけど、いまいちRuby会議などで堂々とできない自分にサヨナラするのが目的なので
・ソースコードの読み方の作法とコツを習得
・Rubyistを名乗る
というのを目標にして参加しました。

まとめ

・Rubyのオブジェクトは構造体で、扱うときはVALUE型(unsigned long)のポインタ経由で扱う(unsigned longをポインタにキャストする)
・すべてのオブジェクトがstruct RBasic型のメンバbasicをもっていて、こいつが自分の構造体の型や各種フラグ、そしてクラスオブジェクトが格納されている
・VALUEがvoid*でないのは、小さな整数、シンボル、true、false、nil、QundefのときはVALUEに直接値を入れるため
・上記のような値と、オブジェクトのポインタとの値が重複しないように、整数は奇数の値、オブジェクトは4の倍数、シンボルは奇数ではなく4の倍数でもない数字にする、などという工夫がされている
・インスタンス変数を始めからもっているオブジェクトとそうでないのがある。これはメモリの無駄を省くため(RStringにインスタンス変数をセットして検証してみたい)
・struct RArrayはリストでは無い、以前にRubyでリストを自前で実装したら、Array.pushとかより高速に動作するようになって驚いたけど、そういうことらしい。

感想

C言語で書かれたオープンソースのコードを読むのは恥ずかしながら初めてだったので、まずソース(最初はruby.h)を開いただけでわくわくしました。難しいかと思われた内容も、本の解説がとても丁寧なおかげで今のところなんとかついていけているかなという感じです。
そして、いままでRailsでなんとなく使っていたシンボルの意味がよくわかったり、以前作ったリストが高速だった意味などが、それこそソースレベルで理解できてすごく気持ちがよかったです。

Rubyの歴史というのは10年程度で、それが長いのか短いのかわかりませんが、それでも10年以上もMatzを始めとする日本のスーパーハカーの人達が磨きに磨いたコードを読むというのは意外にもエキサイティングであり、贅沢なことなんだということを体感できました。こんなものが簡単に入手できてしまうオープンソースの文化に感謝をしつつ、次回の以降の勉強会にも取り組んでいきたいと思います。

RHG(Rubyソースコード)読書会、パタヘネ読書会開催のお知らせ

4月 1st, 2009 admin

CSNagoyaという勉強会の4月からの予定についていろいろ固まりましたので案内させて頂きます。

概要

4月からのCSNagoyaは3つの勉強会を開催する予定です。

・RHG読書会(RHGを参考にRuby1.9のソースコードを読む会)
・パタヘネ読書会(コンピュータの構成と設計を読む会)
・SCIP読書会(計算機プログラムの構造と解釈という本を読む会・現在すでに開催中)

以下、それぞれについて詳しく解説します。

RHG読書会

Rubyソースコード完全解説
Ruby、アルゴリズム、Haskell、コンパイラと学んできたCSNagoyaのソフトウェアライン。2009年はRubyのソースコードを読みます。
勉強のベースとなるのはRubyソースコード完全解説という本。この本を参考にさせていただきながらRuby1.9を読んでいきます。東京では「RHGの逆襲」という会が開催されており、今回はまさにこの企画を参考にさせて頂いているものの、あちらの反則ともいえる豪華メンバーとは比較になるはずもなく、いろいろな格差に落ち込みながらも、とにかくなんとか開催する予定です。

Rubyの基本的なところからはじめるのでRuby自体に詳しい必要はないとおもいます、読んでいくコードはC言語になるので多少のC言語の知識は必要になると思います。僕自身はRubyは入門書を読み終えて普通のスクリプトなら書ける程度、C言語については学生のときに少し書いた程度です。

この勉強会がおわったあとには

・C言語に詳しくなっている
ruby-devで言っていることがなんとなくわかる

パタヘネ読書会

コンピュータの構成と設計~ハードウエアとソフトウエアのインタフェース 第3版 (上)
パタヘネ本と呼ばれる本書を読み、コンピューターのハードウェアやアセンブリ言語について学びます。多くの大学の教科書にも採用され、「コンピュータの名著○冊」みたいな本には必ずと言っていいほど選ばれるほど有名な本です。

SICP読書会

計算機プログラムの構造と解釈
この本を読みながら、練習問題を解いていく会。すでに8回ぐらい開催しており数学が苦手な僕には苦痛な問題もありますが、そういう問題は飛ばしても大丈夫(多分)、あと日本語訳がどうのとか言われますがそれもたいした問題ではないことが最近わかってきました。
この本はプログラミングということに関して僕に毎回新鮮な驚きを与えてくれるすばらしい本です。もしあなたがプログラミングが好きなら、プログラミングをもっと楽しくしてくれる最高の(少し厳しい)先生になってくれるはずです。

詳しくは一回目の案内を見てください。

参加方法など

スケジュールなどはCSNagoyaホームページで案内しています。参加は随時受け付けていますのでMLでどんどん参加表明をしてください。では!