トップページ⇒tech
75コメント18KB

関数もオブジェクトって変だよな?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
C#のデリゲートとか気持ち悪いんだが。


0002デフォルトの名無しさんNGNG
そうでもないよ
0003デフォルトの名無しさんNGNG
関数にもポインタあるって変だよな?
0004デフォルトの名無しさんNGNG
そうでもないよ
0005デフォルトの名無しさんNGNG
>>5-1000
そうでもないよ
0006デフォルトの名無しさんNGNG
>>6
そうでもないよ
0007デフォルトの名無しさんNGNG
>>8
そうだよ
0008デフォルトの名無しさんNGNG
そうかな?
0009デフォルトの名無しさんNGNG
>>10
そうでもないですよ。
0010デフォルトの名無しさんNGNG
>>11
そういうもんだよ
0011デフォルトの名無しさんNGNG
春休みこそHSPを脱出してC#やるぞ!っつー厨房の立てたスレですか?
0012デフォルトの名無しさんNGNG
関数がオブジェクト?
rubyのようなオブジェクト志向度が高い言語では当り前のことですが何か?
0013デフォルトの名無しさんNGNG
最近じゃ1ビット1オブジェクトだからな〜
0014デフォルトの名無しさんNGNG
>>1
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?(゚Д゚)ハァ?
0015デフォルトの名無しさんNGNG
俺はむしろ「オブジェクトが関数であること」に馴染めない。
0016デフォルトの名無しさんNGNG

何もかもがオブジェクトですよ。
↓オブジェクト      ↓オブジェクト
  ↓オブジェクト            ↓オブジェクト
0017デフォルトの名無しさんNGNG
No object.
0018デフォルトの名無しさんNGNG
無知なJava厨はデリゲートを嫌っているみたいだが、
単にJavaよりC#の方がオブジェクト指向度が高いってことだな。
0019デフォルトの名無しさんNGNG
一番オブジェクト指向度が高いのはsmalltalk

とか言ってみるボルシェビキ派の夏。
0020デフォルトの名無しさんNGNG
め、メソッドがオブジェクト・・・?
一貫性が在って洗練されていると言えばその通りだけど・・・違和感あるなぁ。
0021デフォルトの名無しさんNGNG
頭がついてこれないJava厨晒しあげ
0022デフォルトの名無しさんNGNG
いや演算子もオブジェクトだし…
0023デフォルトの名無しさんNGNG
レキシカルスコープ、無限エクステント、FCOな関数があれば当然ですが何か?
0024デフォルトの名無しさんNGNG
>>23
無限エクステント・・・無限の広さ?
0025デフォルトの名無しさんNGNG
コメントもオブジェクトだ。
0026デフォルトの名無しさんNGNG
{
}
;
もオブジェクトらしいぞ。
0027デフォルトの名無しさんNGNG
>>23
>FCO
って書く人初めて見た。First Class Object ね。
0028デフォルトの名無しさんNGNG
>>20

Javaばっかりやってんと、一度C++のSTLでも覗きなさい。
0029デフォルトの名無しさんNGNG
STLには関数がオブジェクトじゃないC++で
実体は主のメソッドが一つ+おまけのクラスなんだが、
関数がオブジェクトであるかのように無理やり見せかける
関数オブジェクトと呼ばれるものがある。
0030デフォルトの名無しさんNGNG
でれげーとと、メソッド一つだけのクラスとなにか違うんでつか?
0031デフォルトの名無しさんNGNG
別にたいして違わない。
それなのにデレゲートがオブジェクト指向を
破壊するとか勘違いしているやからがいるのが笑える。
0032デフォルトの名無しさんNGNG
>31
「メソッドが一つであることを保証した」オブジェクトになるのが気持ち悪いんじゃないのか?
まあ、Javaの getHoge()/setHoge() の方がよっぽど気持ち悪いけどな。
0033デフォルトの名無しさんNGNG
げったーをばかにすんな
0034デフォルトの名無しさんNGNG

オブジェクト指向度が高い = 高卒向け度が高い
0035デフォルトの名無しさんNGNG
>>34 = 厨中退。
0036デフォルトの名無しさんNGNG
世界はオブジェクトで出来てんだよ。
0037KingMathematician ◆5lHaaEvFNc NGNG
Re:>>12 Rubyには関数が無いという話を聞いたことがあるが。

それより、オブジェクトは、メソッド、プロパティ、子オブジェクトを要素に持つ、という認識で合ってるだろうか?
それだと、関数はオブジェクトにはならない。
0038デフォルトの名無しさんNGNG
難しく考える事はない。 単純に CLI の制限だよ。

ボーランドの委譲に関する特許を手中にしたから、Delphiの メソッドポインタを実装しようとした。
メソッドポインタは、関数ポインタ+オブジェクト参照(ポインタ) だから、2つのポインタを実装上必要とする。
しかしポインタそのものを隠したいのに、それを構造体で実現する訳にはいかない。

という事で、オブジェクトにするしかなかったのさ。
0039デフォルトの名無しさんNGNG
>>38
じゃあ、CILの 〜ftn 命令は何のためにあるんだ?
あまり知った口を叩くなよ厨房。
0040デフォルトの名無しさんNGNG
ldftnで取得したメソッドポインタ(native int)を安全にラップしたのがCLIのDelegateなわけだ。
0041デフォルトの名無しさんNGNG
またそんなアホアンチには理解できないこと書いても。(ゲラ
0042デフォルトの名無しさんNGNG
> メソッドポインタは、関数ポインタ+オブジェクト参照(ポインタ) だから、

ハァ?
基礎から勉強しなおせ馬鹿
0043デフォルトの名無しさんNGNG
でも ハァ!ハァ!ハァ! 春は扉の外で
でも ハァ!ハァ!ハァ! 春は誘いをかける
教えて 教えて
秘密を 教えて 
0044デフォルトの名無しさんNGNG
Javaのリフレクションの実装との違いをどなたか語って下さいませんか。
0045デフォルトの名無しさんNGNG
某所より

class Foo:
  def __init__(self, x):
    self.x = x
  def foo(self):
    print self.x

foo1 = Foo(1)
foo1_foo = foo1.foo
foo5 = Foo(5)
foo5_foo = foo5.foo

foo1_foo() #=> 1
foo5_foo() #=> 5
0046デフォルトの名無しさんNGNG
>>44
ほぼ無関係
0047デフォルトの名無しさんNGNG
>44
妄想ですが。

リフレクションで確保したメソッドオブジェクトはそのメソッドをもつインスタンスが未定だから、
invokeするときにインスタンス(メソッド内のthis)を与えないといけないんじゃ?

で、delegeteの方はインスタンスを決めたメソッドオブジェクトである、と。

と妄想。違うかな。
0048デフォルトの名無しさんNGNG
完全オブジェクト指向
0049デフォルトの名無しさんNGNG
デリゲートがオブジェクトなら
よくある犬とか猫とかのたとえで
わかりやすくおしえてくだっち
0050デフォルトの名無しさんNGNG
JavaにデリゲートUtilクラスがあれば全部解決。
てけとーに書いて、Jakartaあたりに寄贈しませう。
0051デフォルトの名無しさんNGNG
関数ポインタ配列さえあればポリモフィズムいらず
0052デフォルトの名無しさんNGNG
関数についての情報を実行中にメタ的に扱いたい場合に便利なんだよ。
ポインタ一個じゃ静的な型しかわからない。
0053デフォルトの名無しさんNGNG
クロージャー万歳
0054デフォルトの名無しさんNGNG
>47 ってあってるの? 間違ってるの?
0055デフォルトの名無しさんNGNG
全然関係ないが、
ttp://www.tokumaru.org/JavaScript/

JavaScriptは断じてオブジェクト指向が可能な言語ではないと
申し上げたい。
0056デフォルトの名無しさんNGNG
>>55
????
0057デフォルトの名無しさんNGNG
オブジェクト指向が可能なんじゃなく、
オブジェクト指向な言語だって言いたいんだろ
0058デフォルトの名無しさんNGNG
オブジェクトって、乱暴な言い方をすると「具体的なもの」でしょ。
「太郎君」とか「ジミー君」など。

でも、メソッド(=手続き)って、「具体的なもの」といえるのかなあ?
0059デフォルトの名無しさんNGNG
ttp://www.gnu.org/software/smalltalk/gst-manual/gst_77.html#SEC295

Smalltalk の話で申し訳ないが、Smalltalk のメソッドの実態は CompiledMethod
というクラスのインスタンス。当然プロパティやメソッドも備えていて、継承も
可能。例えば、あるメソッドの引数の数を問い合わせたり、メソッドが使うスタック
のサイズを求める為にメソッドのメソッドを呼び出したりする。

ちなみにクラス自体も Class クラスのインスタンスなので、クラスもオブジェクト。

>>58
手続き自体を抽象化した物もオブジェクトの範疇です。実態はバイト列だったり、
メモリ領域だったりに過ぎないので、インスタラクションもデータも変わりは
ありません。
0060デフォルトの名無しさんNGNG
>>58
> オブジェクトって、乱暴な言い方をすると「具体的なもの」でしょ。

タイマーを書くとき時間の経過をオブジェクト化するとか
オセロゲームを書くときにオセロのルールをオブジェクト化するとか
給与計算を書くとき、ヒラの給与計算規則、課長の給与計算規則、
部長の計算規則、それぞれを別のオブジェクトにするとか

具体的でないオブジェクトはたくさんでてくるわけだが
0061デフォルトの名無しさんNGNG
>>60
うーん。それだって、単に目に見えないだけで、やっぱり具体的なものだと思う。

オセロのルールっていうのは、「ゲームのルール」が具体的なものになったものだし、
ヒラや課長の給与計算規則は、「役職の給与計算規則」が具体的になったもの。

余談だけど、給与規則の場合は、「ヒラの給与規則」も「課長の給与規則」も、
まだクラスの段階だと思う。
「Aさんの給与規則」の段になって、初めてオブジェクトになる。
これは、
「哺乳類」も「犬」も「猫」もクラスであり、「うちのポチ」や「隣のタマ」がインスタンス
っていうのと同じようなものかな。(Java プログラミングレッスン下)
Javaだと
「カレンダー」と「グレゴリアンカレンダー」なんかが全く同じ関係だよね。
それに具体的な年月日がプラスされて初めてインスタンスとなる。
0062デフォルトの名無しさんNGNG
デリゲートはインスタンスの参照とメソッドへのポインタをカプセル化してるわけだし、普通にオブジェクトだろ。
0063デフォルトの名無しさんNGNG
そーいやC#って無名クラス使えるの?
0064デフォルトの名無しさんNGNG
>>63
ない。
その代わりに、2.0 で匿名デリゲートが追加される。
0065デフォルトの名無しさんNGNG
あんまころころ変えたり追加したりせんでほしいなあ。
0066デフォルトの名無しさんNGNG
>>65
コロコロは変えてないだろ。
むしろ、熟考しすぎで待ち遠しい。
0067デフォルトの名無しさんNGNG
なにがどう気持ち悪いのかちゃんと説明してくれー。
そうしないと議論にならないじゃないか。
関数がオブジェクト(というか、ファーストクラスな)言語を
普段使ってる人もいるんだからさ。
0068デフォルトの名無しさんNGNG
>67
誰宛?
0069デフォルトの名無しさんNGNG
1または同じ意見を持つ人。
0070デフォルトの名無しさんNGNG
じゃあ俺の意見を。

関数ひとつしかつめない interface 機構を別に実装するのいくない
0071デフォルトの名無しさんNGNG
>> 70
うわわ。関数がオブジェクトじゃないと
関数を気軽にmethodに渡せなくなるじゃん...
0072デフォルトの名無しさんNGNG
>>71
関数型がべつにあればよい。
オブジェクト型と関数型に互換性があってもいいしなくてもいい。

そんなに高階関数が好きならHaskellやれば。
デリゲートだけなんてけち臭いこと云わずに
全部関数型で押し切れ。
0073デフォルトの名無しさんNGNG
>互換性があってもいいしなくてもいい
なんのために型があるのか
ご存知ですか???
007472じゃないがNGNG
>>73
では、君はなんのためだと思ってるんだ?

少なくともオブジェクト型と関数型に互換性のある言語もあれば、
ない言語もあるわけだが。
だから、互換性を持たせるかどうかは言語の「味」によって決まる要素の一つ
にすぎない。
0075デフォルトの名無しさんNGNG
関数=製造機械=オブジェクトという視点でとらえるとあまり変ではないと思う。
■ このスレッドは過去ログ倉庫に格納されています