OOPJog#4参加してきた。

OOPJog#4行ってきました。
もうすでに4回目なんですねぇ。
今回は残念ながら過去最少人数での開催となりましたが、
中身の濃さなら過去一番よかったかもしれない。
内容は主催者であるid:tsuyoshikawaさんの日記と重複すると思われる。
http://d.hatena.ne.jp/tsuyoshikawa/20090514
テーマは「再帰とポインタ」。
そもそもこのテーマはJoel氏の「再帰とポインタができてプログラマ」という問いから生まれたもの。
オブジェクト指向な自分にはどちらも満足に理解できていないという現状。
なので、私は完全に聞く側に回ることになりました。
ほとんどがlchinさんのトークで終わってしまったのですが、
一応聞いたことを自分の解釈を踏まえて記述。
間違っているぞ!という部分は私の解釈不足である可能性が120%です。

再帰とポインタ」

始めは「ポインタとは何か?」、「再帰とはなにか?」という会話からスタート。
当然でてくる答えはリファレンスやら階乗計算用やらとありふれた回答。
再帰とポインタ」とセットで捕らえることが大事ということが後々わかってきた気がします。
以下、説明口調モード。

Joelの問いの意味

唐突だけどいきなりこのテーマについて記述。
簡潔に答えを出すなら、プログラマのレベルの尺度ではないのか?
これはJoel氏の言葉そのままの意味に近い。
実際、プログラマを名乗ること自体は容易い存在で、マークアップ言語ができるだけでもプログラマを名乗れる。
特にこれは技術的に理解のない人間にとっては
[HTMLが書ける→HomePageが作れる→プログラマ]
という流れだけでも、プログラマに見えるのである。
そこで、「再帰とポインタを理解している」という判断基準を作り、プログラマを定義しただけということ。

  • なぜ「再帰とポインタ」なのか?

プログラマとして大事なのはアルゴリズム
となると、例えばクイックソートのようなロジックがわかって初めてプログラマ(本来の姿のプログラマ)と言えるのではないか?
そして、クイックソートに不可欠な概念こそが「再帰」であり「ポインタ」。
ただそういう単純な発想である。

再帰とポインタ」の意味の別なアプローチ

[注)この部分の解釈は自信なし。]
また、こんなアプローチもある。
再帰とポインタは両極端なものでは?
再帰とは数学的帰納法、つまり数学的なアプローチでいわゆる上流レイヤーの考え方。
ポインタとは低級言語の部分、つまりハードよりのアプローチで下流レイヤーの考え方。
つまり、「再帰とポインタ」とは両極のレイヤーを理解することに近いことであり、
単一レイヤーの理解だけで満足しているプログラマプログラマではないということである。
この両極の話はアメリカの地図で見ることもできる。

再帰 ポインタ
西海岸 東海岸
スタンフォード MIT
シリコンバレー Route128

なんかもう駄文ですみません。

「git」

まず、感銘を受けた部分をいうと、
svn=集中,git=分散」
という解釈自体が幻想。
むしろgitは分散型で扱うこともできるというレベルでいい。
どちらを採用するのかは、そのときの開発手法によって判断するべきであり、
gitだから〜とgitを軸にバージョンを管理方法を模索するのは誤り。
binコマンドを見てコマンドが多いと絶望しても、実際使うのはごくわずかだったり。
gitでも同様で使うコマンドを使っていけば慣れる。

gitと再帰とポインタ

簡潔にいうと
ヘッド=ポインタ
ブランチ(ツリー)=再帰
最終的にブランチをマージする考えは再帰につながる。

  • 学習すること+実践することの二つが大切。
  • 学習して満足するだけではなく、実践し身につける、そして採用していくことが大切。
  • gitもえらそうに書いたけど、まだ自分は使ったことないんだよねぇ〜
  • 作業ゲーアプリって結構熱い?

感想など

今回はついに2周回りを決行。
体力的には問題がなかったものの、恐れていたからだに若干影響がでてくる。
朝起きてから左足首のあたりに違和感が……むぅ。
どうでもいいけど、いろいろdisられそうな解釈だなぁ〜。