トップページ⇒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/

0609デフォルトの名無しさんNGNG
>>608
そりゃ、実装が一番詳細な情報だからな。

ただ木を見て森を見ずとか、実装の詳細に溺れる可能性も高い。
0610デフォルトの名無しさんNGNG
UMLなんてナニが重要なオブジェクトで、そいつがだれとどうか変わってるか、
そいつを変更するには、誰の了解を得なければいけないかがわかれば十分。

というわけでUMLからコードに落としたり、コードからUMLを生成したりすんのは
バカ。

そんな機能を売りにしてるツールは....
いやもっと、そんなもの買おうとする方が...

0611デフォルトの名無しさんNGNG
UMLのクラス図ってC++やJavaのキーワード、classとは直接の
関係はないんだよね?
0612デフォルトの名無しさんNGNG
>>611
少なくともトレーサビリティは大事だと思うが。
0613デフォルトの名無しさんNGNG
>610
どうい。ツールを売る方は金儲けから製品作ったんだろうが。

コードジェネレータによるコードが冗長で読み難い(←コード書いた人の考えが読み取れないんだよね)
という問題を解決するために、
クラスによる差分プログラミング開発(これがOOPかどうかは別にして)が行われるようになったんだよね。
だから、UMLによるコードジェネレータという考えはなんか外してると思った。
0614デフォルトの名無しさんNGNG
>>611
どのレベルのクラス図か、による。

分析段階で作ってるクラス図だと、動的分類/多重分類あたりまえなので、
C++ や Java のような静的分類/単一分類前提のクラスには一対一には
対応しない。
0615デフォルトの名無しさんNGNG
>>614
とりあえず、メモさせて頂きました。
元ネタはどこからですか?
0616デフォルトの名無しさんNGNG
>>615
UML モデリングのエッセンスとか、アナリシスパターンあたり。
0617デフォルトの名無しさんNGNG
distill本かanalysis本ですね。分かりました。
あまぞんにちゅもんしまう。
0618デフォルトの名無しさんNGNG
>614
最終的に実際にクラスになるものとそのメソッドを考えた方が
簡単ということは無いの?
実装上の問題も無いし。
0619617NGNG
というか同じことどっかで聞いたんだけど、
なに読めばいいのかわすれちったんだよね(w
0620デフォルトの名無しさんNGNG
>>610,>>613
その手の言い切りが、技術の進歩をおくらせるんだよな。
0621デフォルトの名無しさんNGNG
>>620
そうかもな。

だがこのみちで飯を食う以上、最終的に金にならないと判断できたものは
それ以上使わなくても良いだろう。
UMLという記述言語は取り入れるがそれを取り巻くツールを使うかどうかは
全然別問題だしな。

0622デフォルトの名無しさんNGNG
>>618
場合によるな。

経験上、問題領域を素直にモデリングする場合には、動的分類/多重分類を
使った方が楽。どうも、その方が人間が物事を把握するフレームワークに近い
ような気がするんだわ。

じゃあ、常に「分析、設計、実装」レベルでクラス図を三種類作るかというと、そ
うでもない。そもそも図は

 コア部分だけ
 図に書いたほうが理解が深まる部分だけ

書けば十分だから図を書かない場合も多いし、結果的にいきなり設計レベル
図を書いて終わりってこともある。
0623デフォルトの名無しさんNGNG
>>621
>UMLという記述言語は取り入れるがそれを取り巻くツールを使うかどうかは
>全然別問題だしな。

OMGが推進してるMDAについてはどう思う?

0624デフォルトの名無しさんNGNG
まだ評価前
0625デフォルトの名無しさんNGNG
OOは少人数でしか使えん。
大人数でOOプロジェクトをまとめようとすると
宗教と同じで、戒律を作って各PGに守らせるよ
うにしないとだめ。つまり現実的な開発方法と
は言えない。
0626デフォルトの名無しさんNGNG
そして最初に戻る…
0627デフォルトの名無しさんNGNG
OOの話題は シロウトというかクチだけ野郎でも口が出せるからなあ・・・

バランス木とかコルーチンとか実装の話になると黙るのに、そこだけ元気なもんで会議が踊る
0628デフォルトの名無しさんNGNG
>> バランス木とかコルーチンとか実装の話
それ自体OOと関係があるのか?
0629 NGNG
「ソフトウェア部品の再利用は夢なのか? 」
@ITがついにこんなリンクタイトルで記事掲載
http://www.atmarkit.co.jp/fjava/devs/interview01/interview01.html
0630デフォルトの名無しさんNGNG
>>629
このおっさんが言ってるの再利用部品とはコンポーネントのことだね。
0631デフォルトの名無しさんNGNG
>>628
バランス木 ・ オブジェクトをどう管理するのか
コルーチン ・ フィルターのようなオブジェクトをどう実装するか 
0632デフォルトの名無しさんNGNG
つーかさ、OO信者は早く得意のOOを駆使してOS作れや
無理だろうけどな(w
0633デフォルトの名無しさんNGNG
Windowsがそうですが?
0634 NGNG
まとめ
1)オブジェクト指向は失敗した。
  今後は以下OOが失敗した以下の2点を目標にすべきである。

2)生産性の向上
  この点について、Java等の一連のOOPLが失敗した最大の原因は
  ユーザーライブラリを無視し、セミナー屋やマスコミを動員して
  すでにあるソフトウエア資産の破棄に無理やり誘導したことである。

  教訓として、ソフトウエア資産の破棄を迫るような言語は今後は
  一種の詐欺と見なして良い。

2)再利用性
  「まず言語構造・設計構造ありき」などという言語・構造原理主義を捨てて
  再利用性を目標にすべきである。
0635デフォルトの名無しさんNGNG
>>633
WindowsはVisualBasicで作られてます。
0636 NGNG
>>634
コンポーネントってこと?
0637 NGNG
>>636
社内で使える物を作ろうとするとコスト高になるから違うな。
0638デフォルトの名無しさんNGNG
OOPL導入するときって、損益分岐点の見積もりがむつかしー。
0639デフォルトの名無しさんNGNG
どういう理由で?
0640 NGNG
難しくないよ。
導入しても生産性上がらないから、導入コスト分だけ無駄。
従って損益分岐点は存在しない。
0641638NGNG
>>640
あ…
納得。
0642デフォルトの名無しさんNGNG
OOPL使ってるからといってOOしてるわけでもないという理屈なら
OOPL入れたからといって OO しなければならない訳ではない

OOPLは好きだし使うけど OO嫌いな人もいるだろし
0643638NGNG
たとえば、

OOPL使いはじめたとして、ある程度わかってるヤツが解ってる範囲で使うのは、いい。
わかんないヤツが、従来の方法のまま、使うのもいい。
困るのは、解ってないのに、自分はもう極めたような勘違いして暴走しるようなやつ。
そういうやつの足の引っ張り力って、結構強いから、損益分岐点の遠のいていく速度が加速するんだよね。

俺に、そういうやつを説き伏せる力が無いのがいけないんだろうけど、
でも、こういうヤツに限って、周囲からはスゴイって評判だったりするんだ、往々にして。

グチになちたな、マ板逝こう…
0644デフォルトの名無しさんNGNG
コルーチンの話が出てるけど、OOの一つの課題と思ってる事があるんだ。
つまり、メッセージを送るって事は、送ると受けるという2つのオブジェクトがあるという事

例えば、データを入力する機能を持ったオブジェクトの実装では
A)InputDataというメソッドを呼び出して貰う
B)データが出来る都度 PutDataを呼び出す(最終的に外部のオブジェクトが呼ばれる)
という大きく分けて2つの方式があるけど、この2つの方式は切り替えられない。
もちろん、最初から設計してあれば、同期スレッドを使う事で可能だけど、スレッド切替
は比較的重い処理だから現実には選択肢にのぼらない。

当然使う方は Aの方式が楽で 作る方はBの方式が楽。圧縮とかの処理だと圧倒的にAが
難しくなるから、みなついBの方式で実装したがる。

あ長文になりそうだから、結論だけ書くと、
 つまりは、メッセージを送る方式の実装と メッセージを受ける方式の実装が継承により
切替られるような仕掛けが OOPLに必要ではないかという事
0645デフォルトの名無しさんNGNG
長文きぼー
0646デフォルトの名無しさんNGNG
>スレッド切替は比較的重い処理だから現実には選択肢にのぼらない。
んなこたない
スレッド使った場合のオーバーヘッドの
全処理に占める割合をどのくらいに見積もってるんだ?
0647644NGNG
>>645 と言われて 喜んで書いたら叩かれそう

>>646 たとえばストリームのような1バイト単位のデータ送受で単なる
  コルーチン切替ならメモリアクセスに隠れてしまう程度の負荷
  だけど同期スレッドだとそうはいかない。
0648デフォルトの名無しさんNGNG
1バイト単位って・・・
お前fiber使ってみたいだけちゃうんかと(略
1kバッファリングすればオーバーヘッド1024分の1に減るだろ。
リアルタイム圧縮の話をしてるのか?
0649 NGNG
>>646
切り替えは重い。これ常識。
0650デフォルトの名無しさんNGNG
>>649
プロセッサや OS アーキテクチャにもよるけどな。
0651644NGNG
>>648
 そんな・・・・1KByte単位にバッファリングするなら 途中にFIFOオブジェクト経由して
 やればスレッドも不要、だいいちバッファリング出来るような処理なら >>644 分類A
 に書き換えるのもそんな手間じゃないよ
0652デフォルトの名無しさんNGNG
ちょと思いつきで書くのでつっこまれるだろーが

CORBA使ったやつとかだとOO使った大規模ってことにはならないかな?
にたよーなのでOSってわけではないがGNOMEとか
0653デフォルトの名無しさんNGNG
>だけど同期スレッドだとそうはいかない。
話がめちゃくちゃ・・・・
0654デフォルトの名無しさんNGNG
>>644 さん  それで今はどうやってるの?

たとえば Bタイプで作った後で Aタイプに直さなければならない場合に
0655644NGNG
>>654
 色々かな。

 デバッグが終ったソースで弄るのがメンドクサイ時はアセンブラソース吐かせて、
 スタックフレーム弄ってコルーチンにしてる。
  つまりクラス内にスタック用のエリアを取っておいて、BP/SPをそっちに切替えておく
 で、PutDataとかのメソッド内で これをもう一度切替えるというか交換するようにする
 でも、API呼び出しがメソッド内であるとダメね

未デバックだとそんなこと毎回やってられないから なんとか書き換えるけど
0656デフォルトの名無しさんNGNG
再利用ねー。
再利用なら昔からしてるよ。ライブラリとかいう形でね。
あとはパターンだね。考え方、テクニックの再利用。
ソースコードの再利用は考えないほうがヨシ
XPとかの本でも、そう言ってるし。
0657デフォルトの名無しさんNGNG
>>644
http://www.eiffel.com/doc/manuals/technology/concurrency/CONCURRENCY.html
0658デフォルトの名無しさんNGNG
マイクロソフトはOOで再利用できんかったから
新しいOSリリースするたびに一から作り直してたんじゃないのか?
0659デフォルトの名無しさんNGNG
>>658
> 新しいOSリリースするたびに一から作り直してたんじゃないのか?
Windows NT 3.x, NT 4.x, 2000, XP と全部スクラッチから書いたっつーことは
あるまい。
0660デフォルトの名無しさんNGNG
OSは基本的なデータ構造はあんまり変らないから
フルスクラッチなんてことはあるわけない。
0661デフォルトの名無しさんNGNG
.NET周りはフルスクラッチだろうけどね
0662デフォルトの名無しさんNGNG
JVMを流用してんじゃないの?
0663デフォルトの名無しさんNGNG
だとするとベンチマークは激速だな(藁
0664 NGNG
オブジェクト指向が登場するまで、プログラマーは再利用と言う事を知らず、
プログラムを組むたびに1から作りなおしていたのです。
オブジェクト指向の登場で初めてプログラムの部品化、再利用が可能となりました。

0665デフォルトの名無しさんNGNG
>>664 そんな夢を見たんですね?
0666664の続きNGNG
プログラマーをオブジェクト指向に移行させようとすると大抵の場合
素直に受け入れてくれません。
多くのプログラマーは具体例で示しても
「そういう事は今の言語でもできる」などと躊躇して技術を学ぶ姿勢を
見せません。
何故こういう事態になるのでしょうか?
それは旧来タイプのプログラマーは職人気質の人が多く、
ソフトウエアの生産性・再利用には無関心だからです。
オブジェクト指向はやる気のある人間の居る会社でしか受け入れられないという
壁に突き当たっています。
日本のソフトウエア産業の振興の為にもこうした壁を取り払わなければ
なりません。



てな事をOO初期のセミナー屋は言っていた。
詐欺だつうの。
0667デフォルトの名無しさんNGNG
フレームワークを利用する事を再利用と呼んでないか?
それなら clibを利用する事も再利用だぞ
0668 NGNG
>>667
再利用で生産性上がってないの。
FWは商売になってないし。
0669デフォルトの名無しさんNGNG
>668
思いっきりなってんだろ
FW自体が無料と商売になってないはまったく別だぞ
0670デフォルトの名無しさんNGNG
>>666
本当の理由
1.既にシステムを作る方法を一つ手に入れていて、それを使えば
困らないのに、今更新しいものを覚えるのが面倒くさいから。
2.胡散臭いから

1はともかくとして、2は、今まで実務の実績も経験もないくせに
偉そうにOOを語っていた詐欺師紛いのエバンジェリストなヤツラ
の責任だよな。金だけ湯水の如く請求するくせに、コストパフォー
マンス悪すぎなヤツラ。さらに、成果が出ないのを客の能力の
せいにするアフォ。そんなのばっかり。
0671 NGNG
引っかかるのはあの程度の嘘が見ぬけないアフォばかり。
0672デフォルトの名無しさんNGNG
アセンブラは大変というけど アセンブラもマクロを使ってライブラリをしっかり整備してれば
今の高級言語並の生産性はあった。 ただし熟練者ご用達って事。
0673デフォルトの名無しさんNGNG
ポータビリチーはどうすんだ?
0674デフォルトの名無しさんNGNG
>>873 ホントだよね クラスライブラリに依存してるOOPLでどうするんだろ
0675デフォルトの名無しさんNGNG
プッ
0676デフォルトの名無しさんNGNG
>>674
煽りにしても頭悪すぎ。
0677デフォルトの名無しさんNGNG
>>675-676

歩調乱すなよ!
もうちょっと我慢したらもっと大物が釣れたのにぃ。
0678デフォルトの名無しさんNGNG
>>672
>今の高級言語並の生産性はあった。
ネタ?
0679デフォルトの名無しさんNGNG
>>672
ライブラリをしっかり整備しないといけなくて、
なおかつ熟練者じゃないといけない
って生産性悪いって言わないか。
0680デフォルトの名無しさんNGNG
アセンブラ下<アセンブラ中<<<java下<=アセンブラ上<<java中<java上
こんな感じといいたいんだろう。
人数の分布は・・・・
0681デフォルトの名無しさんNGNG
OOの方が型からクラスと、考える対象の粒度が大きくなった分
考えやすくなったのでは?
あとOOならではテクニックあるし。

ライブラリに関しては昔も今も変わらずって感じがする
0682デフォルトの名無しさんNGNG
>>680
ありえない。
汗でhellowold書いてみればわかる。
汗のみでソフトウェア開発は無理。
特にx86は死ぬ。
0683デフォルトの名無しさんNGNG
汗でもマクロでごまかせる部分があるからじゃない?
でも上じゃないとねー
0684デフォルトの名無しさんNGNG
アセンブラでマクロを書いたら高級言語になりました。
0685 NGNG
そう言えばアセンブラは最初から隠蔽、カプセル化をサポートしてたね。>public
0686デフォルトの名無しさんNGNG
>>682
x86、asmでソフトウェア開発してます。但しwin32 + masm。
Cで書くのと殆ど差は無いです。
0687デフォルトの名無しさんNGNG
>>682
BIOS に文字列へのポインタ渡すだけだよ?
0688デフォルトの名無しさんNGNG
>>686
それは「私はCが苦手です」と言っているのと同じ事では?
0689デフォルトの名無しさんNGNG
>>688
ヒューレットパッカのスタック電卓って知ってる? 1+1を 1 ent 1 + って入力するやつ
会社の先輩にあれでなければ電卓使えない人がいるよ
Cのa=b+cで書くより アセンブラで考えた方が楽な人もいるって考えたらいいんじゃない?

アセンブラなら 上で出てる メインーサブルーチン関係に縛られない書き方も自由だしね
0690686NGNG
>>688
どれ位で苦手って言うのか知らないけど、win32プログラムは
基本的にAPI叩くだけだから言語は何でもあまり関係無いのでは。
特にmasmはあまりにマクロが強力で、Cで書くのと差は殆ど感じないよ。

まあC++は苦手だけどね。
0691デフォルトの名無しさんNGNG

>689
私もその一人、逆ポーランドというの。forthなんて言語も同じね。
実は慣れると、(1+2)*(3+4)みたいな演算が、読んだとおりに入れればいいのよ(1に2足して3に4足したものをかける-> 1 ent 2 + 3 ent 4 + *)。実に楽。

「アセンブラで考えたほうが楽」とは別の話。あなたがHPの電卓の背景にある体系を知らないだけ。

>688
そもそもCは高級アセンブラっていうぐらいだから、基本的には素養は同じ。
アセンブラも高級言語化してるしね。逆にアセンブラもかけないCプログラマのほうが問題じゃないの。
ただ、Intel系の場合、レジスタの個性を知る必要があるので、その意味では大きく違うが。
0692デフォルトの名無しさんNGNG
スレ違いっぽいけど、どっかのホームページで見つけてきたもののコピペ。

「プログラミング言語でみる性格判断」

* C

他人のプログラムは決して信じない。ライブラリは自分でつくるものだと思っている。

* C++

自己主張がなく、まわりに流されやすい。

* Java

俗物。熱しやすく、冷めやすい。

* BASIC

間違った基礎教育を受けた。もうやり直しがきかない。

* Perl

おたく。変態。奇才。

* AWK

詩人。夢想化。複雑な仕事には向かない。

* SmallTalk

理想主義者。現実を認めようとせず、箱庭に楽しみを求める。

* Prolog

論理主義者。哲学者。地に足がついていない。

* LISP

変人。協調性がなく、常に自分が正しいと思っている。

* COBOL

がんこで融通がきかない事務屋。すぐ昔話をする。時代に取り残されていることに気がついているが、自分ではどうすることもできない。

* FORTRAN

実験派の研究者。数学的・物理的な美しさは求めるが、プログラミングの美しさは求めない。

* FORTH

人間的な美しさよりも、機械的な美しさを求める。



0693デフォルトの名無しさんNGNG
>>692
CもC++もJavaもPerlもAwkもPrologも使う漏れって・・・
0694デフォルトの名無しさんNGNG
* C#  よらば大樹の陰
* Delphi 独立独歩
0695デフォルトの名無しさんNGNG
>>693
他人のプログラムは決して信じずまわりに流されやすい俗物。おたく、変態で地に足がついていない。
0696デフォルトの名無しさんNGNG
>>693
他人のプログラムは決して信じず、まわりに流されやすい俗物。
複雑な仕事には向かず、おたく、変態で地に足がついていない。

awkが入ってなかったヨ。
0697デフォルトの名無しさんNGNG
というか 全てのコンパイラは アセンブラの高級マクロだ
0698 NGNG
C# 一発狙いの詐欺師だが、時代を読む能がない。
0699デフォルトの名無しさんNGNG
* DQN C#を「C#」と全角英数で書いてしまう。
0700デフォルトの名無しさんNGNG
>* BASIC
>
>間違った基礎教育を受けた。もうやり直しがきかない。

これは性格診断か?(w
0701デフォルトの名無しさんNGNG
* 妄想君 どうでも良い事を既成のルールだと主張してしまう。
0702デフォルトの名無しさんNGNG
* 顔が真っ赤なDQN 「DQN」と全角で書いて欲しかったらしい。
0703デフォルトの名無しさんNGNG
>>692-702
asmが無いYO!
0704デフォルトの名無しさんNGNG
>>692
ここがマ板とム板に別れた頃にそんなスレッドあったよ。
0705デフォルトの名無しさんNGNG
asm
すべてを把握しないと気がすまない超管理主義者。付き合う人間は一苦労。
0706デフォルトの名無しさんNGNG
>>705
俺アセンブラ使いだけどOO的設計 管理が面倒だから
行き当たりばったりで思いついたところからかけるアセンブラが好き
0707デフォルトの名無しさんNGNG
>>706
>行き当たりばったりで思いついたところからかける

アセンブラなら許されるってもんじゃないと思うぞ。
OOPLだって行き当たりばったりにクラスを書くことは出来る。
0708デフォルトの名無しさんNGNG
行き当たりばったりプログラミングといえばXPだな。
■ このスレッドは過去ログ倉庫に格納されています