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

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

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

0685デフォルトの名無しさん2010/08/29(日) 12:57:05
>>684
少なくとも日本じゃ絶対数少ないし。

これまた関係ないけど、物理屋や数学屋が、「量子論の本質」とか「関数論の本質」
って言ったらオカルトなのかねw
0686デフォルトの名無しさん2010/08/29(日) 13:07:42
最近オカルトって聞くと麻雀用語に見えてしまう
0687デフォルトの名無しさん2010/08/29(日) 13:24:12
>>683
一生思ってろw
0688デフォルトの名無しさん2010/08/29(日) 13:50:45
まぁ、さっさとデザインパターンの勉強でもしてこいってことだ。
継承や多態性なんて最初の一時間で理解すべき最低限の概念だ。
足し算と引き算ができるようになりました、程度の意味しかない。
0689デフォルトの名無しさん2010/08/29(日) 13:53:26
> 継承や多態性なんて

どーだかなぁー。
下手な継承、山ほどみるどー。

むしろ、OOPへの不満は、下手な継承から始まってるとすら思う。
0690デフォルトの名無しさん2010/08/29(日) 14:01:08
>>689
そこで、足し算と引き算の上手な使い方を学習できるテンプレが「デザインパターン」だろ。
デザパタが提唱するパターンがどういう原理に基づいているかを考えれば、
継承や多態性なんて、単なる設計の道具、螺子や釘に過ぎないことが分かるはずだ。

それを理解できて、ようやく入門卒業ってとこじゃないか。
0691デフォルトの名無しさん2010/08/29(日) 14:11:13
>>690
おーけーおーけー。
言ってる意味は分かった。同意したい。

継承やポリモをいかにして使うかなんて、
上手に教えてくれる教材がないもんな。
いや、ないかどうかは言い切れないが、
デザパタは十分役に立つと思う。

さらに、少なくともデザパタを経由するくらいの状態にないと、
OOPのメリットなんざ少ないと思うんだろうなとも思う。
よくわかってねー状態で、「ポリモなんざ複雑なだけ」
「カプセル化って面倒だなぁ」とか思ってる状態では。
0692デフォルトの名無しさん2010/08/29(日) 14:36:14
>>663
Smalltalkをそんなふうに馬鹿にするものでもないよ。ある程度突っ込んで使ってみれば、OOPを含めて
いろんな概念がゲシュタルト崩壊おこすことうけあい。案外、理解できてなかったんだなーってけっこう笑える。

デザパタやGUIみたいに古いものだけでなく、TraitsやClassboxみたいに新しいものも生み出して、現在進行形で
多くの言語や環境に影響を与え続ける存在って他にはない希有なものだと思うし。SqueakとかVisualWorksとかで
実装がどうなっているのかちょっと調べて納得できる程度の軽いスキルは身につけておいて損はないと思う。
0693デフォルトの名無しさん2010/08/29(日) 14:36:28
なんか、会社ってところはどこもそうなのかも知れないけどさ
良い人から辞めちゃうよね
んでもって、腹黒い人とか、他人を動とも思わない人とか、
図々しい人とか、・・・そんなのばかりがテコでも動かないぜって
感じで居座り続ける・・・
会社って、こうやってダメになっていくんだと思う
それはそのまんま居座り族・牛耳り族が社会をダメにしていくって
ことなんだ。。。
0694デフォルトの名無しさん2010/08/29(日) 14:41:16
誤爆け?w
0695デフォルトの名無しさん2010/08/29(日) 15:00:38
あと、デザパタを「丸暗記」でなく「理解」しようとした経験があるなら、
開放閉鎖原則、みたいなキーワードには当然辿り着いているはずだ。

>>671は、つまり、そういうことだ。

さらに言えば、それらの原則を精査すれば、その目的が「開発の効率化(笑」などではなく、
コードの柔軟性や保守性に焦点を置いていることにも気づくはずなんだけどな。
(オブジェクト指向とアジャイル開発がしばしばセットで語られる理由もそこにある)
0696デフォルトの名無しさん2010/08/29(日) 15:36:24
つまりテンプレート最強ですね
わかります
0697デフォルトの名無しさん2010/08/29(日) 16:07:58
>>695
コードの柔軟性や保守性は開発の効率化につながるんじゃないの?
0698デフォルトの名無しさん2010/08/29(日) 16:09:56
> つまり、そういうことだ。

どういう(;^ω^)?
0699デフォルトの名無しさん2010/08/29(日) 16:36:37
テンプレートとかジェネリクスとか見てると
ポリモーフィズムなんていらないって思えるよね
0700デフォルトの名無しさん2010/08/29(日) 16:54:22
>>699
型を強く意識するようなOOPだとそれはないわw
もちろん多態やギェネリクスは便利だけどね。
0701デフォルトの名無しさん2010/08/29(日) 17:24:24
ダッグタイピングがOOPでないとでも思ってるのかな。
0702デフォルトの名無しさん2010/08/29(日) 17:41:19
OOpが役に立たないのは 本人の能力の問題かと?
0703デフォルトの名無しさん2010/08/29(日) 17:44:49
>>697
結果としてね。けど、それは「ソフトウェアは常に変化が要求される」という前提があってこそ。
一次開発しか考えてないなら恩恵は少ない。むしろ効率が下がる場合だってあるだろう。
0704デフォルトの名無しさん2010/08/29(日) 17:48:56
なんかいつもの流れだな。口ばっか。
0705デフォルトの名無しさん2010/08/29(日) 17:50:22
>>695
これはひどいなw
0706デフォルトの名無しさん2010/08/29(日) 18:12:40
>>705
どこがひどいのか具体的に批判して。
0707デフォルトの名無しさん2010/08/29(日) 18:20:17
開発の効率化とコードの柔軟性や保守性を対立項目と考えてるところ
0708デフォルトの名無しさん2010/08/29(日) 18:26:55
ALGOL由来の構造化は確実に開発効率(ここでは保守性も含む)を向上させたけど
C++やJavaが開発効率を更に上げたのだろうか。
0709デフォルトの名無しさん2010/08/29(日) 18:27:54
>>707
A.君の誤読。そんなことは一言も言ってない。
0710デフォルトの名無しさん2010/08/29(日) 18:31:58
>>709
>その目的が「開発の効率化(笑」などではなく、
>コードの柔軟性や保守性に焦点を置いていることにも気づくはずなんだけどな。
0711デフォルトの名無しさん2010/08/29(日) 18:33:24
オレだけが唯一無二の最強の存在であり他はカス

こうですね
0712デフォルトの名無しさん2010/08/29(日) 18:43:43
ひとりで開発できればいいんだけどな。
少なくとも他人のコードをコントロールすべがないと話にならないね。
お前らアホだからだめなんだよじゃプロジェクトは終わらない。
0713デフォルトの名無しさん2010/08/29(日) 19:14:39
>>710
>>703
0714デフォルトの名無しさん2010/08/29(日) 19:18:32
>>713
いやその見識が浅いって言ってるんだが
0715デフォルトの名無しさん2010/08/29(日) 19:18:36
>>712
とりあえず、勉強する気が全くない奴をプログラマ扱いしてる現状は何とかすべき。
バズワードに飛びついてる奴の方が、「○○はバズワード(笑」とか言って冷笑してる奴より100倍マシ。
0716デフォルトの名無しさん2010/08/29(日) 19:19:42
OOPの定義がアヤフヤなんだよな。
メリット以前に。
0717デフォルトの名無しさん2010/08/29(日) 19:21:40
>>714
ソフトのメンテナンスを考慮しないという前提なら、設計とか抽象化とか考えずに
スパゲッティーを垂れ流した方が「開発効率」は高い場合もあるだろ。その程度の話だよ。
0718デフォルトの名無しさん2010/08/29(日) 19:21:50
>>715
お前に何とかできないのだけはわかった
0719デフォルトの名無しさん2010/08/29(日) 19:23:24
その程度w
0720デフォルトの名無しさん2010/08/29(日) 19:26:38
Rubyってさ
Railsかぶせて
元のRubyと似ても似つかない言語にしておいて
Rubyが普及したって喜んでるんだぜ?
他に無いだろこんなOO言語
0721デフォルトの名無しさん2010/08/29(日) 19:30:14
rubyってすごい書くとき書きやすくて、
スイスイ、ストレス無くいけるんだけど、
あとから読むとソースが読みにくい。

一方、Javaはやや冗長だけど、
後から読むとき、テラ読みやすい。
何年たってもすぐ思い出す。
やっぱ結局、型が旨いんだろうな。
0722デフォルトの名無しさん2010/08/29(日) 19:32:50
>>719
不満があるなら具体的に反論してくれ。
0723デフォルトの名無しさん2010/08/29(日) 19:35:41
1.4系からのRubyistとしては「あんな黒魔術普及しないだろ、てかして欲しくない」って思ってたよ

>>710
俺はそこ、対立項目でなく「並立するけど焦点ではない」と読んだのだが。

>>698
その上2行ってことじゃね。
0724デフォルトの名無しさん2010/08/29(日) 19:40:20
お前の興味ない話はその程度ってスタンスがすでに話にならないんだよ。
>「開発効率」は高い場合もある
は無視できる理由にならないだろ。実際アジャイルなんて口にしている以上
リファクタリングが開発に影響しないというスタンスは矛盾に近い。

>>723
対立ではなく排他に近いかな。軽視。
0725デフォルトの名無しさん2010/08/29(日) 19:40:51
>>718
1.底辺プログラマを全員クビにする。自称プログラマの採用を禁止する
2.単価が上がる
3.優秀な奴がプログラマへの道を志すようになる
4.プロジェクトメンバーの質が上がる
5.ヘブン状態
0726デフォルトの名無しさん2010/08/29(日) 19:41:54
1.底辺プログラマを全員クビにする。
2.残った連中でデスマ
3.ヘブン状態
0727デフォルトの名無しさん2010/08/29(日) 19:43:06
>>725
あなたに企画書には実現性が感じられない
0728デフォルトの名無しさん2010/08/29(日) 19:43:32
>>724
開発効率が高い方が良い、なんてのは大前提じゃないの。
それを軽視するエンジニアが存在するとは思えん。

俺が言いたいのは、「OOの目的は開発効率の向上です」なる言明は、
目的と手段とその結果を履き違えてるってこと。別に開発効率を軽視したりはしていない。
0729デフォルトの名無しさん2010/08/29(日) 19:44:25
>>728
は?大前提は目的外なの?意味不明。
0730デフォルトの名無しさん2010/08/29(日) 19:48:00
お前らが煮えきらんから俺が言ってやる。

「OOの目的は開発効率の向上です」と、断言できないことこそが問題。
OOPか、お前の力量か、どっちかが問題。
0731デフォルトの名無しさん2010/08/29(日) 19:49:48
>>729
俺のは「OOを採用したらむしろ開発効率が下がった、期待はずれだ!」的なありがちな意見への反論だからな。
確かに目の前の一次開発しか見てないなら「開発効率」は下がるだろうけど、OOのような手法の主眼はそこじゃねぇだろう、と。
0732デフォルトの名無しさん2010/08/29(日) 19:50:03
>>730
誰に何言ってるのかやっぱり意味不明。
0733デフォルトの名無しさん2010/08/29(日) 19:51:22
>>731
最初からなぜそういえないのかね。
では保守性とやらは現場で本当に上がっているか?
それはOOpのどんな技術によるものと考えているか?
0734デフォルトの名無しさん2010/08/29(日) 19:53:54
一時開発でさえ基本部分はOOでちゃんと設計して、
あとは適当な実装を手本としてコピペ実装してもらわんと効率悪いぞ。
0735デフォルトの名無しさん2010/08/29(日) 19:56:21
>>734
しかし>>731で言われているように開発効率が下がっていることが多々ある現実
0736デフォルトの名無しさん2010/08/29(日) 19:59:41
>>735
下手にやれば下がる。保守性も下がる。
普通にやっても下がる。
上手くやれば下がらない。
0737デフォルトの名無しさん2010/08/29(日) 19:59:44
>>735
それは多分世にあふれている型ベースのOOをあまり理解してないからかねえ。
深く継承しすぎて変更時のコストが大変なことになってるとか。
0738デフォルトの名無しさん2010/08/29(日) 20:00:40
で俺以外バカ理論に戻ると
0739デフォルトの名無しさん2010/08/29(日) 20:01:26
>>733
最初から言って・・・まぁ伝わったからいいや。
まぁ、教科書的な言い方をすれば、
「責務ベースで設計して各モジュールを最小化することにより、役割が明確になり保守性が高まる」
か。あと、OOpはそれを実現するための道具に過ぎない。
0740デフォルトの名無しさん2010/08/29(日) 20:01:50
結局構造化プログラミングに比べてOOpは特効薬じゃないってこと
0741デフォルトの名無しさん2010/08/29(日) 20:03:04
>>739
OOpでモジュール化を促進している技術要素はなんですか?
0742デフォルトの名無しさん2010/08/29(日) 20:03:34
>>737
「継承(IS A)より委譲(HAS A)」は、
まともにデザパタを勉強してれば当然身についてるはずなんだけどねぇ。
0743デフォルトの名無しさん2010/08/29(日) 20:04:33
〜なはず
お前の読みが甘いってことだろ
0744デフォルトの名無しさん2010/08/29(日) 20:05:03
実装の継承を大いに推奨して、
得意満面ピックアップしたC++およびハゲが全部悪い。
0745デフォルトの名無しさん2010/08/29(日) 20:11:11
>>741
どれも重要だが、特に重要なものを一つ上げるなら、静的型言語ならインタフェース。
動的型は詳しくないが、やはりmix-inになるのか。
0746デフォルトの名無しさん2010/08/29(日) 20:14:01
>>726
っ『人月の神話』
0747デフォルトの名無しさん2010/08/29(日) 20:14:49
>>745
>どれも重要だが
これがOOpの問題のひとつ。
あらゆる技術を俺の理解にあわせてくれってチームで言っても実現しない。
0748デフォルトの名無しさん2010/08/29(日) 20:15:29
>>747
だな。
0749デフォルトの名無しさん2010/08/29(日) 20:18:14
>>747
意味がよく分からなかったのでもっと具体的に。
0750デフォルトの名無しさん2010/08/29(日) 20:18:47
>>749
お前が望むオブジェクト指向とやらはチーム全員で共有されていますか?
0751デフォルトの名無しさん2010/08/29(日) 20:21:37
>>750
共有されてるも何も、まともな関連書は腐るほど出版されてるんだから、
各人がきちんと勉強すればいいだけじゃないの?
0752デフォルトの名無しさん2010/08/29(日) 20:22:01
>>747
例えばC++でプロジェクト進めてても設計は多種多様。
基本設計がフォーマット化されてなく
一子相伝のようにできるやつベースのシステムのときにはじめてある程度機能する。
これも従順なスタッフのときのみで俺OOpばかりだとすごいことになる。
これは確立された技術なんだろうか。
0753デフォルトの名無しさん2010/08/29(日) 20:23:16
>>751
その回答でどのくらい納得されるんだろうね。
このスレで散々OOpを定義しろってレスが出てきてるのに
勉強しろで君と理解共有できる人間がどのくらいいると思うの?
0754デフォルトの名無しさん2010/08/29(日) 20:25:19
構造化プログラミングを定義しろって議論はないよな。
これはどういう違いなんだろう。
0755デフォルトの名無しさん2010/08/29(日) 21:02:47
>>753
いいからGoF本読んどけって。
0756デフォルトの名無しさん2010/08/29(日) 21:06:51
>>754
構造化プログラミングの定義で議論が起こらない理由:
1.エドガー・ダイクストラ提唱のものしかない
2.定義は一度聞いただけで暗記できるほどシンプル
3.構造化プログラミング言語は初心者にも定義通りのコードを強制する

オブジェクト指向プログラミングの原則で議論が起こる理由:
1.複数の流派が存在する
2.さまざまな原則が積み上げられてきた
3.オブジェクト指向言語には初心者に原則通りのコードを強制する力がない
0757デフォルトの名無しさん2010/08/29(日) 21:07:52
>>755
そういう返しは意味ないから。
みんなにGoF読んどけっていっとけばプロジェクトうまくいくんなら
世の中のソフト開発どこも問題起きない。
0758デフォルトの名無しさん2010/08/29(日) 21:11:28
>>756
とくに
>3.オブジェクト指向言語には初心者に原則通りのコードを強制する力がない
がなぜできないのか研究されてないのかな
JavaもすべてにstaticつければCのようにかけるもんな。
0759デフォルトの名無しさん2010/08/29(日) 21:14:27
>>758
IDEとか静的解析ツールを併用すればいいんじゃない。
0760デフォルトの名無しさん2010/08/29(日) 21:18:41
また中身があるようでないことをw。
具体的にどのツールでなにすれば何が強制出来てどんな効果があるんだよ。
0761デフォルトの名無しさん2010/08/29(日) 21:24:22
>>760
各種リファクタリングツールとかcheckstyleとか、色々あるだろ。

まぁ、限界があるのはそうかもな。
構造化はコーディングスタイルの強制でまともになる部分が大きいけど、
OOは基本的に設計手法なわけで、OO「P」の部分で強制するのは難しい。

だから、よくあるパターンとしては、上級者がフレームワークを作って、
初心者にはフレームワークを使ってコードを書かせるとかあるよね。
0762デフォルトの名無しさん2010/08/29(日) 21:29:53
>>761
結局難しいじゃんw。
フレームワークは俺もそう思うけど結局フレームワークは各人によってまちまち。
これはOOpって技法の優位性とは違うと思う。
0763デフォルトの名無しさん2010/08/29(日) 21:40:01
>>757
「俗流」でないオブジェクト指向を理解する一番の早道はやっぱりGoF本を読んで
研究することだと思うが。「丸暗記」じゃなくてね。
0764デフォルトの名無しさん2010/08/29(日) 21:42:25
>>763
いやそんな開発現場構築できてるんならその方法本にすればベストセラーになりますよ。ってこと。
オタク知識開陳なら意味ないよ。
0765デフォルトの名無しさん2010/08/29(日) 21:43:03
お前はGoFのパターンしかねえのかよw
0766デフォルトの名無しさん2010/08/29(日) 21:44:33
GoF読めばみんな幸せ
0767デフォルトの名無しさん2010/08/29(日) 21:46:21
>>762
作ったフレームワークの設計を強制できるのはOOP言語の利点とは言えるんじゃない。

というか、決まった手順を踏めば誰でも良いオブジェクト指向フレームワークが書ける、
というものを期待しているのだとしたら、それはお門違いじゃないか?

教科書的な部分で提供できるのは、共通の語彙とベスト・プラクティスの提供まで。
(デザパタも、効用の一つは「パターンについての共通語彙の提供だ」というのはよく言われる)
それ以上は、それこそ「勉強しろ」「経験を積め」としか言いようがない。
0768デフォルトの名無しさん2010/08/29(日) 21:47:55
>>767
結局どこかにある天国を見つけられないのはお前のせいってことだね。
詐欺商法と何が違うんだろうね。
0769デフォルトの名無しさん2010/08/29(日) 21:48:31
>>767がいいこと書いた!
0770デフォルトの名無しさん2010/08/29(日) 21:49:39
>>767
今のOOp言語は強制力ないね。
いくらでも逸脱可能。
0771デフォルトの名無しさん2010/08/29(日) 21:50:18
>>767に同意だな
0772デフォルトの名無しさん2010/08/29(日) 21:50:25
結局体系化されてない概念なんだよね。
0773デフォルトの名無しさん2010/08/29(日) 21:51:36
>>770
お前はプログラム組まずにアプリ使っとけよ。
0774デフォルトの名無しさん2010/08/29(日) 21:52:11
>>773
そして開発室から誰もいなくなった。
0775デフォルトの名無しさん2010/08/29(日) 21:53:29
>>768
エンジニアなのに天国とか探しちゃう男の人って・・・。
0776デフォルトの名無しさん2010/08/29(日) 21:55:40
>>768
自分に言い訳してるみたいだなw、○○がないから使えないとか。
0777デフォルトの名無しさん2010/08/29(日) 22:00:48
777
0778デフォルトの名無しさん2010/08/29(日) 22:01:48
>>776
そうじゃない。現場で実効性があるのかってこと。
妄信している奴のほうが信用できない・
0779デフォルトの名無しさん2010/08/29(日) 22:06:50
>>778
少なくとも、オープンソース・ソフトウェアとかを見る限り、大半のプロジェクトで
OOやデザパタの語彙が採用されているのは確か。
いわゆる「システム開発」の現場で導入が進まなかったり失敗したりしてるのは、
オブジェクト指向という理念自身の問題ではないと思うよ。
0780デフォルトの名無しさん2010/08/29(日) 22:17:25
大半のプロジェクト?どのくらいコード読んでるのか疑問だが。
オープンソースはそれそのものに競争原理が効いているから
リーダーの能力の高いものは成功しやすいよね。
採用例が多いというのはメリットがあるからだというのはそりゃそうなんだろう。

>いわゆる「システム開発」の現場で導入が進まなかったり失敗したりしてるのは、
>オブジェクト指向という理念自身の問題ではないと思うよ。
ということも可能だが

オブジェクト指向を導入することにより「システム開発」の現場が改善できるわけではない。
ともいえるよね。

OOpの適用範囲を過大評価してることが多いからすごい気になる。
デメリットになってることも良くあるし。
0781デフォルトの名無しさん2010/08/29(日) 22:25:50
>>780
それは「××」という新しい方法論(××にはOOでもアジャイルでもTDDでも好きなものを)を
うまく取り入れられない組織運営とかプロジェクトマネジメントの問題だよね、はっきり言って。
オブジェクト指向のメリット・デメリットとはあまり関係がないな。というより、全く別の話。
0782デフォルトの名無しさん2010/08/29(日) 22:28:25
>>781
オブジェクト指向のコンセプトが理解しづらい面があるからじゃないか?
C言語導入しました、Java導入しましたレベルじゃないと難しい。
しかも誰がウィザードかっていうのが非常に判断しにくい。
0783デフォルトの名無しさん2010/08/29(日) 22:40:27
>>745
いや童貞言語の場合はmixinよりダックタイピングのが重要かと
と言うか、インターフェースに相当する部分をダックタイピングでやってる
でも動的言語でもインターフェースは有効だと思うんだがな
巷の動的言語ったインターフェース無いんだよなあ
0784デフォルトの名無しさん2010/08/29(日) 22:48:56
>>782
否定はしない。けど、ある程度の勉強はやっぱり必要なんじゃないかね。
■ このスレッドは過去ログ倉庫に格納されています