OOPの次はAOPだそうですね?
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGOOPも、満足にやってないうちに、その次が出てきてしまいました。
われわれはどこへ向かっているのでしょうか?
0159デフォルトの名無しさん
NGNGなんか、OPEN-R(AIBOのアプリケーション層)みたいだな。
0160157
NGNGしかし、切り口ってのはなんなのか、まだピンと来ず。
みんな判ってる?
0161デフォルトの名無しさん
NGNGビューアがディペンデンシ・マネージャに必要な機器を要求。
(もしくはディペンデンシ・マネージャがビューアに問い合わせ。)
ディペンデンシ・マネージャがビューアに機器ををラッピングしたクラスのインスタンスを渡す。
ビューアはそれを使って機器を制御。
ビューアは同じインターフェースのディペンデンシ・マネージャがあれば他機種にも流用可能。
デザインパターンのビルダーだかファクトリーだかって感じ?
まだOOばっかな俺・・・。
0162デフォルトの名無しさん
NGNGもう一皮むけて洗練されて言語に練りこまれないといけない気がする。
スコープとか、OOとの整合とか。それに、
メソッドの前後だけ(と思ってる)っちゅうのは
いかにも取って付けたって感じ。
もっとシステマティックな理論の整備がほしい。
0163デフォルトの名無しさん
NGNGリンク先みたけど、friendを洗練させたってこと?
しかし、モジュールごとにひとつのオブジェクト(クラス)の意味っつーか、
定義が変わっていくのはいかがなものか。
すなおに子クラスとかで必要なinterfaceを多重実装したほうが判りやすいのでは?
0164デフォルトの名無しさん
NGNG構造化に対する話じゃないのか?
0165デフォルトの名無しさん
NGNGtemplate method パターンや decorator パターンには
素直に適用できますね。
0167デフォルトの名無しさん
NGNGhttp://www-6.ibm.com/jp/developerworks/java/020719/j_j-aspectj2.html
0168デフォルトの名無しさん
NGNG0169age
NGNG0170デフォルトの名無しさん
NGNG0171名無しさん@XEmacs
NGNGAspectJはなんか便利そうだったけど、OOPの拡張って
感じでいまいちAOPの概念がつかめません。
他にAspect Orientedな言語の実装とかはないんでしょうか?
0172デフォルトの名無しさん
NGNG0173171
NGNGOOでないAOPはできる感じがした。
AOPはOOPの延長上にあるわけじゃなくて、
全く別のパラダイムじゃないの?
0174名無しさん@Emacs
NGNG0175デフォルトの名無しさん
NGNGどっかいいサイトない? …できれば日本語で(ヨワ
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNG0178デフォルトの名無しさん
NGNGそうだな。
OSとか、コンパイラとか、
構造化プログラミングとか、オブジェクト指向とか言ってる間に
みんななにかプログラム作ってれば良かったな。機械語で。
そうすれば楽しい世界になってただろう(w
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG0181デフォルトの名無しさん
NGNGオブジェクト間のやりとりがやたら多い場合に便利、ってことでよろしいか。
MT:G や遊戯王をゲーム化しようってときに便利な気がする。
あるカードの効果を起動しようとしたら、割り込むカードがまたいくつかあって
カードの起動が終った後も、割り込むカードがいくつかある。(その組み合わせで
またいろんな割り込みが続く)
EventListener を沢山使えばいいんだろうけど、アスペクト指向プログラミング
やってりゃさらにスッキリ書ける。
という認識でいい?
0182デフォルトの名無しさん
NGNG詳しい説明キボンヌ。
0183デフォルトの名無しさん
NGNGあー、それはいいかも。
ログ取る以外のまっとうな使い方だね。
0184デフォルトの名無しさん
NGNGどういうの?
わかるようで、いまいちイメージが沸かない。
(カード)ゲームだけに使える話?
0185デフォルトの名無しさん
NGNGヤヴァイよ。
OO最初からやり直して
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG例えば普通のシミュレーションゲームを想定して、
・攻撃可能対象を検索
・目標設定
・命中率計算
・命中したならダメージ計算
みたいなフローがあるとしようさ。
で、命中率に修正があるようなカードが存在する場合、
命中率計算の前に命中率修正メソッドを割り込ませる、
というふうに使えるのではないかと。
フローが複雑にならないと手間のオーバーヘッドが大きくなってしまいそうかな?
0188デフォルトの名無しさん
NGNGOOによる解があったとしても、より優れた別の方法論があるのなら、
OOでの解に拘泥する必要はない。
そして、ここはその より優れた(希望的観測)別の方法論 を語るスレだ。
0189デフォルトの名無しさん
NGNGAspectJの親玉のアメリカンジョーク聞かしてやりたかったな。
0190デフォルトの名無しさん
NGNG聞かせて
0192デフォルトの名無しさん
NGNG無理なの?
てきとーにメソッド切ってやりゃ簡単にできそうな気がするが。
0193183
NGNGAOじゃないような気がする・・・ってのは違うの?
0194デフォルトの名無しさん
NGNG修正順序とかコントロールする必要あるよね?
あるいは片方が無効になったり。
どうやるの?
0195デフォルトの名無しさん
NGNG0196192
NGNGああ、OO の持ってる構造で引っかけるだけじゃ AO じゃないってことか。
確かに純粋な AO からすると、AspectJ は貧弱らしい。
でも実用的なツールとして使うには十分でしょ。
0197ファンタジー房
NGNGそういうプログラム作ったことあるけど、普通にコールバックのためのインターフェース作ってやっても割とすっきり作れた。
interface BattleListener extends EventListener {
..public BattleEvent invokeBefore( BattleEvent e);
..public void invokeAfter( BattleEvent e);
}
みたいなのを作れば、イイんでないの。
(>>194のいう重複、例えば、魔法を食らって「マホカンタ」「マホキテ」どっちを優先するかは、それはそのオブジェクトに優先度の値を持たせて実装すると思う)
>>181 の場合であったとしても、まだ AOP を持ち出すシーンではないような気がする。
AOP で実装するとこんなにスッキリするよ! という実装例は出るかどうかは疑問。
イベントリスナ機構でもコード量は同じくらいなんでないか。
(俺は全く AOP 経験はないが、多分そう。実装例があれば見たい)
AOP が有効なシーンは、ちょっとOOPと離れたところで、限定的にのみ使えるという程度で、あまり大きなパラダイムに成長するかというと、そうは思わない。
特殊機能の一つみたいな感じでないか。
0198ファンタジー房
NGNGじゃあ例としては適さないな。
(ドラクエやってねーのがバレバレだぁ)
0199デフォルトの名無しさん
NGNGただのフックだし。もっと強力なweavingはないんか。
0200デフォルトの名無しさん
NGNG0201($∀$)
NGNG早く聞かせろYO!
0202デフォルトの名無しさん
NGNGいえHTTPです。
0203デフォルトの名無しさん
NGNGRubyがわからん漏れに説明してくれ。
>ただのフックだし。もっと強力なweavingはないんか。
手放しで賛美するつもりは無いんだけど、ただのフックと捉えてしまうと
本質を見過ごすことになると思われ。
フックの機構をフックされる側のコードと切り離して合理的に一括管理
できるってのは、いくつかある利点の中でもわかり易い部類だと思うんだが。
0205デフォルトの名無しさん
NGNG漏れは>>199じゃないけど、AspectJの実装を見てると、
「これってAOPなのかなぁ?」
と思ってしまう。
ただスマートにフックできるだけ、って感じがいなめない。
AOPか?という観点を考えなければ大変いいと思うけど。
>ただスマートにフックできるだけ、って感じがいなめない。
例えばC言語とC++があったとして、C++のメソッドのオーバーライドに
ついて「ただの関数ポインタのテーブルじゃん?」って言うのは不毛な
見方だと思うわけ。join pointsとadviceを指して単なるフックって
言うのはそれに近いんじゃないかと。
もう少し言うと、AspectJのフック技法って
・あるアスペクトに属する事柄はまとめて記述する。
・別のアスペクトに属する事柄は別々に記述する。
というようなコンセプトの中で使用されて意味があるわけで、そうでない
場合はむしろ明示的な呼び出しとかTemplateMethodパターンとか既存の
フック技法を使った方が良い場合もあるはず。
(そういう意味で、>>187のような使い方は違う気がする。)
>AOPか?という観点を考えなければ大変いいと思うけど。
上で書いたように漏れの考えは逆。
単なる構文糖として導入したところで、かえってスパゲティ化が促進される
気がする。あくまでもアスペクト指向の実装技術のひとつであることを意識
しないと利便性よりリスクの方が大きいと思う。
0207デフォルトの名無しさん
NGNG0208デフォルトの名無しさん
NGNGCactusはすでにAspectJ導入してるね。
とsageでこっそ(略
0209デフォルトの名無しさん
NGNGこれって、Cactusのソースで使われてるだけ?
LogAspectとLogManagerAspectってのがあって内部的に使ってる
だけですね。少し物足りない使い方ですが。
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNG0213デフォルトの名無しさん
NGNGAOPってだめなんじゃない?
ログのようなケースでしか役に立たないなら、
フレームワークを一つ用意すればいいだけ。
log4jのようにね。
結局プログラミングスタイルとしては成立しないんだよ。
0214デフォルトの名無しさん
NGNGパワーを激減させてるんじゃない?
もっとメソッドの中身にも溶け込むようなweavingができれば、
一気に強力になっていろいろできそう。
ついでに、一気にデバッグも大変になりそうだけど。
0215デフォルトの名無しさん
NGNGでも読むのメンドイから、誰か翻訳か解説してちょ。マジで。
0216デフォルトの名無しさん
NGNGLispしかり
Smalltalkしかり
Knuthしかり
Dijkstraしかり
0217デフォルトの名無しさん
NGNGKnuthとDijkstraは、どう言う意味?
つか、単に、昔はマシンが遅かったってだけじゃないの?
元論文ってなに?
Web上で見られるんだったら要約するから教えれ。
0219デフォルトの名無しさん
NGNG論文
http://www2.parc.com/csl/groups/sda/publications/papers/Kiczales-ECOOP97/for-web.pdf
関連ページ
http://www.race.u-tokyo.ac.jp/~yoshimi/AOP/index-j.html
0220デフォルトの名無しさん
NGNGttp://staff.aist.go.jp/y-ichisugi/ja/mj/soc.html
0221デフォルトの名無しさん
NGNG似たようなのがいろいろあるみたいね.
0222デフォルトの名無しさん
NGNGできない場合が具体的に何なのかを示せれば、
(問題の解決方法が妥当かどうかも重要)
Aspect指向も日の目を見るかもしれないね。
いろいろ、文句を書いてきたけど
AOPを知る努力もしてるんで、AOP研究者の人は
もっと世間に研究成果を公表して欲しい。
0223デフォルトの名無しさん
NGNG>>219の論文にある例は?
0224デフォルトの名無しさん
NGNGあの具体例だと意味がわからないんだけど、
もしよければ有効性をわかりやすく書いてもらえるかな?
0225デフォルトの名無しさん
NGNG>できない場合が具体的に何なのかを示せれば、
上の方にあるレスでフレームワークがあるとAOPLはいらなくなる
事を示そうとしてLog4jが引き合いに出されていたけど、それって逆。
Log4j使ってそれを更にcommons-loggingで抽象化しても
ログ処理の起点となるコードが呼び出し側に残るじゃん。
tangiling in the codeの一番わかりやすい例だと思うんだけど、どう?
Log4jでもできないからAOPを使ってるわけ。
0228デフォルトの名無しさん
NGNG良い使い道というか、すなわち、良いアスペクトがね。
「ほら、こんなアスペクトを分離したら、コードがこんなにスッキリ!」
みたいな例がたくさんほしいよね。
というわけで、>>218に期待。
0229デフォルトの名無しさん
NGNGってのがAOPの利点とすると、
メインコードのメソッドは他のアスペクトの都合なんか考えない単位になる。
AOPがメソッド単位でしかWeavingできないのなら、
アスペクトは都合の悪い単位でしか記述できず、
アスペクトにできることは必然的に非常に限定されることになる。
メソッド単位のAOPはもうダメポ。
0230デフォルトの名無しさん
NGNGないんだが・・・。
(・・・もしかして、釣られてんのか?おれ。)
0231デフォルトの名無しさん
NGNG条件付フックじゃなくて?
0232222
NGNGAOPでも、ログを出力するクラス、しないクラスを
識別するための記述が必要でしょ?
それが一括で(一箇所に)書けるか書けないかの違いじゃないの?
もちろんlog4jも、一ファイルである程度管理する事は可能だけど。
あと具体的にっていうのは、
具体的に一般化して示せれば、
こういうケースでは、こう使えるという手法になりうるけど
非常に特殊なケース(ログとり)でしか使えないなら、
それはプログラミングスタイルにはなりえないと思う。
すなわち、AOP的なロギングコードを記述するための方法にしかならない。
でも、逆にこう考える事もできる。
複雑なプログラムにはログを出力したいケースが多い。
(だからこそlog4jのようなものがあるし、JavaAPIにもある)
ならばそれを言語機能に加えればいいじゃないか。
じゃあ、どうすればいいか?
という事を考えればいいんじゃないかな?
俺はロギングでのAOPの有効性をまだ理解できていないんだけど
それがわかっているなら
言語機能として組み込んでみればいいんじゃないかな?
もちろんAOPという一般的な枠組みではなく、ロギングに特化した方法でね。
実行時にログ出力、非出力を切り替えられるのは
(if文を使わなくて)
Javaを使っている人には魅力的に思えるよ。
0233デフォルトの名無しさん
NGNGMixJuiceやRubyのModuleってのはなかなかいい方向性だと思う。
0234デフォルトの名無しさん
NGNGRuby廚さん、出番ですよ!
モジュールを熱く語って下さい
MixJuiceは >>157
0236デフォルトの名無しさん
NGNG0237名無しさん
NGNGhttp://www.oucc.org/~tail/aspectj/
0238デフォルトの名無しさん
NGNG0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNGシステム利用者の認証が切れてないかを確認するって
いうアスペクトはどうだろう?
システム利用時に入力したIDとパスワードでログイン後、
データアクセス系のサービスを利用するたびに認証情報
が時間切れ等で失効してないか毎回確認後サービス実行。
厳密にユーザ権限の執行をしたいような業務があるか
どうか分からないけど、とりあえず妄想を吐き出しておく。
0241デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1031056945/43
0242デフォルトの名無しさん
NGNG新しい事なんて何も無い。
0243デフォルトの名無しさん
NGNG0244デフォルトの名無しさん
NGNG…と突っ込むヤシ、その新しい概念をキチンと説明してください。
0245デフォルトの名無しさん
NGNGmodule B(extends A)とmodule C(extends A)は共存できるのでしょうか?
0246デフォルトの名無しさん
NGNGmodule C' = C - A を作って
A, B', C' を組み合わせる方が
設計的にはかっこよさげ
0248デフォルトの名無しさん
NGNG0249デフォルトの名無しさん
NGNG何もわかってない人は来なくていいよ
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNG0252デフォルトの名無しさん
NGNG0253251
NGNG違うよ。ばーか。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG0256デフォルトの名無しさん
NGNG0257デフォルトの名無しさん
NGNGバカは、バカっていう奴がバカさ。バーカ。
0258デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています