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

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

■ このスレッドは過去ログ倉庫に格納されています
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は近いうちに消えゆく技術となることでしょう。
0175デフォルトの名無しさんNGNG
>>164
だから、それのどこが構造化設計だっての。算数でしょ。アフォらし。
0176デフォルトの名無しさんNGNG
>>174
含有してるだろ。
含有してないというのなら、構造化設計にあってOO設計にはないものを挙げてみそ。
0177デフォルトの名無しさんNGNG
>>172
誰に訊いてんの?アンチ厨?
0178デフォルトの名無しさんNGNG
>>175
 算数というリテラルを貼ったら、算数だけの視点になってしまうようじゃまだまだ

世の中には一つの現象に複数の概念が含まれている場合も多い
俺は人間だ。 が、同時に動物でもあるし、日本人でもあるのだろう。

>>176
 例:  ボトムアップ ・ ウォータフォール 
0179デフォルトの名無しさんNGNG
アドインの仕組みを作るときにはOO設計が必要だろ。
0180デフォルトの名無しさんNGNG
必要ない
0181デフォルトの名無しさんNGNG
>>180
どうやって作る。
0182デフォルトの名無しさんNGNG
必要なデータの流れを分析して
 トップダウン&ボトムアップで >>181
0183デフォルトの名無しさんNGNG
>>178
OO設計はスパイラル型なものが多いが、
スパイラル型はウォータフォール型が多重に重なり合っていると看倣すとができる。
つまりスパイラルの各ステップはそれぞれウォータフォール的な開発の繰り返しとなる。

また、OO設計でもボトムアップなものは多い。
例えばAgileに代表されるlight weight methodsでは詳細はボトムアップで詰めていく。
0184デフォルトの名無しさんNGNG
>>178
では、楕円の周長を求める近似式を構造化設計で導き出してみてください。
0185デフォルトの名無しさんNGNG
いくらなんでもデザパタが必要ないと思っている奴はいないよね
0186デフォルトの名無しさんNGNG
>>184 要求する精度は?
0187デフォルトの名無しさんNGNG
俺に言わせれば分析や詳細でない設計に構造化やらOOやらをつけるのがおかしい。
0188デフォルトの名無しさんNGNG
>>185
>>153 からの引用。反論できるならばやってみろ。
あと、OO信者ってデザインパターンを崇拝しているけど、滑稽だね。

良くある概念を簡潔に表現できないから
ある定石で冗長に表現したのがデザインパターン。
要するにOOが使いにくい証拠品。

例えばTemplate Method
C++の場合、このデザインパターンを用いなくとも言語仕様でTemplate
を表現することができ、
C++のTemplateの方が余計なクラスを定義しなくともよい。

OOPLでは無い言語で多態を表現する場合、冗長になることはいやがるのに、
OOでデザインパターンのような冗長な表現を嫌がらないのは何故?
0189デフォルトの名無しさんNGNG
言語レベルでtemplateあるならそれでいいじゃん。

なんでそれがデザパタを否定することになるのかがワカラン。
0190デフォルトの名無しさんNGNG
>>188
良くある概念を簡潔に表現できない場合、デザインパターンを使わないで
冗長にしないで表現できるの? 代替案を出せ。

Templateの使い方が間違ってないか?

多態を表現するという目的があったとき、冗長にならないのは
どっちだと思う。
0191デフォルトの名無しさんNGNG
>>188
テンプレートで抽象できるものがクラス階層とマッチしていたらTemplateMethodパターンを使えばいいし、
どうにもクラス階層とマッチしなければクラス階層を見直すか、あるいは別の手段を講じればいい。
その場合、C++のテンプレート機能はその候補の1つになるだろうな。
それだけの話。
0192デフォルトの名無しさんNGNG
>>186
とりあえず、パラメータとして渡されるものとしてくださいな。
0193デフォルトの名無しさんNGNG
アンチOOって痛いな(プ
0194デフォルトの名無しさんNGNG
>>192 なるほど、
 パラーメータとして渡された 精度から、
 楕円の周長を求める近似式を導き出す という課題ですね?

構造化設計で 設計フローとしてはこうなるでしょうね。
  1、調査 -> 結果
    1-1 数値計算では定積分が最も効率のよい算出方法
    1-2 既知の近似式 ttp://www.infoeddy.ne.jp/~tensyo/prog/ALGO.HTM
      (2-π)(1-x^1.55)^1.08+π

  2、必要な精度の近似式を得る為に
       1-2を参考に  (2-π)(1-x^1.55)^1.08+π + Σan*x^n
      として、数値積分し、必要な重み an を求めるものとする

 あとは 数値積分と、重み an を求める詳細設計に入る

では、OO設計ではどうなるのですか?
0195デフォルトの名無しさんNGNG
>>194
それは構造化設計によって楕円の周長を求める近似式を導き出しているのではなく、
構造化設計的な表現によって利用する近似式を選択する方法を示しているにすぎない。

全然ダメダメですね。
0196デフォルトの名無しさんNGNG
>>195 ワクワク ますますOO設計に期待が膨らみます
0197デフォルトの名無しさんNGNG
>>196
知恵遅れ?
0198デフォルトの名無しさんNGNG
え? だって >>195 さんは 構造化設計では出来なかった楕円の周長の近似式を
OO設計なら簡単に出せるのをこれから見せてくれるんでしょ? そりゃワクワクしますって
0199デフォルトの名無しさんNGNG
>>198
知恵遅れ?
0200デフォルトの名無しさんNGNG
OO設計ってのはこういう場合

 既存クラスで 解決出来そうなものを探す
 ・見つかった-------> ラッキー
 ・見つからなかった--> 無ければ出来ませんと答える

 って意味だろ?
0201デフォルトの名無しさんNGNG
>>198
誰がそんな事言ったわけ?妄想ですか?
0202デフォルトの名無しさんNGNG
>>198
この問題で構造化設計を使う必要がないのは同意したわけだよね。
だからといって構造化設計が必要がないとは思わないよね。

これと同じように
ある簡単な問題でOO設計を使う必要がなくても、だからといって
OO設計が必要がないということにならないってこと。
0203デフォルトの名無しさんNGNG
>>202
え? 構造化設計では解けなかったんでしょ?
だからOO設計で解いてくださいよ
0204デフォルトの名無しさんNGNG
>>203
知恵遅れ?
0205デフォルトの名無しさんNGNG
OO厨の行動パターン
  既存レスで 煽れそうなものを探す
  ・見つかった-------> ラッキー
  ・見つからなかった--> 1行煽りレスを返す
決して具体的なOO設計をしません。というかできません。
何でこのスレに粘着しているのかも不思議です。
0206デフォルトの名無しさんNGNG
ヴァカが勝手な思い込みで語りだすと迷惑。
0207デフォルトの名無しさんNGNG
>>203
もう少し日本語を勉強しろ。まずはそれからだ。
0208194NGNG
>>202 なんで? ちゃんと構造化設計の手法である
  トップダウン とボトムアップ
 を使った問題解決手法を書いていますが?

既存の方法(既知の公式)にボトムアップして任意精度の公式を作る方法を
述べてからトップダウンで、詳細設計に入る方法を書いてるつもりで
0209デフォルトの名無しさんNGNG
>>206
激しく同意
特にOO設計ができないのに1行煽りを繰り返すヴァカは逝って欲しい。
0210デフォルトの名無しさんNGNG
>>208
OO設計でも同じ。OOで解く場合も同じ手法を用いるが
それは構造化設計がOO設計に取り込まれているから。
0211デフォルトの名無しさんNGNG
だからさっき言っただろ。
俺に言わせれば分析や詳細でない設計に構造化やらOOやらをつけるのがおかしい。
どちらも手法は同じ。
0212デフォルトの名無しさんNGNG
>>208
問題を解決する道筋を構造化設計手法的に記述しても、
それは構造化設計によって楕円の周長を求める公式を導き出したことにはならない。
実際に用いられているのは数学の公式/定理/手法である。
0213デフォルトの名無しさんNGNG
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
どちらも手法は同じ。
0214デフォルトの名無しさんNGNG
>>212の続き
つまり、君がやった事はUMLを使ってRUPを記述したようなものだ。
UMLが構造化設計での記法に置きかわり、
RUPが「近似式を応用する方法」に置きかわったにすぎない。
つまり、方法を記述しただけで、
その方法を実践するのに用いたのは数学的手法だ。
0215194NGNG
数学的手法をどこで使っているのか自分にはわかりませんが、

目的を具体化する作業が設計であり、

実現までの必要な方法を記述してゆく事が構造化設計の手法だと思っていますよ
0216194NGNG
 あ!忘れていました。
>>212 代数的な解として楕円の周長を求める公式は作れない事がどうとかいうサイトがありましたから

  公式を導き出すという表現は、問題をねじ曲げてしまうだけだと思いますよ
0217デフォルトの名無しさんNGNG
>>216
では「計算機での有限精度での実用に適した近似式を導き出す」と言い替えましょうか?
0218デフォルトの名無しさんNGNG
よく判らないけど、
ようするに、オブジェクト指向設計が構造化設計を含んでて
難しい問題は構造化設計で解けるんなら
構造化設計だけで十分じゃないの?
0219デフォルトの名無しさんNGNG
>>218
ちょっと違うな。

すべての問題が構造化設計で最適に解けるんなら
構造化設計だけで十分じゃないの?

とするべきだ。答えは否だろう。
0220194NGNG
>>217 
たぶん、公式を作るという事なら数学的な問題なのでしょうが、これは必要な精度の近似式の
一つを得るまでの 解法なのですから

 プログラム設計手法の応用範囲だと思いますが・
0221デフォルトの名無しさんNGNG
>>219  たとえばどんな問題が構造化設計では解けなくて、どんな問題がオブジェクト指向なら簡単に解けるの?
0222デフォルトの名無しさんNGNG
>>220
いや、メタレベルが1つ違うんだって。
「開発プロセス」を示しても開発した事にはならないでしょ?
0223デフォルトの名無しさんNGNG
マシン語以外は戦場では必要なし!
0224デフォルトの名無しさんNGNG
>>223
(゚Д゚)ハァ?
0225デフォルトの名無しさんNGNG
>>221
構造化設計でも解けないことはないよ。
OO設計の方がふさわしいこともあるってだけで。
その逆も真なり。
0226デフォルトの名無しさんNGNG
今年は暑いから仕方ないな。
そっとしといてやれ>>224
0227デフォルトの名無しさんNGNG
>>222の補足
つまり、例えば開発スケジュールをPERT図で記述しても、
PERT図でシステム設計をしたことにはなりませんよね?

同様に、
構造化設計の記法で近似式を導き出す過程を記述しても、
構造化設計で近似式を導き出したことにはならないわけです。
0228デフォルトの名無しさんNGNG
(´,_ゝ`)プッ
すげえバカ発見。
0229デフォルトの名無しさんNGNG
>>だからOO設計の方がふさわしいことって何?
 GUIクラスライブラリ以外にOO設計がふさわしいものって何がある?

クラスライブラリ使うのはOOじゃないでしょ
0230デフォルトの名無しさんNGNG
>>227
そうだそうだ。

OO設計の記法で近似式を導き出す過程を記述しても、
OO設計で近似式を導き出したことにはならないわけなのだ。

・・・なにか?>>ALL
0231デフォルトの名無しさんNGNG
XX設計の記法でYYを記述しても、 XX設計でYYを記述した事にはならないのだ!

そういやOO言語でプログラムを書いても OOした事にはならないよと言ってるから
これはOO厨の常套句?
0232194NGNG
もういいよ。 原則論にはウンザリ

だから 戦場では必要ないなんて言われるのさ。
0233デフォルトの名無しさんNGNG
つーかね。設計の意味することがみんなばらばらだから話がかみ合ってないんだよ。
0234デフォルトの名無しさんNGNG
>>194
あなたの周りの人間は、コミュニケーションに苦労していることでしょう。
0235デフォルトの名無しさんNGNG
>>233
> 設計の意味することがみんなばらばらだから
じゃあ、「設計」って何?
0236デフォルトの名無しさんNGNG
>>235
君の思っている設計を書いてみ。いろいろ反論されるから。
0237デフォルトの名無しさんNGNG
ttp://www.artlex.net/gonta/jpn/objprog/c1_3.html

>オブジェクト指向設計は、トップダウン方式でもボトムアップ方式でもありません

あれ? こんな事言ってる人もいるよ?
0238デフォルトの名無しさんNGNG
>>236
ん、了解。まずは口火を切ってみようか。

設計とはシステムをある方法で表現したものである。
構造化設計の場合、主にDFDなどでシステムを表現する。
OO設計の場合、主にUMLなどでシステムを表現する。

ここまでで反論どうぞ。
0239デフォルトの名無しさんNGNG
あ、ちなみに反論するときは理由も付けてね。
できれば自分で思っている設計の定義を書いてくれると建設的になる。
0240194NGNG
じゃ自分のソフトウエア設計の定義:
 ,要求される性能,機能に基づいて機構や構造を定める
  これに必要な ツールやライブラリ、そしてスタイルの選定
  人員、工程、などの計画を立てることも含む。

  設計内容は文章や図で示す事もある、口頭で伝える事もある
0241194NGNG
>構造化設計の場合、主にDFDなどでシステムを表現する。
 について、
 DFD:データフロダイアグラムは 分析の時に使う
 構造化設計時には機能面に絞って設計する為に、
 分析時にはデータフローで分析する事がより重要となる為
0242デフォルトの名無しさんNGNG
>>238
UMLつってもいろんな図があるよね。全部設計用と思っていいの?
0243逝って良しの1NGNG
設計つうのは、モノを作る前にやるというタテマエがあって、
でも実際にはモノを作ったあとにやるヤシだろ。
0244デフォルトの名無しさんNGNG
>>243 やれやれ、皮肉いや格好イイとでも思ってるのかねえ
0245デフォルトの名無しさんNGNG
>>244
ま、ほら、そいつはアレだから。
0246デフォルトの名無しさんNGNG
OOが駄目とか言ってる奴はいっぺんxUnit使って開発やってみろ。
目から鱗落ちるぞ。

OO出来ないと駄目とか言ってる奴は「リファクタリング」読んでから自分のソース見直してみろ。
恥ずかしくて穴に入りたくなるぞ。
0247逝って良しの1NGNG
なんだか知らんが俺が天然でとっくの昔に発明してるに決まっている。
0248デフォルトの名無しさんNGNG
とっくに煮詰まってんじゃねえか
sageろやハゲ
0249デフォルトの名無しさんNGNG
>>231
ヴァカ?それとも白痴?
0250デフォルトの名無しさんNGNG
>>242
UMLは記法の総集編みたいなもの。
多くは分析に「も」使うし、設計に「も」使う。
具体的にどの記法を用いるかは、開発方法論によって異なる。
0251デフォルトの名無しさんNGNG
>>237
ユースケースを洗い出してクラス図を描く(改良する)ところはボトムアップ的だし、
クラス図からコラボレーション図で詳細を詰めていくところはトップダウン的なわけで、
OO分析でもOO設計でも、トップダウンとボトムアップを何度も繰り返すのが普通だ。
0252デフォルトの名無しさんNGNG
>>251
で、コーディングに入ってると、不幸を招くプロジェクトに様変わりだ。
0253デフォルトの名無しさんNGNG
>>252
なんか最近分かってきたよ。今までみたいに「天才が設計して莫迦が
コード書く」やり方だと、確かに >>251 までやって「じゃ、あとお前の
仕事ね」でいつまでたっても完成しない & 実装漏れ、仕様誤解だらけ。
UML とか OO とかってのは設計〜開発〜テストまで一人でやる職人プロ
グラマが使うものであって、COBOLER みたいなリーマンプログラマが
使うもんじゃない。
0254デフォルトの名無しさんNGNG
>>253

ハァ?
0255デフォルトの名無しさんNGNG
>>253
「設計が天才でコード書きがバカ」なんていうプロジェクトより、
「設計がなにも出来ない能無しで、コード書きはコードしかかけ
ない」プロジェクトの方が圧倒的に多いな。

下の場合、コード書きは自分の責任を全うしているが、設計者
連中は首にすべきゴミ。
0256デフォルトの名無しさんNGNG
>>253
そう、スキル格差のある開発に導入したところで失敗する。結局、設計の
最初から話に参加していないと、読めない書けない作れないで終わって
しまう。だからコーディングフェーズにだけ派遣を大量確保して力技で
進める様な銀行開発では使えない。

逆に、完全なブラックボックスを一人で作りきれるだけのスキルを持った
連中の間で使うには非常に便利なものだ。自社内開発などは結構こっち
のケースも多いだろう。
0257デフォルトの名無しさんNGNG
>>255
ふーん、じゃ、誰が設計すんの?(藁藁
0258デフォルトの名無しさんNGNG
>>256
つーか、だからこそUMLのUはUnifiedのUなんだよな。
「誰でも」統一された記法を使うことも大事だが、
「どのフェーズでも」統一された記法を使うことはもっと大事。
0259デフォルトの名無しさんNGNG
クラス図作成は分析?設計?
構造化設計でそれに対応するものはなに?
0260デフォルトの名無しさんNGNG
>>259
通常は分析段階からクラス図を描いていって、
シーケンス図やユースケース等といっしょに練っていきます。
ある程度それが練れてきたら、設計にはいります。
設計でもクラス図を改良/詳細化していきますが、
分析段階と違って、コンポーネントやパッケージを意識し、
コラボレーション図などによってクラス図の構造や振舞いを検証し、改良していきます。

もちろん、主に使う図の種類や描く順番や評価方法など、
それぞれの方法論によって異なります。
UMLはあくまで記法にすぎないので。
0261デフォルトの名無しさんNGNG
ところで、>>252は>>251のどこを見て「不幸を招くプロジェクト」になると思ったのだろうか?
OOや構造化手法に限らず、設計の方法論の大抵はトップダウンとボトムアップをすると思うのだが。
0262デフォルトの名無しさんNGNG
>完全なブラックボックスを一人で作りきれるだけのスキルを持った連中

は、 C++ より Cが好き そしてアセンブラが好き
0263デフォルトの名無しさんNGNG
>>262
そんなことはない。
0264デフォルトの名無しさんNGNG
>>262
俺は丁度逆だ。
システム依存なんていやんな感じだもん。
0265逝って良しの1NGNG
C,アセンブラだってシステム依存無しに書けるよ。
つうか非依存で書けやゴルア。
0266デフォルトの名無しさんNGNG
>>265
ども、素人です。
アセンブラでもそんなことできるの?
0267デフォルトの名無しさんNGNG
>>266
アフォの相手はアフォの片棒をかつぐことになります
0268デフォルトの名無しさんNGNG
>>267
了解。一つお利口になりました。
0269デフォルトの名無しさんNGNG
>>266 マクロアセンブラを使って、ニーモニックの違いを吸収させるとかね
0270デフォルトの名無しさんNGNG
>>269
8080とSPARCに同じアセンブリソースからアセンブルできるのかよ。
ついでに68030と8086の場合はどうだ?
0271デフォルトの名無しさんNGNG
>>270 その例だと C でも可搬性のあるコードは一部しか書けない

それでも C程度には可能だよ
0272デフォルトの名無しさんNGNG
>>271
アセンブリ言語である以上、機械語と1対1対応してないとアセンブリとは呼べないと思いますが、
それでも可搬性のあるコードが書けるのですか?例えば、8080と8086ではどうでしょう?
エンディアンが同じなので、可搬性のあるC処理系を実装することは可能ですが、
可搬性のあるアセンブラは存在可能ですか?
0273デフォルトの名無しさんNGNG
>>272 だからマクロASM なら可能

それから機械語と1対1対応してないアセンブラなんて沢山あるよ
論理左シフトと算術左シフトは同じバイナリになるとかさ
0274逝って良しの1NGNG
>>270
Z80→68000
Z80→286
ならやった。
>>272
仮想マシンコードでやるのだ。
■ このスレッドは過去ログ倉庫に格納されています