トップページ⇒tech
1001コメント366KB

結局OOpが役に立たないのはなぜ?

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2010/04/14(水) 01:14:08
オォオォ言ってる奴等がアホな抱けちゃうの?

0449デフォルトの名無しさん2010/05/05(水) 17:40:04
>>447
高凝集かつ疎結合なシステムを構築しやすい。
0450デフォルトの名無しさん2010/05/05(水) 17:41:41
>>445
C++のテンプレートは、C++言語の大きな欠点とされているだろ。
0451デフォルトの名無しさん2010/05/05(水) 17:49:01
メタプログラミングはオブジェクト指向と対立する概念ではないんじゃ。
0452デフォルトの名無しさん2010/05/05(水) 17:54:46
>>449
それはOOだけじゃない。
0453デフォルトの名無しさん2010/05/05(水) 17:56:34
>>452
別にOOだけのウリだとは一言も言っていない。
0454デフォルトの名無しさん2010/05/05(水) 18:15:15
>>453
それだと、OOの一番のメリットっと言わないだろう。 普通は。
0455デフォルトの名無しさん2010/05/05(水) 18:20:24
>>450
別にC++のテンプレートを褒める気は無い
重要なのは、あの醜悪な道具を使ったSTL並の道具を
C++の伝統的なOOの手法では作れなかったということ

Stroustrup自身が、自分にはSTLのようなものは作れなかったし、その発想が
無かったと認めている
STLの作者自身はOO嫌いらしいね
0456デフォルトの名無しさん2010/05/05(水) 18:27:36
>>454
日本語でおk
0457デフォルトの名無しさん2010/05/05(水) 18:34:31
>>449
構造化言語でも出来る。
0458デフォルトの名無しさん2010/05/05(水) 18:37:40
>>454
ほっとけ、相手はOOを知らないアホだから。
0459デフォルトの名無しさん2010/05/05(水) 18:50:08
>>457
可能か不可能かで言えば可能かもしれないな。
0460デフォルトの名無しさん2010/05/05(水) 18:59:42
>>455
C++(というかStroustrup)にとってのOOは、最近の責務ベースのOOとは全然違うからな。
0461デフォルトの名無しさん2010/05/05(水) 19:38:00
>>444
http://www.youtube.com/watch?v=CFZiil0DfMc
0462デフォルトの名無しさん2010/05/05(水) 20:12:58
>>460
STLの例は、責務ベースだとか責務ベースでないとかは、関係ないよ

STLを知っている人には通じると思うが
STLの根底にあるアイデアは、コンテナとアルゴリズムを分離し、
良く定義されたプロトコル(iterator)を糊として使うというもので、発想は
非OO的

分離することで、コンテナ×アルゴリズムという乗算量になってしまう実装の手間が
コンテナ+アルゴリズムという加算量の手間で済み
テンプレートの提供するダックタイピングの能力とあわせて、
継承階層と無関係に、組み込み型の配列やポインタでも同様に利用できる
0463デフォルトの名無しさん2010/05/05(水) 20:13:56
>>448
ほぼ同じ時期(むしろMFC以前)に出来ていたTurboC++のOWLなんかはまともなフレームワークだったよ
0464デフォルトの名無しさん2010/05/05(水) 20:53:50
>>462
それがOOと何の関係があるの?
0465デフォルトの名無しさん2010/05/05(水) 22:02:45
>>461
http://www.youtube.com/watch?v=i6-1934HZG0
0466デフォルトの名無しさん2010/05/05(水) 22:04:00
>>464
おまえ空気嫁てないなw
STLはOOと関係ないっていう話をしてるんだよw
0467デフォルトの名無しさん2010/05/05(水) 22:06:44
>>466
そりゃそうだ。
0468デフォルトの名無しさん2010/05/06(木) 02:41:11
テンプレートは便利なんだよ。
ただ、型推論をもうちょっと強力にして、
template<>とかいちいち宣言しなくていいようにしてほしい。

auto add( auto &a, auto &b )
{
  return a+b;
}

こんなかんじで。

あと、型推論にunionもほしいんだよな。

auto a;
B b; C c;
a = b;
a = c;
//aはBとCのunionになる。

で、このunionなaで、関数の呼び出しが動的オーバーロードされりゃポリモも出来るな。
0469デフォルトの名無しさん2010/05/06(木) 05:26:34
自分で作ったら
0470デフォルトの名無しさん2010/05/06(木) 12:50:49
>>468
その辺を突き詰めると、Haskellの言語仕様に近くなるような気がする。
0471デフォルトの名無しさん2010/05/08(土) 02:14:38
OO、OO言ってるやつらは、
MLのモジュールとかHaskellの型クラスとか分かってんのかな?
色々な構造化の手法を知って、その共通点とか相異点を実感して、
初めてOOの特徴が分かるってもんだろ
日本語しか知らないのに、日本語の特徴は...って語ってるのと同じだぞ
0472デフォルトの名無しさん2010/05/08(土) 02:17:40
日本語の特徴は主語が無いことです
0473デフォルトの名無しさん2010/05/08(土) 02:22:59
シーザーを理解するためにシーザーである必要はない。
0474デフォルトの名無しさん2010/05/08(土) 02:52:55
>>473
よく分からないww

どこぞやの生き残りブログでもそうだけど、
OOの話になるとC言語と比べた話くらいしか出てこないのがとても残念
モジュールやファンクターの世界を知れば、
OOではクラスがそのまま型になっている事が便利な理由であり制約でもあると気づけるのに
型クラスの世界を知れば、
OOではIdentityが前提だからインスタンスを指定する必要があったんだと気づけるのに
井の中にしか興味ないなら仕方ないけどさ
0475デフォルトの名無しさん2010/05/08(土) 02:55:22
ローマに行ったときはローマ人のように振舞いなさい
0476デフォルトの名無しさん2010/05/08(土) 02:57:27
>>474
もっと具体的に。
0477デフォルトの名無しさん2010/05/08(土) 03:11:46
>>476
いや、もう十分具体的じゃんww
まずはバリアントとレコードとモジュールとファンクターとシグネチャーを勉強してくれ
OOとは別の世界があるから

それから、Identityとpurely functionalの意味をHaskellを触りながらでも実感してくれ
OOがどれだけ副作用と切り離せないか分かるから
0478デフォルトの名無しさん2010/05/08(土) 04:11:36
関数言語厨うぜ
0479デフォルトの名無しさん2010/05/08(土) 07:10:17
>>477
実際 Haskell って楽しい?ちょっと興味はある
コード書く上で、例えばメイン処理、サブ処理1、1の結果を得て別の結果を返すサブ処理2と
3つのルーチンを考えた時、ベタな実装って具体的にどうなるの?
0480デフォルトの名無しさん2010/05/08(土) 07:40:50
>>479
それくらい、ぐぐろうよ
ttp://www.sampou.org/haskell/tutorial-j/functions.html

頑張って型クラスまで辿り着いてねー
0481デフォルトの名無しさん2010/05/08(土) 07:47:33
>>480
ググろうじゃなくて実際に書いてる人としてお前の感想聞きたいんだけど
0482デフォルトの名無しさん2010/05/08(土) 08:00:40
>>481
こりゃ失礼
もちろん楽しいです
λ計算や圏論や型理論が基礎にあって、地に足が付いている感が好きです
0483デフォルトの名無しさん2010/05/08(土) 08:51:21
なんだ
いつものひとかw
0484デフォルトの名無しさん2010/05/08(土) 09:16:19
>>483
えっww
OCamlのスレには書き込むけど、このスレは>>471が初めてなんだがww
0485デフォルトの名無しさん2010/05/08(土) 10:04:08
>>479
Haskellの人じゃないけど
メインとサブの処理にするなら、そのまま関数にすればいいと思う
サブ1の結果を使うサブ2があるなら、サブ2の引数にサブ1の結果を渡すだけ
0486デフォルトの名無しさん2010/05/08(土) 10:10:19
このスレで学びながら考えて、オブジェクト指向はいままでのプログラム作成法の集大成なんじゃないかな、と思った。
0487デフォルトの名無しさん2010/05/08(土) 10:33:28
>>486
OOPは、よくできたプログラムの構造を研究した結果でてきたもの。
0488デフォルトの名無しさん2010/05/09(日) 12:07:43
何を学んだんだと小一時間(ry
0489デフォルトの名無しさん2010/05/10(月) 11:57:56
このスレで学んだこと:
・>>324-325が意外と的を射ているのかも
・Erlangって面白そう
0490デフォルトの名無しさん2010/05/11(火) 20:48:45
自分の頭がOOになっていないため、オブジェクトは最低限にして、残りは関数にした方が素早くプログラムできます。

関数といっても副作用のあるC言語的な関数です。
0491デフォルトの名無しさん2010/05/11(火) 21:25:32
ok
0492デフォルトの名無しさん2010/05/11(火) 21:39:20
>>489
>このスレで学んだこと:
>・>>324-325が意外と的を射ているのかも
それは一番駄目な奴のとろだから。
0493デフォルトの名無しさん2010/05/11(火) 22:52:42
上とろ
中とろ
下とろ
0494デフォルトの名無しさん2010/05/12(水) 17:41:10
>>492
324,325=489
ほっといてやれ。
0495デフォルトの名無しさん2010/05/14(金) 16:37:31
OOって役に立ってる?
確かに既存ライブラリを使うときにはOOで整備されていると楽だけど
自分で作る部分は、それほどOOにする必要がない場合が多いんだよね。
0496デフォルトの名無しさん2010/05/14(金) 16:41:58
>>495
あれは複数人で開発(意思の疎通、統合が不自由)したり、
全体像が把握できないほどコード量が膨大になったりしたときに
役に立つんだと思うよ。
0497デフォルトの名無しさん2010/05/14(金) 17:20:12
おまえらどれだけ小さいプログラムしか書かないんだ。フラグの山から解放される快適さを知れ。
0498デフォルトの名無しさん2010/05/14(金) 17:36:11
そんなのオブジェクト嗜好でなくとも解放されるわい。
それをしてオブジェクト施行というならオブジェクト思考でないプログラミングなんてありえない。
0499デフォルトの名無しさん2010/05/14(金) 18:29:43
アセンブリしか見えないw
0500デフォルトの名無しさん2010/05/14(金) 18:41:17
随分とシコウを色んな単語に変換してくれるIMEだなw
まあ、フラグの山は流石に例えがおかしいが。
0501デフォルトの名無しさん2010/05/15(土) 00:21:51
一人で開発する場合でもポリモとか役立つよ
0502デフォルトの名無しさん2010/05/15(土) 00:33:10
ポリモしたい部分だけクロージャで渡せば
オブジェクトなんて必要ないのに
0503デフォルトの名無しさん2010/05/15(土) 01:50:46
俺がポリモだった頃、女房はクロージャで息子はオブジェクトだった
わかるかな?
0504デフォルトの名無しさん2010/05/15(土) 05:27:51
>>502
オブジェクトの種類によって決まってる処理なら、オブジェクトだけ渡せば済むほうが気楽だなあ
0505デフォルトの名無しさん2010/05/15(土) 05:44:26
>>502
手動でOOPしている。
0506デフォルトの名無しさん2010/05/15(土) 13:06:00
どうしてなの
0507デフォルトの名無しさん2010/05/16(日) 12:04:07
>>506
OOPを使うやつらに役に立たない連中が多いからじゃね?
0508デフォルトの名無しさん2010/05/18(火) 11:25:27
>>507
十把一絡げでレッテル貼りぱねぇっす‥ て、一瞬言おうと思ったが‥
深いかもしれない。言葉通りじゃなく、なんか深い
0509デフォルトの名無しさん2010/05/20(木) 00:46:21
必要以上に異常にOOPにこだわるおじさんいますよね……
0510デフォルトの名無しさん2010/05/20(木) 00:50:12
アランケイ信者か
0511デフォルトの名無しさん2010/05/23(日) 18:36:02
むしろこだわってるのは若者ですよね
0512デフォルトの名無しさん2010/05/23(日) 20:51:08
安蘭けい信者?
0513デフォルトの名無しさん2010/05/23(日) 22:36:38
これ見ると下手な食事療法とかダイエットよりも効果あったよ。
http://www.petatv.com/tvpopup/video.asp?video=agri_long&Player=wm&speed=_med
0514デフォルトの名無しさん2010/05/28(金) 11:31:16
しばらくHaskellを使ってからC#やVB.NETに戻ってきてプログラムを作ると
以前よりも無駄のないすっきりとしたプログラムを作れているという実感があります。

これは、処理の分割(抽象化)の能力が上がるからのような気がします。

関数型をかじりながらオブジェクト指向でプログラムを作ると良いのかもしれません。
0515デフォルトの名無しさん2010/05/28(金) 13:14:59
でもなー
Haskell
とかって仕事では使わないしなー
0516デフォルトの名無しさん2010/05/28(金) 19:57:16
うむぅ。じゃあC#とかに、Hakell使った人みたいになることを助けるような、
抽象化能力をあげるような機構とかってつくれないかな。と思ってみたり
0517デフォルトの名無しさん2010/05/29(土) 12:23:52
日本語でおk
0518デフォルトの名無しさん2010/06/10(木) 18:50:30
昔のえらい人も言ってたじゃないか。
実用するかどうかは置いといてとりあえずLISP学んどけって
0519デフォルトの名無しさん2010/06/12(土) 00:59:21
HaskellやってからLispに戻ってくると
「うわーすんげー楽!変数書き換えられるよ!
シーケンシャルな(書いた順に実行する)コード書けるよ!」
ってなるw
0520デフォルトの名無しさん2010/06/12(土) 11:29:07
手続き型脳乙
0521デフォルトの名無しさん2010/06/13(日) 20:59:04
いや、俺は解らんでもないな
全部手続きで書きたいワケじゃなくて、基本関数的に書いてても
局所的には手続き的にやりたい時はある
そういう時に純粋関数型だとちょっと面倒くさい、やれなくは無いんだがね
0522デフォルトの名無しさん2010/06/21(月) 12:33:30
そこでPythonですよ
0523デフォルトの名無しさん2010/06/21(月) 13:21:50
Clojure(JVMで動くLisp派生言語)はJavaのオブジェクトが使えます。
たとえばStringのtoUpperCaseメソッドはどう呼び出すかというと

( .toUpperCase "hello" )

こんな感じです。
このスレ的に、ちょっと面白い位置付けですね。
0524デフォルトの名無しさん2010/07/02(金) 23:44:26
OO信者が組み込み(ハード制御含む)やると、とたんに役に立たなくなるのはなぜですか?
0525デフォルトの名無しさん2010/07/02(金) 23:50:30
組み込みの方ってOOできるんですか?
0526デフォルトの名無しさん2010/07/03(土) 00:00:26
今時フツーにOOしてるが…
でも、仕様がそこらのOO屋さんの言ってるOOにはそぐわないらしいw
つか、OO分析してくれた結果が役に立たないのはなぜ?
さらに、OO言語使わないとOO出来ないのはなぜ?
0527デフォルトの名無しさん2010/07/04(日) 23:04:19
組込みソフトウェア開発のためのオブジェクト指向モデリング
http://www.amazon.co.jp/dp/4798111767

リアルタイムUML―オブジェクト指向による組込みシステム開発入門
http://www.amazon.co.jp/dp/4881359797
0528デフォルトの名無しさん2010/07/12(月) 02:33:43
>>526
世間のOOな開発手法は言語のサポートがある前提だからでしょ。
だから、そうでない場合、実装へのギャップが大きすぎるか
言語仕様に縛られて、OOとしては半端で意味のない設計になる。

他にはOO的手法は、非機能要件への対策には弱い印象がある。
極端にリソースがチープだったり、リアルタイム性が求められる時、
手法としては対処出来ない。
属人的なノウハウはあるだろうけど。

まぁ526は世間で言われるところの「OO」はしてないんじゃね?
原理主義的な(悪い意味でなく)OOであるのかも知れない。
0529デフォルトの名無しさん2010/07/12(月) 22:26:39
そうか?
*BSD とか OpenSolaris の kernel 読んでると十分 OO してるけどな
まぁ、言語の制約もあって cast しまくりだがw

0530デフォルトの名無しさん2010/07/13(火) 08:07:38
どの辺り?
OOD?P?

socketまわりぐらいしか見る機会無かったけど、
あんまりOOって感じじゃなかったような。

ちょっと興味はある。
これまで見た中でCでOOを頑張ってるのは
gtkしか知らない。
知らんだけであるとは思う。
0531デフォルトの名無しさん2010/07/13(火) 10:26:36
ファイルディスクリプタなんてポリモーフィズムの最たるものだと思う 。
0532デフォルトの名無しさん2010/07/13(火) 23:09:20
流れ的に、kernelのfdまわりの実装の話だよな?
0533デフォルトの名無しさん2010/07/15(木) 21:17:47
多態性=OOではないと何度(ry
0534デフォルトの名無しさん2010/07/15(木) 21:46:36
誰がイコールだと言っている?
0535デフォルトの名無しさん2010/07/15(木) 22:27:34
自分は必要条件ではなく十分条件だと思っている。
0536デフォルトの名無しさん2010/07/16(金) 00:27:46
>>535
a
0537デフォルトの名無しさん2010/07/16(金) 00:28:48
>>535
十分条件だとすると、関数型言語もOOになるがいいのか?
0538デフォルトの名無しさん2010/07/16(金) 03:28:11
OOは言語レベルの話じゃないだろ。
0539デフォルトの名無しさん2010/07/16(金) 09:48:55
1. OOには多態が必要
2. 多態さえあればOO

の2択であれば、1の方が正解に近そうだ
0540デフォルトの名無しさん2010/07/17(土) 20:31:36
結局いつもオブジェクトとはなんぞやって話になって、
派閥がいっぱいあって、一般論にならず、まとまらない。

もうオブジェクト指向とか語るだけ無駄だろ。
OOは皆の心の中にある。
0541デフォルトの名無しさん2010/07/17(土) 21:08:44
広義では情報とそれを操作する手続きを一緒の入れ物に押し込んだものをオブジェクトと呼ぶ。
その上で継承、多態、通信の方法などの個別の拡張で派閥争いがある。
0542デフォルトの名無しさん2010/07/17(土) 21:49:40
OO言語という道具を使って何を目指すか、次第だと思うけどな。
つまり、OOA/OODのレイヤーから逆算して議論しないとまとまるわけがない。
0543デフォルトの名無しさん2010/07/18(日) 00:36:22
>>541
> 広義では情報とそれを操作する手続きを一緒の入れ物に押し込んだものをオブジェクトと呼ぶ。
これだと、モジュールやファイルもオブジェクトになるな。
それどころか、static変数を持った関数も。
0544デフォルトの名無しさん2010/07/18(日) 00:39:54
ところがだ。
歴史上では出て来た順番が逆なもんで、
OOPは独立したもので、OODありきで考えるのは
本質的でないと言う人も居たり。
0545デフォルトの名無しさん2010/07/18(日) 03:13:40
歴史的にはそうかもしれないが、長年の研究によって考察が深まったのも確かなわけで、
(例えば、オブジェクト指向=「継承」「現実世界のモノを計算機に写像する方法論」という
考え方は、近年では否定される傾向にある)研究が進んだ結果再整理された、ってことで
いいんじゃないのかな。他のサイエンスでもそういうことはよくある。
0546デフォルトの名無しさん2010/07/18(日) 05:28:53
微分からネイピア数を定義するようなものか
0547デフォルトの名無しさん2010/07/18(日) 12:09:00
>>545
現在ではOOPは単なるOO開発手法のサブセットだ、
と言ってる、という理解であってる?
0548デフォルトの名無しさん2010/07/18(日) 20:00:30
>>547 主旨はそうんなんだろうけどな
OO開発手法が役に立たない局面は山ほどある
# 所詮、数式化出来ない屑が使う手法 > OO開発
■ このスレッドは過去ログ倉庫に格納されています