Lisp初心者のくーむです。
なんとなくLispアドベントカレンダーに登録してしまいました。 こちらLisp Advent Calendar 201621日目の記事になります。
今回は地道に1年続いているSICP読書会の様子についてちょっとだけご紹介しようと思います。
オンラインSICP読書女子会について
去年12月に、Ladies++という女性向けのC++コミュニティを立ち上げました。
コミュニティの活動の一環として、何をやろうかと考えていた時、
(気にはなるけどあの厚くて練習問題が多く1人ではなかなか続けられない)SICP読みたいねー、という話になりSICP読書会をはじめました。(C++関係ない・・・)
2016年1月からはじめ、だいたい2週に1度程度開催しており、
1年経った現在、2.3節をやっています。
SICPとは(一応)
コンピュータとデータ構造の基礎がつまったあの本です。
- 作者: ハロルドエイブルソン,ジュリーサスマン,ジェラルド・ジェイサスマン,Harold Abelson,Julie Sussman,Gerald Jay Sussman,和田英一
- 出版社/メーカー: 翔泳社
- 発売日: 2014/05/17
- メディア: 大型本
- この商品を含むブログ (2件) を見る
英語版や、非公式日本語訳版などが無料で提供されています。 ふつうの技術書というよりも、大量にある問題を解いていく問題集というかんじです。 基本的にSchemeで書かれています。(Python版(英語)も存在します)
開催の様子についての紹介
どういった形式で開催するのか
まず読書会を始める前に、こちらに悩みました。
イベントサイトやブログなどでSICP読書会を開催している様子を探ってみたところ、
参加者の中で当番制で問題を解いてくる人をまわし、
その人が問題の解説をしていくというパターンが多いように思いました。
第一回目は私達もそのようにしてみたのですが、
解いてきていない人たちが次の回でついていけない場合があり、
基本的に
「全員が解いてきて、ソースコードをどこかに上げ、みんなで他の人の解答について議論し合う」
という形になりました。
また、私が場所を確保することができないという問題があったため、 開催場所はコミュニティのSlackの#sicpチャンネルになってます。
基本的には毎週水曜日21:30~22:30で開催しています。
何問ずつやるのか
はじめは毎週5問ずつやっていました。
しかし、2章になってから重い問題も多く、今は3~5問という感じになっています。
だいたい予習にかかる時間が2~3時間程度です。
何人でやっているのか
最初は3~5名ほどいたのですが、 今現在はだいたいいつも2人で開催しています(੭ु˙꒳˙)੭ु⁾⁾ <- (with @hioさん)
こじんまりですが自分のペースで進められるのがよいところです。
今からでも是非みんな参加して!と言ってはいるのですが、 SICPは頭からやってくことに意味があるなぁと感じる構成になっているため、 微妙な節から始めると、「SICPって怖い、むずかしい」という気持ちを産んでしまいそうな気がします。
もし興味が有る方がいれば、2.4節もしくは3章がはじまるタイミングで参加していただくのが良いかもしれません。
これまでの解答
参加者の解答をみて自分の解答を修正したり、別解として紹介したりしつつまとめている私の記事一覧です。
- オンラインSICP読書女子会 #1(~1.1.6) まとめ - Qiita
- オンラインSICP読書女子会 #2(1.1.7~1.1.8) まとめ - Qiita
- オンラインSICP読書女子会 #3(1.2.1~1.2.2) まとめ - Qiita
- オンラインSICP読書女子会 #4(1.2.5~1.2.6) まとめ - Qiita
- オンラインSICP読書女子会 #5(1.2.4~1.2.6 最大公約数と素数判定) まとめ - Qiita
- オンラインSICP読書女子会 #6(1.2.6 素数判定-後編) まとめ - Qiita
- オンラインSICP読書女子会 #9(1.3.2 ~ 1.3.3 lambdaとletと仲良し) まとめ - Qiita
- オンラインSICP読書女子会 #10(1.3.3 無限連分数) まとめ - Qiita
- SICP読書女子会 #11,12 1.4.6 返り値としての手続き まとめ - Qiita
- SICP読書女子会#16 2.1.4(2) - Qiita
- SICP読書女子会#17 2.2.1 - Qiita
- SICP読書女子会#18 2.2.1 ~ 2.2.2 - Qiita
- SICP読書女子会#19 2.2.2 - Qiita
- SICP読書女子会#20 2.2.2 - Qiita
- SICP読書女子会 2.2.3 (#21,22,23,24) - Qiita
- SICP読書女子会 2.2.4 (#24~) - Qiita
- SICP読書女子会 2.3.1 (#25) - Qiita
- SICP読書女子会 2.3.2 (#26) - Qiita
- SICP読書女子会 2.3.3 (#27,) - Qiita
※途中で名前やまとめ方がかわったり、ちょっと抜けが合ったりする・・・!
どんなかんじに喋っているのか(おまけ)
2章にて、シンボルの使い道がわからない〜という話をしてたときの様子
しんぼるどんなときに使うんですか? > 例えばハッシュのキーとか。 ほえー? > 文字列だと、メモリ列をずずずーっとみて一致調べないとだけど、 シンボルは内部的には基本ただの整数値になってる シンボルだとすぐ飛べる? つまりdefine的な? > そんなかんじー 'aがなにであるかは とくに定義はどこにもしないんですよね? かってに好きな値を割り当ててくれて かぶらないようになる? > そう〜 'a と 'b はかならず別の値になるようにしてくれるし、 'a と 'a なら、別のモジュールで使ってても同じ値になってくれる ちなみに Perl は、文字列に対して内部でハッシュ値を計算して持ってたりする。 ハッシュキーにするときとか。 文字列をハッシュキーにするときに その文字列を一旦ハッシュ化して、どこかにペアをつくっておいて、そのハッシュでアクセスする? > そうそう。 ほえー! おもしろい!!
こんな感じでワイワイ雑談を交えながら問題の答え合わせをしています(o ・ω・)ノ
なんで女子会なの?
Ladies++の活動の一環だからということで、特に理由はありません。
さいごに
SICP読書会は様々なところで開催されており、 自分たちも開催したい、という方も多いかと思いましたので、 まだ2章半ばではありますが、1年つづいた例として、開催の仕方や様子を紹介してみました。*1
本自体を読んでいる感想としては、 ここで何度も私が紹介している、世界で闘うプログラミング力を鍛える150問でやったような基礎的な内容を、 もっとじっくりきっちり理解していける感じです。
最近やっている2章はmapやfilter等関数型らしい(?)話題になってきていて、 普段関数型言語を書かない私としてはとてもおもしろいです。 難しい部分も多いですが、人と一緒にやるとがんばれますねヽ(=´▽`=)ノ
やっとschemeにも慣れてきた(括弧の対応が無意識にとれるようになってきた)ところなので、 ぜひschemeで何かちょっと作ってみたいな・・・という気持ちがあります( ・ω・)
まだまだSICPは序盤ですので、 どこまで解いていけるかわかりませんが、来年も頑張っていきたいですヽ(=´▽`=)ノ
次回開催
さて明日は @y2q_actionmanさんで「cffi関連?(タイトル未定?)」ですっ
*1:結局のところは 「開催方法云々よりも、一緒に読んでくれる人を見つけることが大事なのでは・・・・」 という気がしなくもない