トップページ⇒tech
972コメント280KB

【結論】オブジェクト指向は戦場では必要なし 5

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001あたたたたNGNG
 オブジェクト指向はより自然なモデルに即したものではあるが、クラス
を理解する労力が大きく、目的まで達成するのに時間がかかる。
他人のソースを見るにも複雑でときほぐしにくい。
ちゃんと整備されたドキュメントがなければ粗大ゴミソース。
またオブジェクト指向が○○に優れているとかいう話も、あくまでちゃ
んと設計され、ちゃんと実装されたクラスがあるという前提での話。
実際は世の中にどれだけの糞SEや糞PGがいることか。。。
よってオブジェクト指向は戦場では使いものになりません。

前前前前スレ http://pc.2ch.net/test/read.cgi/tech/1011997945/
前前前スレ http://pc.2ch.net/test/read.cgi/tech/1013266554/
前前スレhttp://pc.2ch.net/test/read.cgi/tech/1013875413/
前スレhttp://pc3.2ch.net/test/read.cgi/tech/1021468476/

 私の独自の調査においては、OOで開発すると効率が悪く
バグコードが侵入しやすい傾向があるという調査結果が出ています。
また実際の現場での有効性に疑問をもっているという人は
全体の75.3%にも達しました。移行のことからOOはその有効性
に疑問があると言わざるをえません。

OOは近いうちに消えゆく技術となることでしょう。
0922デフォルトの名無しさんNGNG
物(オブジェクト)の見方はそりゃ多種多様というのが否定派の考えだよ

オブジェクト指向派はなんでもオブジェクトを指向しようとする

テンプレートでオブジェクを扱ってる部分もそりゃあるだろうよ
しかしSTLはオブジェクトを指向はしていない それは
道具であって、オブジェクトを指向させるかどうかはプログラマによるんじゃないの?
0923デフォルトの名無しさんNGNG
>>921
関係無いけど、ゲネリックか(笑)
0924921NGNG
どうにもプログラミング言語自体の話みたくなっちゃったけど
汎用ライブラリの設計でも同じことだよね。

つーわけで補足でした。
0925921NGNG
>>923
おっと、type指摘さんくす。
0926921NGNG
typeじゃなくてtypoね。欝だ。

>>922
では手続き型プログラミング言語では全てが手続きなのかというと、そういうわけではない。
ほかにも色々な技術要素があってプログラミング言語が成立している。
オブジェクト指向プログラミング言語も同じで、ほかにも色々な技術要素があって
はじめてプログラミング言語として成立する。
STLなんかも同じように、STLを構築する多くの技術要素のうち
より大きな存在がオブジェクト指向とジェネリックプロラミングだというだけの話。
で、どっちが欠けてもSTLは今のSTLとは別物になる。
0927デフォルトの名無しさんNGNG
>オブジェクト指向派はなんでもオブジェクトを指向しようとする

まず「オブジェクトを指向する」ってどういう意味で使ってるんだ?

STLが指向してないのはなぜ?
オブジェクト指向派がなんでもオブジェクトを指向しようとしてるって
どういう意味?
0928デフォルトの名無しさんNGNG
Smalltalkのような動的なオブジェクト指向言語は、ジェネリックと
オブジェクト指向が融合した例だと思う。
0929デフォルトの名無しさんNGNG
長い沈黙の後、ついにあの>>922が重い口を開いた…

↓さあ、どうぞ!
0930デフォルトの名無しさんNGNG
ぁる遺伝子研究の結果、最強の兵器となるべく生まれた。
通称(ジェネリック)と呼ばれている。
あるとき、12人のぁぁぁっ、 ぐふっ・・・
0931922NGNG
 簡単な話だ  たとえばアレイのコンテナを使って格納し、ソートアルゴリズムをかけて
出力するだけの利用をしているのをみて、これをオブジェクト指向と呼ぶのかい?

それならそれでいいが、それは
【オブジェクト指向派がなんでもオブジェクトを指向】の例証になる

それが違うというのなら、上の例証になる
0932デフォルトの名無しさんNGNG
>>931
その例はライブラリユーザーのコードだろ。

STLのライブラリとしての構想は、オブジェクトを指向していると思ったほうがいいはず。
イテレータによってアルゴリズムを抽象化して提供しているとか。
0933922NGNG
>>932
 もちろんそうだ。 MFCがオブジェクト指向とは思えないから VCLを例にして
VCLがオブジェクト指向で作られていたとしても、 VCLユーザがオブジェクト
指向する必要はないのと同じだ。

 では、そういう使い方をするユーザにとって VCLはオブジェクト指向なのか?
 単なる便利なライブラリでしかない

 さて、一般のクラスと違って テンプレートは 必ずしもオブジェクトを生成する訳じゃない
イテレータはクラスを作成し、その実体を作ればオブジェクトを作成するのかもしれないが
多くのアルゴリズムは、オブジェクトを引数とする関数を生成する

 それをオブジェクト指向として捉えずに使う事は VCLよりたやすい。
0934デフォルトの名無しさんNGNG
Smalltalkでさえ使うだけならオブジェクト指向である必要はない。
しかし、Smalltalkライブラリを最大限有効に利用しようとしたら
ライブラリユーザのコードもオブジェクト指向的にしたほうがよい。

STLも程度の違いはあれ、それと同じだと思うが。
つまりSTLを使うだけであればオブジェクト指向する必要はない。
しかしSTLをより有効に利用しようとしたら
少しずつでもオブジェクト指向的にしていったほうがよい。
0935コギャルとHな出会いNGNG
http://kado7.ug.to/net/


朝までから騒ぎ!!
   小中高生
 コギャル〜熟女まで
   メル友
  i/j/PC/対応

女性の子もたくさん来てね
  小中高生大歓迎です                 
全国デ−トスポット情報も有ります。
全国エステ&ネイル情報あります。

  激安携帯情報あります。
0936デフォルトの名無しさんNGNG
結論:オブジェクト指向は(クラスライブラリを使うだけの)戦場では必要なし
0937デフォルトの名無しさんNGNG
結論:プログラミングは(プログラムを書くだけの)戦場では必要なし。ヤッター!
0938922NGNG
>>934  オブジェクトという捉え方は場合によって有効なのは確かだよ
そしてオブジェクト指向を習得することが必要なのも確か

しかし習得中の状態で、オブジェクト【指向】してしまうのはどうだろうか?
それは >>1 のようになってしまうだろうという事

つまりは習得は必要な事。しかし習得中はオブジェクト使うだけにしといたら? って事
0939デフォルトの名無しさんNGNG
なんか 剣を抜かなくなって初めて達人 って言葉に似てるな
0940デフォルトの名無しさんNGNG
OOはOOしなくなって初めて達人?
0941_NGNG
「カプセル化」「継承」「多態」を道具として使うのが達人
なんでも適用しようとするのが廚
ってことかな?
0942デフォルトの名無しさんNGNG
ホントの達人は、「カプセル化」「継承」「多態」なんて自然にやってしまって
そういう用語を逆に使わなくなるんじゃないかな
0943デフォルトの名無しさんNGNG
>>940
と、>>1は思っているようだ。
0944デフォルトの名無しさんNGNG
実際のプログラミングじゃ使わないけど、仕様決定段階で
考え方だけ借りるのはよくある。
まとめるのに便利なんだよね、オブジェクト指向って。
0945デフォルトの名無しさんNGNG
>>944
そうなのか…
俺的には、OOA/OOD/OOPでは、一番オブジェクト指向的要素が小さいのがOOAだと思うのだが。
0946デフォルトの名無しさんNGNG
>>933
MFCがオブジェクト指向していると思えないのはなんで?
糞ライブラリだから?
VCLがオブジェクト指向していると思うのはなんで?

某エピ氏によると、オブジェクト指向フレームワークとしてみた場合、
MFCは最低限DocViewとしてフレームワークが組まれているけど、
VCLはそれすらもしてない、最悪なフレームワークであると言うことなんだけど。

俺はVCLは知らないから、何ともいえん。
ただ、MFCはAPIの薄いラッパーに過ぎない糞ライブラリであることには同意だけど、
オブジェクト指向をしてないと言う意見には疑問を抱く。
0947デフォルトの名無しさんNGNG
>>946
MVCのCが無い感じだね。MFC。
それに対してVCLはライブラリ集。

個人的にはのびのび書ける後者が好きだけどね。
0948デフォルトの名無しさんNGNG
>>947
Cがないんじゃなくて、ウインドウという表示操作を同一のオブジェクトで
行う環境だから、CをVに吸収しただけでしょ。
もっとも、今だとtraitsとして分離するのが良いのかも知れないけど。

VCLはたしかに使いやすそうではあるんだけど、
モデルとビューが分離されてないから、人のソースのメンテが大変になりそう。
勿論、切り分て書くようにしていればいいんだけど、
強制されないと横着しちゃうこともあるし。
0949デフォルトの名無しさんNGNG
Viewだけ用意されているのがVCLじゃないの?

Modelやコントローラの枠組みを用意しないのも一つの主張だと思うよ

VCLだけだと、確かに人のソースのメインテナンスは難しいと思う
でも
コンポーネントを使う事で、フォーム上からイベントを視覚的に追いかける
事ができるため、比較的読みやすく、機能の変更は楽になっている
0950デフォルトの名無しさんNGNG
そうか? VCLでも
データベースコントロールについては、MVCが揃ってるように思うのだが?
0951デフォルトの名無しさんNGNG
>>948
ウィンドウシステムでのGUIであっても、VとCを分離したほうがいい場合も結構あるよ。

たとえばテキストエリアでどんなキーバインドにするかを
コントローラで直接とっかえられたら楽な場合なんかもあるし、
あと、マウスで使ったりタッチパネルで使ったりする場合があるとか。
0952デフォルトの名無しさんNGNG
>データベースコントロールについては
結局これだけじゃん。
VCLは基本設計にMVCを採用してないでしょ。
VCLが劣っているって言いたいんじゃなくて、OOフレームワークではないって言っているの。
コンポーネント集としては優れているかもしれないけど、使ってるわけじゃないんで
俺に優劣の評価は下せない。

>>951
まぁ、そらそうだろうけど、MFCではVにCを吸収したってこと。
だから分離するのが良いのかも知れないけどって書いた。
0953デフォルトの名無しさんNGNG
>>951 それならちゃんとActionという仕掛けがあるよ
0954デフォルトの名無しさんNGNG
よくは知らないけど VCLでも Web関係では MVCが採用されてるみたいだけど?
0955デフォルトの名無しさんNGNG
採用っていうより、それ以外に手がないだけじゃん。
というか、web周りはIEコンポだから当然。
0956デフォルトの名無しさんNGNG
? IEコンポって何の関係が?
0957デフォルトの名無しさんNGNG
TWebBrowserでしょ?
あれってIEのIDL取り込んでるだけじゃん。
それとも、ソケットコントロールのこと?
ビューなんかあるの?
0958デフォルトの名無しさんNGNG
>>957
Mの話じゃないかと。
0959デフォルトの名無しさんNGNG
WebSnap/WebBroker とかの事じゃないの?
0960デフォルトの名無しさんNGNG
なんだかよく判らないや
 具体的にはどんな感じ? Actionって
-------------------------------------------------------
アクションリストがなければ、開発者はすべてのコマンド項目とアプリケーション
オブジェクトの間のすべてのリンクを追跡しなければなりません。ユーザーインター
フェース要素は、特定のアプリケーションオブジェクトの状態に基づいて無効にし
たり、再度有効にしたりする(たとえば [貼り付け] コマンド)必要があります。
その結果がスパッゲッティユーザーインターフェースデザインです。アクションリ
ストがあれば、開発者に必要なのはユーザーインターフェースとアプリケーション
ロジックの間のリンクを 1 つ、アクション項目を使って管理することだけです。1
つのアクションをメンテナンスするだけで、開発者は真にオブジェクト指向の方式
でアプリケーションロジックとソースコードの間の相互作用を管理できます。Delphi
4 では、[切り取り]、[コピー]、[貼り付け] といった開発者が再利用できる共通ア
クションを多数備えています。アクションリストは、ユーザーインターフェースデ
ザインのブレークスルーを備えています。ユーザーインターフェース要素が初めて
アプリケーションロジックから分離され、その結果、再利用性とアプリケーション
の安定性を増しながらコードの複雑性と行数が削減されています
0961デフォルトの名無しさんNGNG
>>960
commandパターンって奴じゃないの?
0962デフォルトの名無しさんNGNG
>>960
なんだかそれ読んだ限りでは>>951の話とは関係なさそうだな。
0963デフォルトの名無しさんNGNG
つまりは、
 【ビジュアルコントロール】<->【アクション】<->【ボタン・メニュ類】
 となっていて、
 ボタン・メニュのショートカットを操作しなくても、アクションを通じて
 自動的にキーバインドを変更出来るし、入力コントロールや
 フォーカスの状態に応じて自動的に選ばれるし、さらにイネーブル
 もされたりする

 それから実際の動作も アクションのイベントとして変更出来る
0964デフォルトの名無しさんNGNG
>>963
?
0965デフォルトの名無しさんNGNG
ボタンやメニューはビジュアルコントロール(TControlから派生?)じゃないの?
0966960NGNG
>>963
ありがと、
D6パーソナルのヘルプ読んでもやっぱりよく判らないや

アクション=コントローラ?
アクションのターゲット=ドキュメント?
アクションのクライアント=操作側
みたいに別けてるのかなあ
0967963NGNG
>>965 最初の【ビジュアルコントロール】は間違いで ああ 確かに説明が難しいな
0968951NGNG
>>963

キーバインドの話はショートカットとかじゃなくて、
たとえばviみたいな操作体系とemacsっぽい体系を実行時に切り替えたり、
あるいは実行時にユーザ定義したいという話で、
それはコントローラを直接入れ替えたり、キーバインドを1つのオブジェクトにまとめて
コントローラにそれを保持・管理させればすっきり簡単になるわけよ。

タッチパネルの例では、例えばマウスを使った操作では普通の操作体系だけど、
タッチパネルではジェスチャーが使えるようにしたりとか、
通常にあがってくるイベントより細かい所で変更したくなるわけよ。

そういうのって、アクションを使えば同様な事ができるの?
0969963NGNG
>>968 yes
0970963NGNG
VCLも今ではバージョンが6なんだから、 そりゃ細かく色々と機能が加えられているさ

Ver1の頃は そりゃViewだけだったかもしれない。そして互換性持たせてるから
今でもViewだけ使って十分にアプリが作れるけどさ
0971868NGNG
>>913
俺は関数型OOP厨房。
関数型OOP覚えたてだから何か書いてみたかったんだよ〜

> オブジェクトと構造体を結び付けるからおかしくなる
ってのはホントのこと。

純粋OOPL万歳!
0972デフォルトの名無しさんNGNG
次スレ
オブジェクト指向は戦場では必要なし6
http://pc3.2ch.net/test/read.cgi/tech/1029297075/

次々スレ
オブジェクト指向は戦場では必要なし7
http://pc3.2ch.net/test/read.cgi/tech/1030029357/

便乗スレ
オブジェクト指向は戦場では必要なし7 は必要なし
http://pc3.2ch.net/test/read.cgi/tech/1030029169/
レス数が950を超えています。1000を超えると書き込みができなくなります。