トップページ⇒tech
854コメント333KB

オブジェクト指向は戦場では必要無し その3

■ このスレッドは過去ログ倉庫に格納されています
0001うつつつつNGNG
前スレがめでたく止まったようなので、その3
引き続きOO厨とアンチOO厨の血で知を笑う戦いきぼ。

その1 http://pc.2ch.net/test/read.cgi/tech/1011997945/
その2 http://pc.2ch.net/test/read.cgi/tech/1013266554/

0497デフォルトの名無しさんNGNG
>>496
JavaのコーディングとGofの本。
0498デフォルトの名無しさんNGNG
>>496
タートルグラフィックス
0499デフォルトの名無しさんNGNG
>>498
懐かしいな。小学生のとき、LOGOでrobot動かして遊んだなぁ。
FOWARDとか、BACKとか、
でも、おばかだたので、パパートさん(でしたっけ?)が期待したように
再帰で、へんてこりんな、パターン動かしたりはできなかったし、思いつきも
しなかった。
0500デフォルトの名無しさんNGNG
大昔のOh!MZの記事。
0501デフォルトの名無しさんNGNG
>>496
Smalltalk
0502デフォルトの名無しさんNGNG
>>496
20年くらい前の月刊ASCIIのアドベンチャーゲームの製作記事
0503デフォルトの名無しさんNGNG
>>502
表参道?
0504デフォルトの名無しさんNGNG
プログラミングとしてのOOはJavaで色々と勉強させて
もらったけど、それよりもインパクトのでかかったのは
RUPとかXPなんかのソフトウェアプロセスを勉強しだして
からかなあ。対象物は全てオブジェクトとみなして同一に
扱うっていうフラットな考え方は目鱗だったよ。
0505502NGNG
>>503
だったか、南青山だったか忘れた。
「持ち上げるとか、投げるとか、使うとか、そういうコマンドの結果を、
 アイテムごとに定義するんじゃなてく、もっと効率のいい方法無いかな?」
っていう話題からSmalltalkの話になるような記事だったと思う。
0506デフォルトの名無しさんNGNG
データ指向とオブジェクト指向の世界の衝突
http://www-6.ibm.com/jp/developerworks/components/010629/j_co-tipdiv.html

★(EJB) 開発チームの重大な問題
★オブジェクト指向開発者とデータ指向開発者が一緒に作業する場合に味わう難しさ
★オブジェクトとデータの対立の悪影響を受けている組織は一般に、
「策略に明け暮れる」ことに対し開発者のフラストレーションがたまり、 転職が増える傾向
0507デフォルトの名無しさんNGNG
ttp://www2j.biglobe.ne.jp/~sakuchan/it/20000614.txt
プロセス指向という用語もあるんだね

プロセス指向 VS データ指向 VS オブジェクト指向

どっちかいうとうちはプロセス指向かな
0508デフォルトの名無しさんNGNG
>>506 をぉー、気になるテーマだ、ありがとござますー
0509デフォルトの名無しさんNGNG
>>462 なんとなく>>448 は、
自前で「データ中心アプローチ」方法論構築しちゃった井の中の蛙ーって感じがする。
#海は広いよ
0510デフォルトの名無しさんNGNG
1日に3千行か、対戦5目並べで書いた事はあるな ・・・それだけ
0511デフォルトの名無しさんNGNG
データ指向で検索してヒットするページだけど

ttp://member.nifty.ne.jp/yamazaki/doc_data02.html

ちょっと 上の2ページとは用語が違うようだ
0512John ◆0z.4Is5E NGNG
>Strategyパターンみたいに、可換に作るのが自然で、モデル的にも
>シンプルになるものはいいと思いますよ。
なんかよくわからないけど、例がわかりずらかったのかも。
例えば、サーバーの状態をセキュリティーの会社の報告するプログラム。
プロトコルAで送信していたけど、理由があってセキュリティーの会社を
変えたとする。
するとプロトコルBで送信しなくてはいけない。
ただ、ここでプロトコルAでの送信機能が失われるような
変更を加えるのは、頭悪いでしょ?
他は何も変えず、プロトコルBでの送信機能を追加するには・・・
一般的な表現をするなら、
ファクトリーメソッドがあれば十分、充分?。
とりあえず、デザパタは無視していいと思うよ。
デザパタから入ると、柔軟な発想ができなくなりそうな気がする。
0513デフォルトの名無しさんNGNG
話がそれるが、Gof本ってなんでGof本っていうの?
0514デフォルトの名無しさんNGNG
Gang Of Five
0515SNGNG
ttp://www.momonga.org/~manabu/public/se/mozilla/build.html
より、mozillaの例を挙げてみる…

クラス・ブラウザ
・C++ や Java など, いわゆるオブジェクト指向言語のソース・ファイルは 理解が難しい
・・継承により, どのようなメソッドがどこで定義されているか把握しずらい
・・メソッド (関数) は クラス名::メソッド名 と 呼び出されるが, クラス名が省略される場合があり,
・・また, メソッドは引数の組み合わせによって選択されるため, 同じ名前のものがたくさん定義される
・動的な解析ツールを駆使する - デバッガでトレースをとる
・・イベント駆動ループからの呼び出し
・・ストリームなどの非同期イベントからの呼び出し
・・マルチスレッド実行時のオブジェクト間通信
・結論: できのよいクラスブラウザを持っていないと手に追えない

OOに異を唱えるわけではないんだが、(とゆうかかなりはまっている私
こんな現実もあるのでは。
ってか優秀なクラスブラウザってないかな?
できたらフリー/学生に手が出る値段で
0516515NGNG
>514いちおうGang Of Fourとつっこんでおく。
0517515NGNG
しかしSmalltalkのクラスブラウザはかなり便利。
あれを他の言語でもできないものか。
0518デフォルトの名無しさんNGNG
>>517
そんな貴方にVisualAge for Java
0519デフォルトの名無しさんNGNG
mozillaの場合は、そこそこ便利で出来が良くかつ無償でなければ
ならない条件があるから難しいのでは
0520デフォルトの名無しさんNGNG
>>515
前半は、UML あたりで図を書いとけよ、という話だと思うが。規模が大きくなると、
コードだけ見て理解するのは辛いよ。

あと C++, Java でなくとも、動的なフレームワークにすると理解が難しくなるのは
世の常。OO の真髄は「インターフェースに対してプログラミングする」ことだけど、
そうなると、これまでの

- caller / callee

だけではなく

- caller / interface / callee

と、途中に interface が挟まる分だけ、全体像を把握するのは難しくなる。おもい
きり OO っぽい設計にすると、インターフェースの多重継承なんてしょっちゅうだ
から、caller / callee 間が蜘蛛の巣のようにつながるし。

ただ、interface について明確にドキュメント化してあれば、蜘蛛の巣で迷子にな
らずに済むはず。caller も callee も interface について知っていれば十分だか
ら。

(C でも OO っぽい「インタフェースに対してプログラミングする」のは、最近の流
行りではあるよな。*BSD のデバイスドライバのフレームワークなんかも、マクロ
や関数ポインタを多用して、同じようなことやってる)

後半のイベントドリブン、マルチスレッドは OO とは関係ないな。素の C で組ん
だ Win32 アプリケーションやら OS やらでも、そこは把握に苦労する部分。な
んかうまい表記方法が発明されると嬉しいんだけど、ねぇ。
0521デフォルトの名無しさんNGNG
>>520
>OO の真髄は「インターフェースに対してプログラミングする」ことだけど、
ちょっとまて。「インターフェースに対してプログラミングする」なんてCにstatic関数が
出来たときから(きっとそれ以前だろう)いわれてることじゃないか。

これはOOの神髄ではなくプログラミングの神髄だ。
0522デフォルトの名無しさんNGNG
OOっていうのはこうした方がいい設計、いいプログラム、へのガイドラインじゃないかと。
だからやってることっていうのは実は昔から変わっていないんじゃないか?。
OOがワカラン、OOは糞、というやつは実はOO以前のスタイルでもまともな設計、プログラミングが
できていないんじゃないかと思う。
0523513NGNG
>>516
それは、Erich,Rich,Ralph,Johnの四人がGangってこと?
0524デフォルトの名無しさんNGNG
>>521
ADT の進化系が OO と認識してるけど。

C だと

 インスタンスの管理がめんどくさい(明示的に this を渡す必要があり、vtbl も
 自前で初期化しないとダメ)
 継承関係の管理を自分で行う必要がある
 インターフェースの多重継承は事実上無理
 インターフェースを追加した場合に、コンパイラがエラーチェックしてくれない
 (純粋仮想関数の定義し忘れとか)

なのが C++ あたりだと、すっきりかける。

C++ は C に「インターフェースに対してプログラミングするために便利な/必要
な機能」を付け加えた処理系っつーのは、一面としては間違ってないと思うんだ
が、どうよ?
0525デフォルトの名無しさんNGNG
>>522
> OOっていうのはこうした方がいい設計、いいプログラム、へのガイドラインじゃないかと。
その通り、単なる「ガイドライン」に過ぎないのにそれを絶対視する奴が多すぎる

例えばDBのテーブル設計の場合、パフォーマンスを出すために
あえて正規化を崩す場合がある。
構造化プログラミングでも状況によりgotoを使う場合もあるし、
グローバル変数を使う場合もある。

常に「gotoを使わない」「グローバル変数を使わない」奴は素人。
常に「OOを使う」ことしかできない奴は素人

「OOを使えない奴」は素人以前の問題
0526デフォルトの名無しさんNGNG
>>524
インターフェースへのプログラミング、という捕らえ方は正しいと思う。

ただAlan Kay的なOOの定義に従って考えると、
ADTの延長にOOがあるんじゃなくて、
OOの実装で現状使える技術要素の1つがADTなんだろうな。

つまり、何かを聞けば反応を返すのがオブジェクトであって、
ADTはそれを実装するのに都合がいい概念の1つに過ぎない。
ADT以外にinterfaceを明確にできるソフトウェア構成単位があれば
そっちに移ればいい。
0527デフォルトの名無しさんNGNG
>>525
UMLを書き上げただけでシステムできると誤解してない?
現実的なソフトウェアはそれだけじゃできないよ。
だけど可能な限り設計段階でUMLで表現しておくことが
無意味になることを意味するわけじゃない。
0528デフォルトの名無しさんNGNG
多数のボランティアが必要なプロジェクトで UML図を誰がどう作成してメインテナンスするのか
というかそういう作業を好んでやる人はいるのか?
0529デフォルトの名無しさんNGNG
OOの欠点は、何かにつけ大げさになる点。ただそれだけ。

OO信者の欠点は、それが致命傷になるケースであってもゴリ押しする点。これ激しく迷惑。
0530デフォルトの名無しさんNGNG
で結論は?と言ってみるテスト。

でも厨房の漏れには両者の喧嘩は意外と勉強になったYO!

みんながんばれ。(・∀・)!!
0531デフォルトの名無しさんNGNG
>>528
プログラマはプログラムで自己表現するんじゃなくて、
設計レベルで自己主張すべき。じゃないといつまで
たっても職人仕事の域を出ない。
だからUMLは管理するものという発想は間違ってる。
0532デフォルトの名無しさんNGNG
>プログラマはプログラムで自己表現するんじゃなくて、
>設計レベルで自己主張すべき。じゃないといつまで
>たっても職人仕事の域を出ない。
船頭おおくて船山にのぼる
0533デフォルトの名無しさんNGNG
プログラマがプログラムで自己主張できなくっちゃ
つまらねえよなあ、おい。

プログラムって楽しいもんじゃねえか。
いくら仕事だからって楽しんじゃいけねえのかい?

そうか、そうだよなあ。
職人が生きにくい世になったんだなあ。ちぇ。
0534デフォルトの名無しさんNGNG
設計とコーディングをもっとシームレスに考えれ。
0535デフォルトの名無しさんNGNG
職人仕事でいいじゃん。一流の職人なら。
0536デフォルトの名無しさんNGNG
>>530
> で結論は?と言ってみるテスト。
結論:
 テストを先に書くこと。(XPマンセー)
 UMLや設計は後からついてきます。
0537デフォルトの名無しさんNGNG
>>536
XP も ストーリー→タスク→テスト と
その都度設計してるんだけどね。
設計そのものの成果物を残さないだけで。
0538521NGNG
>>524
インターフェイスっていうのはものすごい一般的な言葉なわけで、

printf関数を使っているときにはprintfインターフェイスに対して
プログラミングしているといえる。プログラム言語が関数を手に入れたときに
最初のインターフェイスが誕生した。

同じように自作のモジュールでも公開関数に対してだけプログラミングすれば
実装を容易に変更できるようになる。Cがstatic関数を手に入れたときに次世代の
インターフェイスが生まれた。

OOPLはいくつかの関数とデータを硬く結びつける文法を用意してより強力な
インターフェイスが誕生した。

きっとクラスの数が増えてくればそれらをいくつかまとめて次世代のインターフェ
イス概念が生まれるのであろう。
0539デフォルトの名無しさんNGNG
>>538
> インターフェイスっていうのはものすごい一般的な言葉なわけで、
あの文脈だと「シグネチャが一致するメソッドの集合」と読めるかな。
0540デフォルトの名無しさんNGNG
>>526
賛同。Smalltalker?
0541526NGNG
526=Smalltalker
0542デフォルトの名無しさんNGNG
協調性の無い職人ほど邪魔なモノは無い
0543デフォルトの名無しさんNGNG
同化を強要するボーグみたいでキモいよ、OO厨。
0544デフォルトの名無しさんNGNG
業務としてコード書くんだから我慢しる
0545デフォルトの名無しさんNGNG
>>542
激しく同意
特にOO職人と勘違いしているOO信者は協調性がない邪魔者
COBOLerと同じくらいタチが悪い
0546デフォルトの名無しさんNGNG
>勘違いしているOO信者
それって、職人じゃ無いじゃん。
0547デフォルトの名無しさんNGNG
>>546
職人じゃないんじゃなくて、信心のたりないOO信者ってとこだろ。
OOPLは好きだがそれ以外のものをメンドクセーとか思ってる奴。

そういう奴がXPマンセー!と言ってるのだと思うが間違ってる?
OOSEやRUPじゃカバーできないプロジェクトがあるとか
いいながら、内心そんなところに理由があるんじゃないかと思うんだけど。
0548デフォルトの名無しさんNGNG
どっちかと言えば実践を中心に考えてるXPの方がマシだと思う。
0549デフォルトの名無しさんNGNG
>多数のボランティアが必要なプロジェクトで
>UML図を誰がどう作成してメインテナンスするのか
>というかそういう作業を好んでやる人はいるのか?

そうそう、そんなことしてる奴は周りから間違いなく異端視されるし。
0550盛岡電波NGNG
絶対必要あげ
0551デフォルトの名無しさんNGNG
JavaSoftの J2EE patternsでわ、
パターン抽出と、ベスト・プラクティスの広報を通じて、
開発者のレベルアップにちっとは貢献してるでしょ。

だから、オープン・ソース・プロジェクトの
ドキュメント整備と同じ位重要な場合もありそう。

Apache Avalon, Struts とか、
フレームワークを前面に押し出したプロジェクトなら、
開発前から UML使ってても、不思議ではないんでわ?
んで、
と同じ
0552デフォルトの名無しさんNGNG
>>549
> そうそう、そんなことしてる奴は周りから間違いなく異端視されるし。
FreeBSD だと最近の大きなプロジェクトとして SMPng, KSE なんてのがあったが、
あれは paper 出したり、主要なメンバーで集まって設計方針を話し合ってたりした
ぞ。

OO じゃないから UML で図を書いてたわけじゃないけが、いずれにせよ大規模な
システムのコア部分を作る場合には、やっぱり何らかの形で設計を形にして、参
加者に伝達することは必須だと思われ。
0553デフォルトの名無しさんNGNG
アンチOOよりXP信者の方がウザイ。
アンチは教育してやれば理解するようになるが、
XP信者は永遠にプロセスを理解することは無理だな。
0554デフォルトの名無しさんNGNG
理解してないと思いたいのですね:)
0555デフォルトの名無しさんNGNG
大規模プロジェクトをOOでやるのは危険です。
その理由は以下に↓
0556デフォルトの名無しさんNGNG
なっちありがとう
0557デフォルトの名無しさんNGNG
http://pc.2ch.net/test/read.cgi/tech/1012484747/
0558なっち怒ってます(○ ´ へ ` ○) NGNG
なっち怒ってます(● ´ へ ` ●)
0559 NGNG
>>543
激しく同意
0560デフォルトの名無しさんNGNG
>>553
>アンチは教育してやれば理解するようになるが、
>XP信者は永遠にプロセスを理解することは無理だな。

XPってのはOOを理解した上での原点回帰だと思うが、その口ぶりだと553はOOを理
解せずにXPやってる現場ってのをどこかで見てきたようだな。
非常に希少な例だと思うんで紹介してもらえないか?
0561デフォルトの名無しさんNGNG
>>560
つーか、XP自体がプロセスを極端に調整した例だということを
理解してないようですな。
XPをちゃんと運用するためにはソフトウェア工学、特に方法論を
教科書憶えただけでなくしっかり身につけている人が必要で、
その上でその極端な例としてのXPを実行するもんだと思うのだが。
型無しと型破りの違いだな。
0562デフォルトの名無しさんNGNG
XPやってる奴って、ゴシック様式の建築物みたいなOOの方法論に
嫌気がさしてやってるもんだと思ってるけど。オレモナー(藁
0563デフォルトの名無しさんNGNG
訂正
×XPやってる
○XPに興味もってる
0564561NGNG
>>562
うん。そういうゴシック様式というか、セレモニー的な部分を
極端に減らしているのがXPだよね。
で、その分、リファクタリングやユニットテストで補なっているわけだし
ストーリーとユースケースも深い関係がある。
上に挙げた用語はどれもソフトウェア工学の用語だし、その背後にある
相互関係や危険サインや監視の仕方や対処法なんかを理解する必要がある
と思うけど、どうよ?
0565デフォルトの名無しさんNGNG
>>564
RUP、つーかラショナルが嫌なんだよね。結局プロセス実行するには
ツール買わせるように出来てる。この辺りの巧妙な手口は正直好かん。

理論としてはヘーゲルの「歴史」を想起させるぐらい立派な
ものを目指してるのかもしれないけどさ。その裏にある動機が
いやらしい形で見えてくるのがキショイ。
0566561NGNG
>>565
あ、それは俺もある (藁
なんだよ、そのRはよぉ、って。

その一方で、プロセスってのはそのまま適用するものじゃなくて
各プロジェクト毎に改変して応用すべきものだとも思うんだよね。
だから、あんまり1つの方法論にベッタリなツールも嫌いだったりする。
俺にとってはツールに期待するのはUMLであってRUPじゃないんだな。
0567デフォルトの名無しさんNGNG
>>567
一応教科書読む限りじゃ、プロセスはプロジェクトにテンプレートを
与えるものっていう位置付けになっていて、ツールはプロジェクト
じゃなくてプロセスに対応するものという位置付けになってる。
だからツールはかなりの汎用性を持たせてあるんじゃないかな?

おれはRationalナントカなんて触ったこともみたこともないから
詳しいことはしらないw。教科書読んだだけのヘタレだから。
ただ一つ言えるのは、RUPなんていったところで彼らが仕様を無償で
公開してるのは方法論のモデリングに関する成果だけで、実務を
遂行するにあたり必要となるツールに関してはおそらく特許で
ガチガチになっているものと思われます。危険です。
彼らの言うプロセスとはイコール、ツールのことですw。


この濡れ衣を脱がせる人、なんか書き込んでください。
0568デフォルトの名無しさんNGNG
上の567は>>566の間違い
0569デフォルトの名無しさんNGNG
http://acd.nabunken.go.jp/Nabunken-Doc/chousa/international/Angkor/sites/PreRup/PreRup.html
0570デフォルトの名無しさんNGNG
>>567
>ツール
というか、RUP にすら満足に使えない
0571デフォルトの名無しさんNGNG
必要かどうかは別として

結果として出したプログラムのレベルは
OOできない人=アンチ<<<<<<<<<<<<<<<<<OOできる人
だと思うけど、どう?
0572デフォルトの名無しさんNGNG
>>571 そのプログラムのレベルって何で測るの?
0573デフォルトの名無しさんNGNG
>>572
if文のネストの深さで
0574デフォルトの名無しさんNGNG
>>571
必要かどうかは別として

「レベル」とか「○○>>>××」とか言ってる奴は
厨房だとだと思うけど、どう?
0575デフォルトの名無しさんNGNG
>>574
プログラムには、実装・設計とも良し悪しはある。みんな平等ということはない。

ただ、

 プログラマをOO派・非OO派に色分けしたときに、このスレで出てきたプログラ
 ムでそれぞれの能力を測る
 
ことには全く意味がないし、そんなことをして喜んでるのは厨房だと思う。
0576デフォルトの名無しさんNGNG
>>573 つまり OOできる人ほどネストは深いと?
0577grrrrrrrrr....NGNG
>>576 ソフトウェア・メトリクスの勉強汁
0578 NGNG
俺より頭がいいやつは全員氏ね
0579デフォルトの名無しさんNGNG
おとなしく学歴板にかえんな
0580デフォルトの名無しさんNGNG
非OOで書いたレベルの高いプログラムキボーン
0581 NGNG
>>577
cccc以外の使いやすいメトリクスツールを紹介してくれ。
0582デフォルトの名無しさんNGNG
BSD
0583デフォルトの名無しさんNGNG
>>581
http://osb.sra.co.jp/Smalltalk/ObjectOrrery/Japanese/manual/index.htm

>>エセsmalltalker
http://www.sra.co.jp/people/aoki/Jun/Main.htm
0584デフォルトの名無しさんNGNG
>>582
どのバージョンの?

4.4BSD 以降だと VM の設計なんかは、言語こそ C だがかなり OO っぽい
と思うぞ。newconfig とか new-bus も然り。
0585デフォルトの名無しさんNGNG
>>580
PC88板アルフォス(by森田)
0586デフォルトの名無しさんNGNG
>>583
エセSmalltalkerって誰のことだ?
春になってきたのかなぁ…
0587デフォルトの名無しさんNGNG
>>567
ラショナル製品を買えないほどの貧乏会社で
働いてるんだね。プ
0588デフォルトの名無しさんNGNG
あんなの予算おりるか?
まあ、予算取ることはできても活用できなそうで乗り気にならない。
0589デフォルトの名無しさんNGNG
>>588
必要経費
0590デフォルトの名無しさんNGNG
>>589

不必要経費の間違いじゃネーノ?
買ったはいいが死蔵してる会社って結構多いぞ。
0591デフォルトの名無しさんNGNG
俺の私的メモ

ラショナル製品を導入後、継続して活用していますか?
・はい 5%
・いいえ 95%
0592デフォルトの名無しさんNGNG
つーかさ。
OOはプログラマなら誰でもかかる一種の麻疹みたいなもんなんだよ。
命を落とすほどの病気じゃないから、そう、目くじら立てるなって。
0593デフォルトの名無しさんNGNG
>>592

そう思わないと精神の安定が保てないCOBOLERさんですね。
構造化を1週間分処方しておきますので、薬局で受け取ってから帰宅して下さい。
理解できるまで来なくて結構です。
0594デフォルトの名無しさんNGNG
>>590
>買ったはいいが死蔵してる会社って結構多いぞ。

うちもだ (w

Rationalのツールを買って死蔵している会社の人は正直に手を挙げよう。
あ、ちゃんと使いこなしている人の数も知りたいな。
0595デフォルトの名無しさんNGNG
高くて買えないが統一プロセスの好きなやつ。
ラショナル製品を一通りそろえてもらって、
セミナーまで受けたのにさっぱりなやつ。

どっちが真実を現してる?
0596デフォルトの名無しさんNGNG
OO理解出来ないし難しいし挫折したから、役に立たないものだと
思い込みたいんだよね。
わかるよその気持ち。

あまりわかってないうちに、OOに対して役に立たないと
いう早計な判断を下してしまった人も多そうだね。
■ このスレッドは過去ログ倉庫に格納されています