1月 2008
20件の投稿
手続きとかオブジェクトの例え話 - 今日のチャット
sanakan: いま中身検索で『初めてのPerl』の序文を読んでる。「買わなくて図書館で読め」的なことがかいてあるぞw「ほにゃらか演算子は、ふにゃらか変数をむにゃらかする」訳者ーーー!ww(以下略)なるほど略称をたくさん使うことで短くできるんだな。
takkun: 代名詞だけど君らが甲とか乙と呼ぶのと一緒だ。演算子ってのは動詞を省略したようなもんだな。
sanakan: なるほどね。
takkun: 単純化するとプログラムの世界では主語はコンピューターに決まってるので述語が重要になる。単純な足し算なら(コンピューターが)1に1を足す、とかね。専門用語になるけど、コンピュータの世界では述語は関数なんだ。
sanakan: うん。
takkun: 関数というのはとりあえずは数学の授業とかでやったf(x)とかg(x)とかをイメージにしてもらうといい。ここまではいいかい?
sanakan: 関数だな。うん、「数式を言語にしましたよ」ということだな。
takkun: うん。普通よく使う言葉は省略するだろ?1たす1を表現するのにわざわざadd(1,1)なんて書きたくないだろう?3つの数の足し算になったらadd(add(1,1),1)とかになるんだぜ?これはめんどくさい。ということで省略されたのが演算子。
sanakan: ふむふむ。
takkun: 足し算に"+"を使うとすればさっきのは1+1+1と書ける。ほら?便利でしょ?(笑)
sanakan: なるほど、順序が逆なんだな。
takkun: そうだねはじめに演算子は無い。ただしまあ、普通に使う分には、わざわざadd(1,1)って書くことはないから+を使うよね。
sanakan: なるほど
takkun: プログラミングの初歩というのは自分で述語を定義してコンピューターにあれこれしてもらうということなんだ。こういう風に述語が主体になっているのが手続き型と言われるCとかPerlとかの世界。
sanakan: なるほど。なるほど。オブジェクト指向ってのは?
takkun: オブジェクト指向は今の例えで言うと目的語が重要なんだ。述語が重要な世界では同じ述語が複数の意味はもてない。僕らとは違って、コンピューターは同じものを違うように解釈はしてくれないからね。
sanakan: ふむふむ
takkun: さっきの例で言うとadd(1,1)を数字同士の足し算と定義すると文字をくっつけたいときなんかにはaddという名前は使えない(たいていの言語ではappendとかいう名前を使ってる)。
sanakan: ふむふむ
takkun: で、演算子のときと同じように「appendなんていちいち打ちたくないよ!もっと短くしたい!」と思うようになります。
sanakan: なるほどw
takkun: "+"はすでに数字同士の足し算に使われているので使えません。すると新しい演算子を定義する必要があるわけね。
sanakan: かぶっちゃうとだめだからな。
takkun: 当然ですがこんなことを続けてると使える文字が無くなってきます。
sanakan: そりゃまあな。覚えるのもきつそうだが。
takkun: そこで目的語によって述語の意味が変わるだろうという発想が出るわけだよ。目的語によって述語が変わる、例えば数字に対する"+"と文字に対する"+"に違う意味が割り当てられる。これがオブジェクト指向のイメージ。
sanakan: なるほど。だいたい把握。
1月 29
“様々な技術を覚えなければならなくなり”納屋忌んでいる”開発者には福音となるかもしれない。”
– サーバサイドもJavaScriptで:Aptana Jaxser - builder by ZDNet Japan
1月 23
1月 19
1月 15
1リアクション
1月 15
1月 15
1リアクション
1月 15
1月 13
1リアクション
1月 10
1月 7
1199794556512.jpg (JPEG 画像, 910x2255 px) - 表示倍率... →
1月 7
1月 4
1月 4
1月 3
1月 3
2リアクション
1月 3
1月 3
1月 3
1月 2
1月 1