WebDB アプリの苦悩 -- HTTP と DB と OOP と --

pokarim さんの WebDB アプリの発言に対して cocoatomo が反応して始まった会話を載せてます. pokarim さんの問題意識: HTTP リクエスト ←(綺麗に対応しない)→ SQL クエリ ↓ cocoatomo の返答: OOP のメソッドで SQL クエリを包んだら? 続きを読む
3
Yasuo Nakanishi @nakanishiyasuo

これは手続き型の説明なような。 RT @cocoatomo どっちかと言うと #OOP って複雑なものを上手く分類して複 雑なまま扱うための仕組みだから,

2010-07-10 16:23:24
pokarim @pokarim

相性というより、複雑なまままとめるから、結局再利用化や合成がしづらいのが問題では。>#OOP RT @cocoatomo どっちかと言うと #OOP って複雑なものを上手く分類して複雑なまま扱うための仕組みだから, HTTP や RDB と相性悪いんだろうなぁ.

2010-07-10 16:24:08
Yasuo Nakanishi @nakanishiyasuo

抽象化の効果を0と仮定すればあり得なくもないけど、それだと手続き型でさえ存在し得ないからなー。

2010-07-10 16:24:30
tomo🐧@learning @cocoatomo

なんで? RT @nakanishiyasuo: これは手続き型の説明なような。 RT @cocoatomo どっちかと言うと #OOP って複雑なものを上手く分類して複 雑なまま扱うための仕組みだから,

2010-07-10 16:25:30
tomo🐧@learning @cocoatomo

個人的には #OOP は手続き型2.0だと思ってる. 細かい説明はまた後で.

2010-07-10 16:27:50
pokarim @pokarim

たしかにこういうときは関数型OOPと手続き型OOPにわけたほうがいいかもしれませんね。 RT @nakanishiyasuo: これは手続き型の説明なような。 RT @cocoatomo どっちかと言うと #OOP って複雑なものを上手く分類して複雑なまま扱うための仕組みだから,

2010-07-10 16:28:12
Yasuo Nakanishi @nakanishiyasuo

複雑なものが複雑なままだったら抽象化が機能していないってことなので、それはもうOOではないですよね?って意味です。 RT @cocoatomo なんで? RT @nakanishiyasuo: これは手続き型の説明なよう な。

2010-07-10 16:43:17
tomo🐧@learning @cocoatomo

Replyありがとうございます. javaを想定してますが, OOPは複雑さを参照関係に押し付けてるだけ, と思ってます. RT @nakanishiyasuo: 複雑なものが複雑なままだったら抽象化が機能していないってことなので、それはもうOOではないですよね?って意味です。

2010-07-10 16:56:19
pokarim @pokarim

複雑かどうか、抽象化が十分かどうかは、見方によると思います。 RT @nakanishiyasuo: 複雑なものが複雑なままだったら抽象化が機能していないってことなので、それはもうOOではないですよね?って意味です。 RT @cocoatomo

2010-07-10 17:04:29
Yasuo Nakanishi @nakanishiyasuo

現実の観測としてのその見方は正しいのですが、複雑なものを抽象化で単純にするのがOOなので、抽象化された後の姿は無視できないですよね? @cocoatomo javaを想定してますが, OOPは 複雑さを参照関係に押し付けてるだけ, と思ってます.

2010-07-10 17:07:44
Yasuo Nakanishi @nakanishiyasuo

「OOは複雑なものを単純化する技術」というところでコンセンサスはありますか? @pokarim 複雑かどうか、抽象化が十分かどうかは

2010-07-10 17:16:50
pokarim @pokarim

たとえばOOPでは依存関係に基づく更新はObserver パターンで対応できるが、依存関係が単なる数式でかけるのに、条件分けしてそれぞれメソッドを書く必要があり、依存関係が複雑になったときの記述の複雑さが爆発するようでは、OOPとしてはきれいでも、十分適切な抽象化だとは思えない。

2010-07-10 17:16:59
tomo🐧@learning @cocoatomo

あ, 「手続き型」=「構造化された手続き型」と脳内で暗黙に変換して Tweet してた. 混乱させたらすみません.

2010-07-10 17:20:14
pokarim @pokarim

たとえば、条件でフィルタしたオブジェクトの属性値の集計値は、計算自体は簡単な式でかけても、Observer パターンを使ってこの式を常に等しく保つために書かなくてはいけないメソッドの処理内容は、かなり複雑になってしまう。これは業務アプリ書いたことがあればきっとわかるはず。

2010-07-10 17:22:22
tomo🐧@learning @cocoatomo

#OOPの定義合戦をやりたい訳ではないので, お互いの想定が見せ合えた時点でもういいかな, と思ってます. RT @nakanishiyasuo: 現実の観測としてのその見方は正しいのですが、複雑なものを抽象化で単純にするのがOOなので、抽象化された後の姿は無視できないですよね?

2010-07-10 17:25:47
pokarim @pokarim

「OOは複雑なものを単純化することを目的とした技術」くらいの意味ではあります。 RT @nakanishiyasuo: 「OOは複雑なものを単純化する技術」というところでコンセンサスはありますか? @pokarim 複雑かどうか、抽象化が十分かどうかは

2010-07-10 17:27:54
Yasuo Nakanishi @nakanishiyasuo

だとすると「複雑なものを複雑なまま」というのは複雑さの量が変化しないのでOOの目的からは外れてしまいますよね。とういのが僕の指摘です。 RT @pokarim 「OOは複雑なものを単純化することを目的とした技術」

2010-07-10 17:34:29
pokarim @pokarim

それは目的から外れたのではなく、OOを適用しても目的を達成できない種類の問題があるんだと思います。 RT @nakanishiyasuo: だとすると「複雑なものを複雑なまま」というのは複雑さの量が変化しないのでOOの目的からは外れてしまいますよね。とういのが僕の指摘です。

2010-07-10 17:42:27
pokarim @pokarim

もちろん使う側の使い方の問題である場合もあるわけですが。 RT @nakanishiyasuo: だとすると「複雑なものを複雑なまま」というのは複雑さの量が変化しないのでOOの目的からは外れてしまいますよね。とういのが僕の指摘です。

2010-07-10 17:43:27
Yasuo Nakanishi @nakanishiyasuo

それはそのとおりですね。業務的な複雑さなんかもOO的な手法(というより言語的な手法)で解決できない良い例ですね。 @pokarim それは目的から外れたのではなく、OOを適用しても目的を達成 できない種類の問題があるんだと思います。

2010-07-10 17:56:58
pokarim @pokarim

OOで解決できない問題を解決できる別の手法やパラダイムを探すところにロマンがあるんだと個人的には思います。 RT @nakanishiyasuo: それはそのとおりですね。業務的な複雑さなんかもOO的な手法(というより言語的な手法)で解決できない良い例ですね。 @pokarim

2010-07-10 18:07:27