オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net (961レス)
オブジェクト指向は愚かな考え。この世は計算式 ★3©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1451927425/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
638: デフォルトの名無しさん [sage] 2016/08/04(木) 18:59:34.21 ID:iP1jJ0aF >>610 iteratorはどっちが楽なの? http://mevius.5ch.net/test/read.cgi/tech/1451927425/638
639: デフォルトの名無しさん [sage] 2016/08/04(木) 19:27:18.45 ID:0aO0sFCL >>638 Smalltalk と C++ との比較で? それならもちろん Smalltalk です。 (同書P.289より) Smalltalkではiteratorを明示的に定義する必要はない。標準的なコレクションクラス(Bag、 Set、Dictionary、OrderedCollection、Stringなど)で、内部iteratorのメソッドdo:を定義してい るからである。do:はブロック(つまり、closure)を引数としてとる。 (標準的なコレクションクラスの例になぜか名前がありませんが当然Arrayも含みます。念のため。) http://mevius.5ch.net/test/read.cgi/tech/1451927425/639
640: デフォルトの名無しさん [sage] 2016/08/04(木) 19:40:49.06 ID:HlIXxJdQ >>639 それでいうと今のC++もSTLでイテレーターが実装されてるから、 必要ないって言ってるようなもんじゃね? 別にSmalltalkが特別ってことにはならない。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/640
641: デフォルトの名無しさん [sage] 2016/08/04(木) 20:21:25.52 ID:jTAWnEUa >>635 > デコレータパターンという、修飾オブジェクトで被修飾オブジェクトでラップして、両者を同じ基底クラスから派生させることで型に互換性を持たせる、 修飾オブジェクトで被修飾オブジェクトでラップしてっていうのは Javaでの実装であって、Rubyのデコレーターパターンには必須ではないよ。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/641
642: デフォルトの名無しさん [sage] 2016/08/04(木) 20:23:12.92 ID:jTAWnEUa デコレータパターンは言語によっていろんな実装が有って Javaでは修飾オブジェクトで被修飾オブジェクトでラップして、両者を同じ基底クラスから派生させることで 型に互換性を持たせる、というバッドノウハウが静的型OOPLだから必要になるけど、 デコレーターパターンはSmalltalkでクロージャを使った実装で実現できる。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/642
643: デフォルトの名無しさん [sage] 2016/08/04(木) 20:37:49.54 ID:0aO0sFCL >>640 Smalltalkが特別ってことにはならないという点については同意します。 ただ、クロージャーを引数にとる内部イテレーターはとても簡潔な記述を可能にするので C++がSTLを介してイテレーターが組み込みであっても、記述の負担の軽さはSmalltalk方式の方が優位かとも とはいえ、C++のコードがどんな感じになるかははずかしながら当方ちょっと予想が付きかねますので、 もし可能でしたら、C++のSTLを使って書いてSmalltalkのと比較をさせてもらうことはできますか? あいにくウィキペにはIteratorの例はないので、こちらの比較的シンプルなJavaの例を http://qiita.com/jonichonpa/items/208dc2361414f93efacf Smalltalkで書いてみました http://ideone.com/oplhQu もちろんSmalltalk方式を採用した言語(たとえばRuby)なら、Smalltalkと同程度にシンプルに書くことはできます そんなわけでRuby版も念のため http://ideone.com/xlQZqc http://mevius.5ch.net/test/read.cgi/tech/1451927425/643
644: デフォルトの名無しさん [sage] 2016/08/04(木) 20:41:57.05 ID:jTAWnEUa イテレーターパターンをSmalltalkで書いてみたわけね。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/644
645: デフォルトの名無しさん [sage] 2016/08/04(木) 20:47:45.80 ID:XSjm71+w イテレータパターンを使わずとも 既にあるイテレータを使った、でしょ http://mevius.5ch.net/test/read.cgi/tech/1451927425/645
646: デフォルトの名無しさん [sage] 2016/08/04(木) 20:55:24.22 ID:HlIXxJdQ >>643 for each (range based for)でいいじゃん。 for (auto& item : collection) { // print an item } クロージャ風がいいなら、 std::for_each(collection.end(), collection.begin(), [](auto& item){ /* print */} アイテレーターが登場するけど昔の名残みたいなもんで、 本質じゃないだろ?(範囲を指定してるだけ) http://mevius.5ch.net/test/read.cgi/tech/1451927425/646
647: デフォルトの名無しさん [sage] 2016/08/04(木) 21:08:55.10 ID:ILqHD9/M >>642 クロージャを使ったらデコレータとは言わないのでは? デコレータは継承による多態性を用いたものに限定すべき。 同じ事をやる方法なんていくらでもあるから、 そこは継承によるものと限定しておかないと意味分からなくなる。 無論、今のC++やJava、C#だってクロージャもしくは それに類似した機能を使って同じ様なことはできるし、 Smalltalkだって継承を使ったデコレーターはできる。 言語によってできることできないことと、 各言語の流儀みたいなものは切り分けて考えるべき。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/647
648: デフォルトの名無しさん [sage] 2016/08/04(木) 21:15:46.97 ID:jTAWnEUa >>647 デコレータの説明として、インターフェイスを同一視して 動的に機能を拡張していくとは書いてあるが 継承を用いることとは書いていない。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/648
649: デフォルトの名無しさん [sage] 2016/08/04(木) 21:21:02.95 ID:CmNfOhbZ >>648 それは定義じゃないだろ。GoF本では定義はStructureのところだ。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/649
650: デフォルトの名無しさん [sage] 2016/08/04(木) 21:29:07.85 ID:jTAWnEUa Structureは日本語にしたら 構造って意味ですよw http://mevius.5ch.net/test/read.cgi/tech/1451927425/650
651: デフォルトの名無しさん [sage] 2016/08/04(木) 21:30:27.36 ID:CmNfOhbZ >>650 んなことは分かってるだろ。そこが実質的な定義だと言ってるの。 そのあとにImplementationが来て、その構造の実装法やアレンジを述べる流れ。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/651
652: デフォルトの名無しさん [sage] 2016/08/04(木) 21:33:42.86 ID:TDXgEb4R 継承してないと使えないとかじゃ困る。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/652
653: デフォルトの名無しさん [sage] 2016/08/04(木) 21:34:27.18 ID:jTAWnEUa > そこが実質的な定義だと(俺様が)言ってるの。 知らんがなw お前が何を言ったところで、 Structureは日本語にしたら構造 Definition(定義)じゃない。 まさか単語の意味を強弁するとは思わなかったなw http://mevius.5ch.net/test/read.cgi/tech/1451927425/653
654: デフォルトの名無しさん [sage] 2016/08/04(木) 21:39:49.22 ID:CmNfOhbZ >>653 暗黙の定義ってやつだ。プログラミングしてるなら分かれ。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/654
655: デフォルトの名無しさん [sage] 2016/08/04(木) 21:51:04.78 ID:jTAWnEUa 説得力0w http://mevius.5ch.net/test/read.cgi/tech/1451927425/655
656: デフォルトの名無しさん [sage] 2016/08/04(木) 21:51:55.34 ID:VNJ4iqic この場合、構造、だとしても問題無い件。 パターンの構造はこうであると定めてる。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/656
657: デフォルトの名無しさん [sage] 2016/08/04(木) 22:03:13.75 ID:jTAWnEUa 構造の一例ねw http://mevius.5ch.net/test/read.cgi/tech/1451927425/657
658: デフォルトの名無しさん [sage] 2016/08/04(木) 22:10:23.67 ID:CmNfOhbZ デザインパターンなんだから特定の構造を集めたものだからな。 同じ事ができるならなんでもいいならパターンとはいわない。 まあ馬鹿は無視して議論続けてくれ。 http://mevius.5ch.net/test/read.cgi/tech/1451927425/658
659: デフォルトの名無しさん [sage] 2016/08/04(木) 22:12:49.41 ID:jTAWnEUa まさかデザインパターンがGoFの23個だけだと? あれはパターン例だよ http://mevius.5ch.net/test/read.cgi/tech/1451927425/659
660: デフォルトの名無しさん [sage] 2016/08/04(木) 22:14:24.41 ID:CmNfOhbZ >>659 それこそ誰もそんな話はしていないわけだが。 国語のテストとか悪かったでしょ? http://mevius.5ch.net/test/read.cgi/tech/1451927425/660
661: デフォルトの名無しさん [sage] 2016/08/04(木) 22:20:23.44 ID:jTAWnEUa Structureは日本語にしたら構造 Definition(定義)じゃない。 国語と英語の問題なw http://mevius.5ch.net/test/read.cgi/tech/1451927425/661
662: デフォルトの名無しさん [sage] 2016/08/04(木) 22:24:49.05 ID:CmNfOhbZ アホの一つ覚えとはこのこと http://mevius.5ch.net/test/read.cgi/tech/1451927425/662
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 299 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.023s