【結論】オブジェクト指向は戦場では必要なし 5
レス数が900を超えています。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は近いうちに消えゆく技術となることでしょう。
0809デフォルトの名無しさん
NGNG> ファイルスコープで隠蔽とか、関数ポインタの構造体で多態モドキ
> なこと(いや、Cが先なんでもどき呼ばわりは失礼だが)とか、やる
> でしょ?
どうでしょ?Simula-67とか、現在のように洗練されていなくても
継承による多態は存在はしていました。
0810デフォルトの名無しさん
NGNGvoid *のポインタを用意させて
void *hoge=OpenHoge(引数);
HogeHage(hoge,引数)
みたいなのは、普通だしな
これをオブジェクト指向だななんて 呼ばないでくれ
だって FOpenから学んだんだから
0811810
NGNG0812デフォルトの名無しさん
NGNGつーか、多態だからといってオブジェクト指向なわけではないでしょ。
parametric polymorphismなんかはむしろ(非OOな)関数型言語だし、
operator overloadingやimplicit type conversionによるad-hoc polymorphismなんかはFORTRANからあるし。
>>810のCでの例はinclusion polymorphismの一種だね。
ただ、言語仕様でそれを積極的にサポートされてるかどうかは大きな違いだけど。
0813812
NGNG> parametric polymorphismなんかはむしろ(非OOな)関数型言語だし、
は、
> parametric polymorphismなんかはむしろ(非OOな)関数型言語のほうが主流だし、
に読み替えてちょ。
0814810
NGNG判ってくれたか。 Cでやってたように、オブジェクト指向もどきの事を C++ や Delphiでやってるだけで
オブジェクト指向をやってる訳じゃない。
それは似てるけど、俺たちはオブジェクトを指向などしたくないんだ
0815デフォルトの名無しさん
NGNG> (´゚∀゚`) OOが普及するっていってから何年経ってるんだ?
>
>
> 788 名前:デフォルトの名無しさん 投稿日:02/08/12 14:20
> (´゚∀゚`) 構造化分析設計が普及するっていってから何十年経ってるんだ?
>
OOも30年以上の歴史があるんだけど・・・ね。
まあ方法としては確立されてはいるけど、
結局はイマイチなんだろうね。
0816デフォルトの名無しさん
NGNGだからOOなんてバブルみたいなもんなんだよ。
0817デフォルトの名無しさん
NGNGつーかさ、君がやっていた(いる)事は
「オブジェクト指向もどき」じゃなくて「自作多態」って事なんじゃないの?
0818デフォルトの名無しさん
NGNG(´゚∀゚`) OO一生懸命勉強したのにね。お気の毒に。
0819810
NGNG多態もどきにするなら、Hogeの中で関数ポインタを持たせて
void HogeHage( hoge , 引数){
hoge->MyFunc(hoge,引数);
}
とやるわけだけど、それは外からは見えない
0820812
NGNGいや、void *型に宣言した変数にいくつかの種類の構造型へのポインタを入れて、
それを関数に渡してやるんだろ?
つまり、
struct foo {
int sort;
int x, y, z;
....
};
struct bar {
int sort;
int x, y;
...
}
とかあって、
void * OpenHoge(引数)が引数に応じてstruct foo *を返すかstruct bar *を返すかが決まるとするよ。
void *polymorphic_var;
polymorphic_var = OpenHoge(何か適当は変数);
とすると、polymorphic_varの参照先にはパラメータに応じてstruct fooの値か
あるいはstruct barの値が入ってるわけでしょ。
これって、十分にポリモーフィズムだよ。
さらに、
HogeHage(polymorphic_var, ...);
とかすれば、この関数への第一引数がstruct foo *の場合もあるし struct bar *の場合もある。
これもやはりpolymorphismになる。
ここで、このpolymorphismを何polymorphismと呼ぶべきかだけど、
変数polymorphic_varの参照先が先頭のint sort;の内容で型を判定するとすると、
これは一種のstructural type equivalenceによるinclusion polymorphismと捉えることができる。
だから、「>>810のCでの例はinclusion polymorphismの一種だね。 」と言ったわけ。
0821812
NGNGOpenHoge()の返り値の型をvoid *にしたのはそういう意味があったんじゃないかと思ったんだけど。
あと、HogeHageへの第一引数もvoid *の変数で渡してるし。
0822810
NGNGそれなら enumにしてくれとか
それより関数ポインタ持たせてとか
そんなレベルの問題が気になってしょうがない
そのポリモーフィズムの話は、なんか俺が齧ったのとは違うようだが
あんまり興味ない
0823812
NGNG> スマン、 そんな事より >>820 を見ると foo/barの識別は sortでやるのか?
> それなら enumにしてくれとか
> それより関数ポインタ持たせてとか
すまん。enumにしてくれってのはその通り。
関数ポインタについては、続きを見てくれ。
0824812
NGNG>>822
>そのポリモーフィズムの話は、なんか俺が齧ったのとは違うようだが
実は同じだったりする。どっちもsubtypeによるinclusion polymorphismだよ。
たとえば>>822が聞いたというポリモーフィズムは
t a;
a.message();
があったとすると、
・変数aには複数の型(型tのsubtype)の値が代入されている可能性があり、
・その値の実際の型に応じて実際に実行されるmessage()の実体が異なる
という話だと思う。
このうち1番目のほうは>>820で書いた例と同じだということがわかると思う。
実はこれこそがsubtypeによるinclusion polymorphismだったりする。
それが(クラスベースの静的型付)オブジェクト指向言語では副次的に
・型tのsubtypeはメッセージmessage()を受け付けることができ、
・対応するメソッドはaの実際のクラスによって定義される
ということが自然な拡張というか、当然の結果というか、まあ、そういうことになる。
オブジェクト指向では、こちらの副次的な部分のほうが強調される事がままあるけれども、
型理論的には、本来ポリモーフィズムが意味するのは上のほうの1番目の機能だったりする。
関数ポインタを構造体に持たせるのはinclusion polymorphismなしで
その副次効果を実現させているわけだが、実はその究極の形を考えれば
関数ポインタ型の変数そのものだったりする。
実際の値によって実際に呼び出される関数がかわるっていう意味ではね。
0825812
NGNGおまけに「だったりする」ばかりで本当に駄文だな。
重ねてすまそ。欝だ。
まあ、enjoy programmingということで。
0826デフォルトの名無しさん
NGNG自己満足PGをクビにしたい。
コメントもドキュメントもないからなぁ。使えネーヨ。
0827デフォルトの名無しさん
NGNG終わったということでいいんじゃないでしょうか?
0828デフォルトの名無しさん
NGNGクビにしてみたらいいと思います。
そのPGもまともな同僚に恵まれた環境を得て
いい仕事ができるようになるかもしれませんから。
0829デフォルトの名無しさん
NGNG「Cでもオブジェクト指向できるから、オブジェクト指向なんていらねぇよ」
この論理っておかしくねぇ?
結局、自分の今までのやり方が通らないから嫌なだけ。
それを必死で言い繕っても端から見てると哀れなだけ。
0830デフォルトの名無しさん
NGNG0831デフォルトの名無しさん
NGNG0832デフォルトの名無しさん
NGNGOOでも非OOでもこだわらない効率のよい環境や言語が
人気がでてきているのは確か。
0833デフォルトの名無しさん
NGNGってなあに?HSP?
0834デフォルトの名無しさん
NGNG0835名無しさん@Emacs
NGNGそうかい? 俺はそうは思わないよ.
OOが下火になってきたってのは分かるけど.
0836デフォルトの名無しさん
NGNGそれってC++位しか該当言語が思い当たらないんだが、
全然C++の仕事無いぞ
0837名無しさん@Emacs
NGNGうちはJavaが増えてC++が減った.
あと急増するPHP…w 俺の中では飽きたから惰性で書いてるなぁ….
個人的にはC++とJavaがもっと来てくれるとうれすぃ.
0838逝って良しの1
NGNGJavaが増えてって・・・まだ・・・地獄を見ていない・・・かんじ。
クライアントがとにかくJavaが良いと、どっかの雑誌なんかで洗脳されて、
で、発注して出来あがったモノ見てその遅さにクレームつけてくるパターンね。
「Javaは遅いんです」つっても信じてもらえるまで地獄を見るか、
あるいは発注した馬鹿が責任をひた隠しにした結果その会社との取引ききられたとか
まあご苦労さんね。
0839デフォルトの名無しさん
NGNG> 「Javaは遅いんです」
そうか?
VMの起動が遅いだけでJava自体はそんなに重いとは思わないけど。
マシン起動時にVMも同時に起動させれば特に問題はない。
0840デフォルトの名無しさん
NGNGオマエが必要なし!
0841デフォルトの名無しさん
NGNG0842名無しさん@Emacs
NGNGアプリケーションは使いたくない. でもサーバサイドなら気にならないけど?
Javaはうちの開発部では2番目にクレームが少ない言語だし.
出来上がったものの遅さにクレーム付けられることは今までない. 発注かかる時に
パフォーマンスのデータは出すし(いや, 俺がやってるわけじゃないけど営業が).
出来上がったモノにクレーム付けられるなんて(Javaに限らず)営業がキチンと
仕事してないか, 開発の実力不足だろ. そんな会社辞めたほうがいいぞ.
で, ここまで話しといて何だけど, OOと遅さは関係ない.
0843デフォルトの名無しさん
NGNG純粋OOPLがキライならそれでいいと思います。
ただ、Smalltalkerに代表されるような
すべてをオブジェクトとして考えるのが自然だと感じる人も
いるということを分かって欲しいと思います。
そういう人にとって純粋OOPLは使いやすい言語です。
0844デフォルトの名無しさん
NGNG> すべてをオブジェクトとして考えるのが自然だと感じる人も
> いるということを分かって欲しいと思います。
人間、清濁合わせ持つってのは大事だぞ。
所詮世の中グレーなんだ。
白か黒かなんてのは子供の自己満足。
両極端を選択するのは単純明快だが、
妥当な落としどころを模索するのがプロの仕事。
0845デフォルトの名無しさん
NGNG九州・・・(以下略)
0846逝って良しの1
NGNGつうか、屁理屈みたいなクラスができる。
0847デフォルトの名無しさん
NGNG激しく同感。
クラスの中でクラスを呼んだクラスがクラスを呼んで、
一度ループした事がありました。
・・・俺だけ??
0848デフォルトの名無しさん
NGNGトリッキーになりがちじゃない?
0849デフォルトの名無しさん
NGNG0850デフォルトの名無しさん
NGNG0851逝って良しの1
NGNG今ナウいヤングなプログラマーの間で人気の「再帰」ということに。
0852デフォルトの名無しさん
NGNGたぶんもう釣れない予感。
0853逝って良しの1
NGNG前にも誰か書いてたけど、javaのmathクラスなんか屁理屈だし
Systemクラスもオブジェクトとは言えないじゃん。
それからアプリケーションのメインのクラスもオブジェクトとは言えないし。
0854デフォルトの名無しさん
NGNGそんなにシビアになるなよ。
0855デフォルトの名無しさん
NGNG1番クレームが少ない言語ってなにさ?
0856デフォルトの名無しさん
NGNGオブジェクト イコール 構造体の中に関数を入れたもの
0857デフォルトの名無しさん
NGNGすべてをオブジェクトにという足枷が
本来のOOの概念を崩しているね
矛盾した事をいってるように聞こえるかな?
0858デフォルトの名無しさん
NGNGやっぱりもう釣れない予感。
0860名無しさん@Emacs
NGNGC++
0861デフォルトの名無しさん
NGNG> オブジェクトを構造体と結び付けるからおかしくなる。
勝手な妄想されても困る。
mathクラスは本来のOOの概念でオブジェクトか?
0862デフォルトの名無しさん
NGNGなにも問題はありません。
0863名無しさん@Emacs
NGNGデザパタ勉強してからOOの否定しろよ….
0864逝って良しの1
NGNG信者逝って良し。
0865デフォルトの名無しさん
NGNG> デザパタ勉強してからOOの否定しろよ….
また勝手な妄想・・・・
OO自体は肯定してるだろ。
もういやだ夏厨は(泣
0867デフォルトの名無しさん
NGNG0868856
NGNG関数型OOPには代入という概念がないので
クラスの中にはメソッドしかありません。
データ + メソッド という定義は手続き型的なものです。
オブジェクト指向とは関係ありません。
0869デフォルトの名無しさん
NGNG普通に immutable なオブジェクトでいいんじゃない。
0870デフォルトの名無しさん
NGNGこれ、同意。
0871デフォルトの名無しさん
NGNGオブジェクト指向のオブジェクトとは何かいってみなさい
そこに答えがある
夏厨の相手はもうあきました
0872デフォルトの名無しさん
NGNG0873デフォルトの名無しさん
NGNG0874デフォルトの名無しさん
NGNG何の概念持ってきてもアレコレ文句つけて否定するんじゃないの?
0875デフォルトの名無しさん
NGNGOOで苦労して作ったプロジェクトの次のプロジェクトでは?
0876デフォルトの名無しさん
NGNG意味のない
妄想が出ました
0877デフォルトの名無しさん
NGNG被害者妄想?
0878デフォルトの名無しさん
NGNG正解。ここで難癖をつけていい気分になりたいだけなんだよ。
現実が悲惨だから。
0879デフォルトの名無しさん
NGNG加害者妄想?
0880デフォルトの名無しさん
NGNG得意の自己レスが連発しています
見ているこちらが恥ずかしいです
0881デフォルトの名無しさん
NGNGつーかオブジェクト指向ってよ、シューティングゲームを例に取ると
自機、敵、弾、敵弾、爆発、カメラ等って感じで、これがそのままクラス
になる(その後の継承とかはまあすきにしろよ。)。
とりあえずだれがみてもみんながおおよそ納得してくれるように
わかりやすいものでなきゃならんと俺は思うよ。
デザパタってみんな読まないだろ?
そうだよな、これ会社の基準なんかにしちゃうと500ページを超える
プログラム社内規約になっちゃうだけだよ。
で、内容は誰も考えつかないようなトリッキーなクラス設計?
これが間違ってんだよ。
どうしてみんながはじめに認識できる形でそのままクラスに
落とし込めないのか疑問でしょうがない。
0882デフォルトの名無しさん
NGNG0883デフォルトの名無しさん
NGNGバイオとかNECとかのキーボードの上についてるボタンはキーコードを吐き出しますか?
どうも読み取れません。
0885デフォルトの名無しさん
NGNGあの…>>878は俺じゃないんだけど…(汗). トリップ付けようか?
とりあえずさ, OOのどこが悪いのかキチンと理論付けて否定してほしい.
で, 何が至上なのか. 正直, このスレ全部読んでも何がダメなんか
分からん.
0886デフォルトの名無しさん
NGNG0887デフォルトの名無しさん
NGNGそんなキミには小話。
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNGもう一度勉強した方が良いよ
自分の好きな言語の仕様を正当化する
気持ちははわかるけどね
0890デフォルトの名無しさん
NGNGちょっと待てやー!
とは言ったものの中途半端な意見しか言えそうにないんで
理解のある人に助けを求めてみる。
0891デフォルトの名無しさん
NGNG>これが間違ってんだよ。
これが間違ってんだよ。
0892デフォルトの名無しさん
NGNG0893逝って良しの1
NGNG0894デフォルトの名無しさん
NGNG0895デフォルトの名無しさん
NGNG妄想だって (ぷぷぷ
もっとまともな反論できないの?
0896デフォルトの名無しさん
NGNG0897デフォルトの名無しさん
NGNG他人のことは言えまい。
0898デフォルトの名無しさん
NGNG0899デフォルトの名無しさん
NGNGみんなだって悩んでるんだ。君だけじゃないよ。
がんばって!
0900デフォルトの名無しさん
NGNG0901デフォルトの名無しさん
NGNGそれがわからないから
0902デフォルトの名無しさん
NGNG0903デフォルトの名無しさん
NGNG0904逝って良しの1
NGNGだれもそんな定義なぞしとらん。
だから妄想だといってんの。
0905デフォルトの名無しさん
NGNGそろそろ次スレを立てた方が良くないか?
0906デフォルトの名無しさん
NGNG0907デフォルトの名無しさん
NGNG0908デフォルトの名無しさん
NGNGこんな所でオブジェクト指向を批判するより
情報工学を勉強した方がいいよ。
レス数が900を超えています。1000を超えると表示できなくなるよ。