トップページ⇒tech
1001コメント266KB

消えてなくなれよ >オブジェクト指向 part.3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2009/06/01(月) 12:30:25
前スレ
http://pc12.2ch.net/test/read.cgi/tech/1237672679
0153デフォルトの名無しさん2009/06/06(土) 17:29:47
Cardelli厨の再来か?
0154デフォルトの名無しさん2009/06/06(土) 17:30:48
>>150
早く「俺はまだまだ未熟でした、ごめんなさい」と言えよw
潔く負けを認めないかぎり、お前のスキルは一歩も前に進めないんだぞ。
0155デフォルトの名無しさん2009/06/06(土) 17:36:17
最終的には「リンク先読め」「本読め」だの言ってお茶濁すやつ多いなw
自分の言葉で簡潔に表現できないw

あと、文章を引用してきて朗読するだけとかw
0156デフォルトの名無しさん2009/06/06(土) 17:39:24
>>152
> そもそもオブジェクト指向はメッセージングじゃない。
> ただの関数呼び出しだ。

それを言うのなら、
「そもそも現在のOO実装は関数呼び出しがベースになっているから、
メッセージングによる本来のオブジェクト指向じゃない」
だろう。
0157デフォルトの名無しさん2009/06/06(土) 17:43:22
そもそもメッセージングを厳密に実装してなんか良いことあんの?
0158デフォルトの名無しさん2009/06/06(土) 17:43:54
必要なものはただの関数呼び出し。
だから、本来のオブジェクト指向は必要ないんだな。

>>127
関数が外部の変数に依存しないときは関数を作る。
関数の外側の変数を使いたいときはクラスを作る。
これで間違いない。
0159デフォルトの名無しさん2009/06/06(土) 17:45:26
メッセージ送信という抽象モデルと、
メソッド探索+関数呼び出しという実装を、
ごちゃごちゃにするから混乱してるんじゃね?
0160デフォルトの名無しさん2009/06/06(土) 17:46:27
>>158
たぶんお前が一番レベル低い。
0161デフォルトの名無しさん2009/06/06(土) 17:48:21
>>159
そういうことだな
0162デフォルトの名無しさん2009/06/06(土) 17:48:24
>>158
> 関数が外部の変数に依存しないときは関数を作る。
> 関数の外側の変数を使いたいときはクラスを作る。

キミ、どこの土方よ?
0163デフォルトの名無しさん2009/06/06(土) 17:50:17
オブジェクトAとオブジェクトBがそれぞれ別スレッドで動作してるとき、
AからBに(関数呼び出しによる)メッセージを送ったばあい、Bのメソッドを実行する実体は
Aのスレッドだったりして、そういうのが気持ち悪いと思うことはある。
0164デフォルトの名無しさん2009/06/06(土) 17:53:09
非同期管理はまた全然別の話だろう
0165デフォルトの名無しさん2009/06/06(土) 17:54:05
ちょくちょくスレッド間の同期を混ぜるやつが居るなwこのスレにはw
0166デフォルトの名無しさん2009/06/06(土) 17:55:44
>>162
レッテルを貼るだけでは何の意味もないだろ
0167デフォルトの名無しさん2009/06/06(土) 17:55:59
この中でerlangをさわったことがある人、もしくはpi-calculusを勉強したことがある人はいるの?
0168デフォルトの名無しさん2009/06/06(土) 17:59:02
>>167
俺は、無い!(´;ω;`) 一番処理系に近づいたのはRHGを読書した時w
0169デフォルトの名無しさん2009/06/06(土) 18:09:27
>>159
実装と無関係な抽象モデルを作っても無駄じゃないの
関数呼び出し前提でモデル作ればいいじゃん
0170デフォルトの名無しさん2009/06/06(土) 18:16:50
>>143
コンパイラ書けとか言うなら、せめてお前さんがASTに落とすまでのフロントエンドと
中間形式に変換した以降のアセンブリコードを吐くまでのバックエンドを自分で
書いて用意したらどうだ?これらの部分はお前さんの主張を「理解させる」上で
本質的ではないからな。
人にやれと言うくらいだから、この程度は簡単に書けるだろ?
0171デフォルトの名無しさん2009/06/06(土) 18:27:12
>>169
実装ありきでモデルを作るんじゃなくて
まずモデルがあってそれを実現するために実装があるんだぞ
0172デフォルトの名無しさん2009/06/06(土) 18:42:40
>>171
デスマを防ぐためにモデルを作るっていう発想はないんだな
絶望した
0173デフォルトの名無しさん2009/06/06(土) 18:42:55
erlangって変数を設定したら2度と値を変えられないんだよね。
頭が硬くてプログラムを作れなくて使うのをあきらめますた。
0174デフォルトの名無しさん2009/06/06(土) 18:43:08
???
0175デフォルトの名無しさん2009/06/06(土) 18:53:40
>>172
そうじゃなくてモデルを作る時は
実装時に変な足かせになったりしないように抽象的な書き方をするのが基本だろ
論点ずらしもいいとところだぞ
0176デフォルトの名無しさん2009/06/06(土) 18:59:59
>>175
関数呼び出しを前提にすることが、変な足かせになるの?
0177デフォルトの名無しさん2009/06/06(土) 19:37:18
erlangは知らんが、ScalaのActorみたいなのがオブジェクト指向の
メッセージパッシングの理想型だったりするのか?

オブジェクトがそれぞれ別のスレッド(もどき)で動いてて、それぞれの
メールボックスに入ってるメッセージを順次読み出して実行・返信みたいな。
0178デフォルトの名無しさん2009/06/06(土) 21:23:35
あーまだやってたのか

結局 OO なんてのは「明確な定義もないただの幻想」
ってのが、前スレの結論じゃなかったのか?
0179デフォルトの名無しさん2009/06/06(土) 21:30:10
「前スレの結論」っていうのは大抵、
前スレで一番最後に目立っていた香ばしい強弁のことだよね。
0180デフォルトの名無しさん2009/06/06(土) 21:31:13
「前スレで俺が言ったこと」だろ
0181デフォルトの名無しさん2009/06/06(土) 21:43:08
じゃ、誰か OO の明確な定義をしてみてくれよwW
0182デフォルトの名無しさん2009/06/06(土) 21:45:00
関数がない言語は少ないが、クラスがない言語はたくさんある。
クラスが役に立たないわけじゃないが、
クラスに似た方言がたくさんあって統一できてない感じがする。
0183デフォルトの名無しさん2009/06/06(土) 21:53:49
大学出てる奴いないだろw
お前らは市販の参考書でお勉強した程度のレベルだ
0184デフォルトの名無しさん2009/06/06(土) 21:55:37
> 大学出てる奴いないだろw
それは暴言だろ?
Fランだって大学は大学だろうに…
0185デフォルトの名無しさん2009/06/06(土) 22:16:28
λ計算、オートマトン、関係代数、述語論理、π計算、グラフ理論など
まともな議論が出来る土台がソフトウェア技術を大幅に進歩させている中、
OOに関する議論はメッセージだのオブジェクトだのカプセル化だの、相変わらず不明確で不毛な論争が続くのみ。
これはOOが属人的なノウハウの域を脱していない証拠。
さて、ではOOをまともな議論の土台に載せるにはどうすればいいのでしょう?
やっぱりσ計算?
0186デフォルトの名無しさん2009/06/06(土) 22:17:29
σ計算 = 型理論 + 操作的意味論
0187デフォルトの名無しさん2009/06/06(土) 22:18:03
そもそも大学でオブジェクト指向とか教えてるのか?
0188デフォルトの名無しさん2009/06/06(土) 22:34:31
>>186
操作的意味論があるなら、そこからクラス設計の優劣が定量的に計れたりしないだろうか?
総合的なものじゃなくても、特定の側面(結合度とか)だけでもいいので。
そういう論文が読みたい。
0189デフォルトの名無しさん2009/06/06(土) 22:56:09
凝集度ならcohesion metricsで検索すればそれらしいものがでてくる
0190デフォルトの名無しさん2009/06/06(土) 23:11:13
>>189
ありがとう。こんなに親切な御仁がいるとは思わなかった。
実はσ計算についても殆ど何も知らないので、OOの特徴(例えばMLのモジュールとの違い)を
σ計算の言葉で言い直すことができる事を期待して勉強してみます。
五十嵐先生まんせー。
0191デフォルトの名無しさん2009/06/06(土) 23:18:41
σ計算について詳しい本なんてこれぐらいしか知らない

Amazon.com: A Theory of Objects (Monographs in Computer Science): Martin Abadi, Luca Cardelli: Books
http://www.amazon.com/dp/0387947752/

簡単に概要を知るだけならLuca CardelliのサイトのPaperの
Objectカテゴリにある論文を見ればいいんだけど
0192デフォルトの名無しさん2009/06/06(土) 23:26:44
>>185
> さて、ではOOをまともな議論の土台に載せるにはどうすればいいのでしょう?
> やっぱりσ計算?

それ以前に OO の明確な定義付が必要だってば
何見てもオレオレ定義じゃん
0193デフォルトの名無しさん2009/06/06(土) 23:32:13
http://lucacardelli.name/Papers/ObjectEncodings.pdf
ベースはFω<:かぁ。ふむふむ。
0194デフォルトの名無しさん2009/06/06(土) 23:38:57
>>192
まともに議論できる土台であるσ計算の言葉でOO(に似たなにか)を言い替えてみる。
↓
これをOOの定義にしよう!(というコンセンサスが広がる)
↓
うまー
0195デフォルトの名無しさん2009/06/06(土) 23:51:27
ちなみに、さっきから教えて君している私は学生でも院生でもなく、
職業プログラマなので、学生乙は禁止。
0196デフォルトの名無しさん2009/06/07(日) 01:50:45
Software Engineering != Computer Science
http://www.ddj.com/architect/217701907

この人は学者じゃないが、まあ言ってることは大体正しいな。
0197デフォルトの名無しさん2009/06/07(日) 02:11:53
懐かしい、DDJじゃないか。
日本でも雑誌出してたよな。
0198デフォルトの名無しさん2009/06/07(日) 05:35:37
オブジェクト指向ってのはスパゲッティ指向をカッコヨク表現したものなんだよ
0199デフォルトの名無しさん2009/06/07(日) 08:07:29
DDJの記事についてスラドで話題になってるな。
いきなりCを関数型言語だとか言う奴がいたり、それに食ってかかる奴等がいたり
このスレに似てるな。

http://tech.slashdot.org/story/09/06/06/0210229/How-Software-Engineering-Differs-From-Computer-Science
0200デフォルトの名無しさん2009/06/07(日) 08:11:23
>>126
VBScript(否.NET)なめんな
0201デフォルトの名無しさん2009/06/07(日) 11:53:58
>>198
スパゲティ指向ってのは言いえて妙かもしれない
0202デフォルトの名無しさん2009/06/07(日) 12:33:10
茹でる前のスパゲティが理想なのに、気が付けば茹で上がったスパゲティって事か?
0203デフォルトの名無しさん2009/06/07(日) 12:54:04
だとしても生麺なんて食いたくないね
0204デフォルトの名無しさん2009/06/07(日) 12:58:05
OOはOOPだけにして、柔軟性と抽象化のためのテクとして受け取ればよかった。

分析と実装がどうの、現実世界=オブジェクト、メッセージがうんたら、
これをばっさり捨てたらよかったのにね。
0205デフォルトの名無しさん2009/06/07(日) 13:00:33
それがDbC
ユーザ定義の抽象型上の動的多態と拡張されたホーア論理を使ったよる制約プログラミング
0206デフォルトの名無しさん2009/06/07(日) 13:16:43
お歳暮に渡すソーメンを買ってきたのに
何故か、そのソーメンで昼飯を作っちゃうみたいなwwww
0207デフォルトの名無しさん2009/06/07(日) 14:53:38
>>204
> 分析と実装がどうの
この人たち OO を出せば客が尊敬してくれると思ってる連中だと思うよ

一昨年かな、急遽、長年付き合いのある映像関連のシステム作ってる
会社の手伝いをする羽目になった。

内容としては「既にあるシステムの出力フォーマットをMP4でラップしたい」だった

最初に頼んだところは、「いまから OO 分析してどーたらこーたら」と言うばかりで
実質的には何もしなかったそうだW
0208デフォルトの名無しさん2009/06/07(日) 15:47:00
オブジェクト指向とそれ以外の違いなんて
instance.method()とmethod(instance)の違いくらいしかないんじゃないの?
0209デフォルトの名無しさん2009/06/07(日) 15:53:55
CLOS では (method instance) なわけだが
0210デフォルトの名無しさん2009/06/07(日) 15:58:20
>>208
そういう不用心な事を言うと、マルチプルディスパッチこそがOOの肝だろうが、
って言われちゃうぞ。
0211デフォルトの名無しさん2009/06/07(日) 16:41:26
・カプセル化
・継承
・ポリモーフィズム
0212デフォルトの名無しさん2009/06/07(日) 17:20:38
いまだにカプセル化とか言うアホがそんざいするんだ
0213デフォルトの名無しさん2009/06/07(日) 17:33:44
>>212
カプセル化とか言うアホとは?
0214カプセル化2009/06/07(日) 17:34:49
俺俺、俺のこと
0215デフォルトの名無しさん2009/06/07(日) 17:40:19
        ゴガギーン
             ドッカン
         m    ドッカン
  =====) ))         ☆
      ∧_∧ | |         /          / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
     (   )| |_____    ∧_∧   <  おらっ!出てこい>>212
     「 ⌒ ̄ |   |    ||   (´Д` )    \___________
     |   /  ̄   |    |/    「    \
     |   | |    |    ||    ||   /\\
     |    | |    |    |  へ//|  |  | |
     |    | |    ロ|ロ   |/,へ \|  |  | |
     | ∧ | |    |    |/  \  / ( )
     | | | |〈    |    |     | |
     / / / / |  /  |    〈|     | |
    / /  / / |    |    ||      | |
   / / / / =-----=--------     | |
0216デフォルトの名無しさん2009/06/07(日) 17:47:52
カプセル化機能のないOO言語って山ほどあるのに…

クラス定義でアクセス属性決定する意味あるのか?
0217デフォルトの名無しさん2009/06/07(日) 18:13:30
アクセス属性が必要ないのに、アクセス属性が付いてるって?
ご冗談をwww
0218デフォルトの名無しさん2009/06/07(日) 18:15:29
private/publicとかの存在意義に疑問を投げかけてるのか・・・?
0219デフォルトの名無しさん2009/06/07(日) 18:18:42
>>215
     |┃三        / ̄\
     |┃         |     |
     |┃          \_/
 ガラッ. |┃            |
     |┃  ノ//   ./ ̄ ̄ ̄ \
     |┃三    /  ::\:::/:::: \
     |┃     /  <●>::::::<●>  \
     |┃     |    (__人__)     |
     |┃三   \    ` ⌒´    /
     |┃三   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ \
0220デフォルトの名無しさん2009/06/07(日) 19:07:16
お前らの話のどこがおもしろいのか解らん。
議論してる奴らもUMLとC/C++とJavaぐらいしか知らない奴ばっかりっぽいから、
知識不足で底が浅い議論になってるように見える。
0221デフォルトの名無しさん2009/06/07(日) 19:08:12
話に面白さを感じるには、一定の知能が必要だな。
0222デフォルトの名無しさん2009/06/07(日) 19:59:43
その一定の知識ってハードルがすごく低いんだと思うよw
0223デフォルトの名無しさん2009/06/07(日) 20:05:52
どうせ2chじゃまともな議論にならないしな。
他でやれば結構面白い議論に発展するかもしれんが。
0224デフォルトの名無しさん2009/06/07(日) 20:25:53
こんなところで議論とかw
0225デフォルトの名無しさん2009/06/07(日) 21:57:07
ぶぴぶぴ
最高だ この力・・・
0226デフォルトの名無しさん2009/06/07(日) 22:06:55
中を見えなくするとか隠蔽とか言われても中知りたくなる件w
0227デフォルトの名無しさん2009/06/07(日) 22:19:27
好きな子のパンツはやっぱり見たいよな
0228デフォルトの名無しさん2009/06/07(日) 22:39:06
・カプセル化したければinterfaceを使い、classは全部公開
・継承はinterfaceのみ可
・ポリモーフィズムは↑に反しない限り自由
0229デフォルトの名無しさん2009/06/07(日) 23:00:04
>>228
それはww構造的www部分www型ww
0230デフォルトの名無しさん2009/06/07(日) 23:14:46
お前らOOPの影響で不況になったの解ってる?
OOPが原因でアウトソーシングなんて発生したんだよ?

0231デフォルトの名無しさん2009/06/07(日) 23:33:59
こら!
なんでもかんでもオブジェクト指向のせいにするな アホ
OOを使う人間が無能だっただけでOOが悪いわけじゃないということにいい加減きづけよな
0232デフォルトの名無しさん2009/06/07(日) 23:46:22
>>231
実際経営者というか管理の上流は
OOすることにより、製造業の部品が簡単に作れると勘違い
するようになった。もう複雑なOSなんて知らなくてもいいし
OOするだけで製造コストが劇的に下がると妄想を抱くようになった。

もし構造化のみだったらそんなこと無かったよ
コンサルなんて意味のない職業が台頭することもなかったし
管理のみの上流工程とか意味のない職種も誕生しなかった
全てがC++やJavaなどに代表されるOOがもたらした弊害でしょ

ジョエルもJavaスクール(笑)の影響でITがおかしくなったと言ってるぞ
金融破たんだって、JavaなんかのOOで簡単かつ乱雑にマネーゲームを
しかけることができるのが原因の1つだし

OOが無ければこれだけ異常な下請けや不況は起きなかった
0233デフォルトの名無しさん2009/06/07(日) 23:52:41
多重下請け構造とアウトソージングは別物のような…
日本の業界だと一緒くたにされがちだけど
0234デフォルトの名無しさん2009/06/07(日) 23:57:32
弊害といえば弊害だけど
最後の方はさすがに飛躍し過ぎ
0235デフォルトの名無しさん2009/06/07(日) 23:58:28
経営者はooとかしらないよw
なぜかというと、彼らは
0236デフォルトの名無しさん2009/06/08(月) 00:04:23
>>231
>OOを使う人間が無能だっただけでOOが悪いわけじゃない
もう聞き飽きたよ、そのセリフは...。
はいはい、私は無能です。
0237デフォルトの名無しさん2009/06/08(月) 00:09:18
それに見てみろ
Javaなんかはバージョン上がる度にがどんどん複雑になるが生産性が
Java1.3や1.4の頃とかわらない

Rubyなんて10年前からあるけど脚光浴びてるだけで
なんら普通の生産能力しかない。むしろ無い部品が多いから
キャッキャとエテコウのようにオナプロ実装しているに過ぎない
そしてC++はいまだに0xの仕様を最終局面まで詰めれないし
このまま永遠に仕様策定ごっこして終わり

つまりだ、OOはその仕組みを作ることからして莫大で無駄な時間を浪費
する悪魔でしかないのだよ。技術の技術として仕上げていくことに対して
OOは無駄なことが多い単なる技術屋が金を長期間搾取できるための悪材料
でしかないんだよ

0238デフォルトの名無しさん2009/06/08(月) 00:11:44
>Rubyなんて10年前からあるけど脚光浴びてるだけでなんら普通の生産能力しかない。
普通筏と思われ。
0239デフォルトの名無しさん2009/06/08(月) 00:17:53
で、
0240デフォルトの名無しさん2009/06/08(月) 00:24:16
っていう
0241デフォルトの名無しさん2009/06/08(月) 07:44:14
>>232
> もし構造化のみだったらそんなこと無かったよ
> コンサルなんて意味のない職業が台頭することもなかったし

コンサルは構造化以前から台頭していましたが何か?

> 管理のみの上流工程とか意味のない職種も誕生しなかった

ウォーターフォールは構造化以前から存在していましたが何か?

> OOが無ければこれだけ異常な下請けや不況は起きなかった

メインフレーム時代はもっとひどかったぞ。
0242デフォルトの名無しさん2009/06/08(月) 08:01:50
OOA/OODって、結局現実世界のメタファーを使うことで、計算機科学を全く
理解していない素人が分かった気になってコンサルタントとか名乗り出して
美辞麗句を並べた。で、経営者もそれに騙されて無駄金使った挙句、結局
ろくな成果が出なくてOO自体が忌み嫌われる存在になってしまったのが
一番の悲劇だろうな。

OOのテクニック的には基本的に構造化の延長だし、そこまで筋は悪くないのに。
0243デフォルトの名無しさん2009/06/08(月) 09:03:58
憂鬱本の方がOOSCより売れたという時点で南無…
0244デフォルトの名無しさん2009/06/08(月) 09:18:45
OOSCたけぇ〜もん。値段分の価値はあると思うけど。
0245デフォルトの名無しさん2009/06/08(月) 09:22:21
言語によって実装方法が違ったこと。
滅茶苦茶な翻訳、訳語の混乱があったこと。
更にオレオレオブジェクト指向が大量に出現したこと。

混乱がありすぎた。
0246デフォルトの名無しさん2009/06/08(月) 09:28:08
>>232にはオブジェクト指向が理解できないであろう事は良く分かった
0247デフォルトの名無しさん2009/06/08(月) 09:42:24
OOには、goto的なものが多すぎる。
便利な機能を使いすぎると、かえって複雑になる。
バランスが非常に難しい。
C++なんて、マルチパラダイムとか言ってるが正気じゃない。
あれもこれも詰め込んだら、普通の人には適材適所で使うのが難しい。
0248デフォルトの名無しさん2009/06/08(月) 10:14:00
>>247
× 普通の人には
〇 土方の人には
0249デフォルトの名無しさん2009/06/08(月) 12:10:35
OOではなくて関数型の言語の方が良い、っていう意見もここで
よく見るけれども、それほど良いものならなぜOOPLを駆逐して
広く普及しなかったのだろう? 皮肉ではなく、純粋な疑問として。
0250デフォルトの名無しさん2009/06/08(月) 12:24:27
マイクロソフトが関数型言語を出さなかったから。
関数型言語なんて知らなくても使えるようにならないと流行らないよ。
0251デフォルトの名無しさん2009/06/08(月) 12:24:47
>>249
ポピュラーなオブジェクト指向言語はC++やJavaなどのCの派生言語だから。
MLやHaskellなどは考え方を結構変えないと理解しがたいから、取っつきにくかったから。
0252デフォルトの名無しさん2009/06/08(月) 12:26:10
>>250
MSができる前から関数型言語は存在したけど、PascalやCよりずっとマイナーだった。
■ このスレッドは過去ログ倉庫に格納されています