FTP、CGI、SSI、telnetが自由に使える超高速レンタルサーバ。
工夫しだいで、楽しさ100倍。 www.binboserver.com
月額千円サーバ | サブドメインコース | BIGなサーバ

サブドメインコース:CGIやFTPが使いたい・お金を掛けたくない人のために。
 *****.syo-ten.com *****.gasuki.com *****.zansu.com
 お好きな名前を無料で使えます。早い者勝ち。

人気サイト 月額千円サーバ:.com .net .org で取得できます。.JPドメイン大歓迎!
 超高速・高機買Tーバを1000円で!使ってみれば、分かります。

BIGなサーバ:Big なBig なサーバー。充実したサポートをお求めの方へ。
 インターネットでご活躍の皆様へ、そしてご活躍予定の皆様へ。
2ちゃんねるは、このサーバを使っているです。

■掲示板に戻る■ ■過去ログ倉庫めにゅーに戻る■

OOPの次はAOPだそうですね?
1 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:15
今度はAOP(アスペクト オリエンテッド プログラミング)だそうです。
OOPも、満足にやってないうちに、その次が出てきてしまいました。
われわれはどこへ向かっているのでしょうか?


2 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:17
www.aosd.net見てね


3 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:17
てゆうかお前らブビ坊が進んでないだけ>1

みんな、関数ライブラリじゃなくクラスライブラリ使ってるぞ。


4 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:24
>>3
ぷ。
クラスライブラリ使って、オブジェクト指向のつもりだって。


5 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:27
google検索。アスペクト オリエンテッドで出てきたのは「OOエンジニアの輪」の
眼鏡のおばちゃん。javaよりCが好きだと。


6 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:30
おばちゃんからの引用

”Java よりは C 言語のほうが好きですね。変形していくところとか、
アスペクトオリエンテッドなところとか。C 言語のほうがいいですね。
それに、Java は遅くていやです(笑)。でも、Java と UML がなかった
ら、日本のオブジェクト指向は影も形もなくなっていたかも知れませんよね。”

ふ〜ん


7 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:30
>>4
OO信者の平均レベルはその程度じゃんか 藁


8 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:36
新しいパラダイムを無視しつづければそのうち構造化に戻って
くるかも。歴史は繰り返すっていうし。


9 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:37
日経が取り上げてないから>>1はネタ。


10 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:38
次はOOP++が出てきます。


11 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:39
>>9
藁。CACMに出てたんだけど。


12 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:43
>>11
投資情報に流さないと動かないよ−ん。


13 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:44
>>10
するとC++++が出てくるな。


14 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:45
C+4
数字はトレンドバージョン


15 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:47
マ板の連中が多いようだな…


16 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:48
>>15
普通かけもちじゃないか?


17 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:50
次ぎはHOPです


18 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:52
>>17
ハゲオリエンテッド?


19 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:52
その次はHSPです


20 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:53
AOPも理解できないCOBOLERは逝って良し!


21 名前: デフォルトの名無しさん 投稿日: 01/11/05 21:58
>3000部出たら「売れた」、1万部いったら「ベストセラー」ですよね。
>“OMT”と“GoF”が2万部で、酒匂さんの訳されたMeyerさんの「 オブジ
>ェクト指向入門 」(アスキー出版)が1万部だそうですよ、正確には知り
>ませんがそういう噂です。

専門書ってこんなに厳しいのか・・・。


22 名前: 投稿日: 01/11/05 21:58
ていうか、追いかけるのもう面倒くさいんだけど。それに日本の学者
は、新しいパラダイムとか考えてないの?輸入には熱心だけど。


23 名前: 投稿日: 01/11/05 22:01
>>21
3000部でいくら入るの?印税って1割?だと、300x3000で30マソか。
2割でも60マソだから、どっちみち少ないね。


24 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:02
>>22
日本産は国内で無視されるかアメリカに因縁つけられて終わりだ


25 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:08
>>24
ルビ房発見!


26 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:09
意外にもTRONマニアかもよ?


27 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:10
それよりなによりやっぱAOEだよ


28 名前: デフォルトの名無しさん 投稿日: 01/11/05 22:13
>>27
ネットゲー板 逝け


29 名前: 投稿日: 01/11/05 23:00
日本語のサイト発見。アスペクト指向ね。

http://dolphin.c.u-tokyo.ac.jp/~kazu0/aspectj-primer/primer-fornewcomers/node1.html


30 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:01
解説してちょ>1


31 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:07
>>29
誰か、そのページを200字以内に要約して発表してくれ。


32 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:19
こっちのほうがよさげ?(←まだ読んでない)

http://www.race.u-tokyo.ac.jp/~yoshimi/AOP/index-j.html


33 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:25
〜〜 激しくアスペクト!!(゚Д゚) 〜〜


34 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:27
SubjectOrientedってのも(何種か)あるみたい。


35 名前: 投稿日: 01/11/05 23:30
>>30
私の現状の理解だけど。OOPの短所は、クラスを横断するような
グローバルな動作や処理を局所化し、適切にドメイン単位の処理を
分離することが難しい。例えば、点や線、矩形などのグラフィクス
オブジェクトを考えてみると、これらをある特定の画像表示ハードウェア
で表示するための処理は、個々のクラスにそれぞれ埋め込むような
書き方に(OOの必然?)なってしまうか、または情報の隠蔽を無視する
ような汚い方法になってしまう(ようである)。
AOPは、このような短所を克服するための、複数のクラスを横断するような
処理を局所化する機能をOOPに追加するものである。

簡単に言えば、いわゆる業界人のよく使う言葉だが、クラス構造を
複数クラス横断的な”切り口”で見て、その切り口に対する処理を明示的に一個所
に書けるということだと思う。

で、どうかな。


36 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:35
>これらをある特定の画像表示ハードウェアで表示するための処理
アーキテクチャパターンのレイヤーパターンで終りでは。


37 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:43
AOPなんて、最下層で力仕事やってるPGに降りてくるのに、
確実に10年以上かかります。
君らは、そのときに覚えればいいよ。


38 名前: 投稿日: 01/11/05 23:44
>>36
私はAOPの布教者ではありません。

基本的にはどのパラダイムを使っても、ある特定の仕様を満たすシステムは
作れますよね。AOPでは、特にソースコードの保守性や視認性、わかりやすさ
の向上をめざしているようです。


39 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:45
本体のコードに触らずにコンパイル時に取り付け取り外し
可能っていうのはイイ。Radみたいな環境を想定して、
機械的に生成されたコードを全く見なくても済むならイイんだが。


40 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:46
>>35
ほうほう。
だが、簡単に言われたところが、さっぱり分からん(ウトゥ


41 名前: デフォルトの名無しさん 投稿日: 01/11/05 23:48
Decoratorパターンをうまく実装できるって感じ?


42 名前: 投稿日: 01/11/05 23:56
29のURLにあるHello Worldのサンプルプログラム見るとちょこっと感じはつかめる
かと。

>>40
もっと簡単に言うならトリガー指定のグローバル関数が書けるってことだと。

>>41
Decoratorパターンて、デザインパターン関係ですか?勉強してないのでわかり
ません。


43 名前: デフォルトの名無しさん 投稿日: 01/11/06 00:25
すまん、マジで聞きたいんだが、
例のHelloWorldのサンプルで、
HelloWorldを継承したクラスでprintouts()をオーバーライドして
その中からHelloWorldのprintouts()を呼び出した場合、
before(): printouts()やafter(): printouts()は、
いつ呼ばれるんだ?
継承したクラスのprintouts()呼び出しの前後にも呼び出されるのか?
それともその中から呼び出されたHelloWorldのprintouts()
の前後にだけ呼び出されるのか?


44 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:06
rubyもやってるみたいだな。


45 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:22
しっかし、日本の研究者は紹介ばっかりやってないで、
自分でなんかやれっつーの。
ただの翻訳機械かよ


46 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:27
で、自分でやると叩くっと。メモメモ。


47 名前: デフォルトの名無しさん 投稿日: 01/11/06 02:34
海外の連中も自分でなんかやる時には、
かなり攻撃とかされてるぞ。
C++なんかもその一つだ。


48 名前: デフォルトの名無しさん 投稿日: 01/11/06 04:25
C++ はアレだからなぁ…


49 名前: 投稿日: 01/11/06 11:54
>>43
Aspectjを使ったことがないので推測しかできないですが、
スーパークラスのprintouts()の呼び出し前後が正解だと思います。
正確なジョインポイントでの起動が前提になっていると思いますね。
開発中にデバッグ用のトレースを入れて、リリース時にトレースを
はずすようなことが簡単にできそうです。aspectj開発者も、そういう
ところから導入してほしいと言っているようです。

>>45
おっしゃる通り。いわゆる禿同です。


50 名前: 43 投稿日: 01/11/06 13:46
>>49
どちらにせよ初期化処理と終了処理のような事には使えないというわけか。
トレースへの利用は確かにできそうだが他に使い道が思いつかん・・・。


51 名前: デフォルトの名無しさん 投稿日: 01/11/06 14:12
2ちゃんで言語をつくろう!スレッド指向言語”--2”


52 名前: デフォルトの名無しさん 投稿日: 01/11/06 14:33
>>1
>OOPも、満足にやってないうちに、その次が出てきてしまいました。

さしあたり、OOPの拡張と認識しておいて良いと思います。
そもそもOOPを駆逐するような性質のものでは全くないので、
やはり過渡期においては「いいとこ取り」が健全かと思われ。

通常のOOPLでは難しいリファクタリングの延長として
捉えてみるのも良いと思います。
とりあえず、メソッドの本質と関係の薄いコードを
コピペする様な状況を回避するには便利です。

あと、デザパタの実装としてAOPを採用するのは、個人的には
時期尚早と思います。(非常に小規模のチームであれば別ですが。)
AOPの利点としてDPが挙げられていますが、
当分は別々に考えて良いと思います。

# お節介ですが、AOPよりデザパタの方が業界的にも重要かと思われ、
# そちらを優先されてはいかがかと。。。


53 名前: デフォルトの名無しさん 投稿日: 01/11/06 14:35
>>39
>機械的に生成されたコードを全く見なくても済むならイイんだが。

AspectJとJUnit併用している者ですが、
JUnitのメッセージはajc生成コードの方を参照しているので
ちょっと面倒になります。


54 名前: デフォルトの名無しさん 投稿日: 01/11/06 14:45
>>43=>>50
細かいようですが、printouts()はpointcutなので、
「呼び出す」と言った類のものではありません。
1さんの言葉を借りると「トリガー指定」って感じです。(>>42参照)

おそらくprintouts()ではなくてprintMessage()と仰りたかったと思います。
そうだとしてお答しますが、オーバーライドしたprintMessage()においても、
before、afterの実行は一度ずつです。

# 念のため言っておくと、before、afterも勝手に実行されます。
# プログラマが「呼び出す」必要はありません
# HelloWorld派生クラスの各printMessage()実装に対して、
# ajcが自動的にbeforeとafterを実行するコードを付加してくれます。

>どちらにせよ初期化処理と終了処理のような事には使えないというわけか。

具体的にどのような処理なのかにもよりますが、
初期化/終了にも使えるのでは?

#ただし、AspectJの場合C++のデストラクタのような
#タイミングは無理ですけど。あたりまえですね。


55 名前: 投稿日: 01/11/06 14:52
>>53
JUnit使ってますか。結構使えるって聞いてるけど、実感としてどうですか?


56 名前: 投稿日: 01/11/06 15:06
>>52
デザパタですか。う〜ん、一人で隅でごりごり書いているような人間
にはどうなんですか?ま、とにかく私のの要求はシンプルで、ただ
1つ「楽したい」だけですね。だからつけはずしの出来るトレース
機能なんてすごく魅力あるんですね。


57 名前: 投稿日: 01/11/06 15:08
失礼しました。sageで進行中なのを失念してました。


58 名前: デフォルトの名無しさん 投稿日: 01/11/06 15:12
デザパタは楽で楽しいYO!>>56

クラスやメソッドを書くのは塗り絵の枠を書くみたいで精神的に楽。
インターフェースの変更も、中身の修正も閉じてるから楽。


59 名前: デフォルトの名無しさん 投稿日: 01/11/06 15:27
このスレの最初で、クラスライブラリ使ってるってそれでOOのつもりかってのが
あったけれど、それでも最初の一歩としてはいいんじゃないですかね。

システム標準の、例えばStringクラスとかを使いこなしていけば、汎用性のある
良いクラスとは何を対象にどのように作れば良いか判ってくると思うのだ。

C++の初心者が陥りがちな、関数を取り合えずメソッドにしてみました、
みたいなプログラムよりOOコンポーネントを使いこなした
構造化プログラミングレベルのコーディングの方が優れてると思うのだが。


60 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:19
>クラスライブラリ使ってるってそれでOOのつもりかってのが

これ書いたのは学生だから放置で良いYO!
自分がその次(この場合オブジェクトベースOOP)を知ってることを誇示したいだけ。


61 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:24
>>59
>>4はただの煽り。メール欄をみてみそ。


62 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:45
アスペクトって何?


63 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:47
as・pect
n. 一側面, 様相; 光景; 顔つき;
【文法】 (動詞の)相; 方向, 向き;
【占星】 星位.


64 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:51
側面指向

うーん。あんまカコヨクナイ


65 名前: デフォルトの名無しさん 投稿日: 01/11/06 16:52
何か流行りそうにないな。
OOPを補完するだけみたいな感じだし。


66 名前: デフォルトの名無しさん 投稿日: 01/11/06 17:20
オブジェクトはカコイイけど、アスペクトてアスベストみたいだもんNE!
http://www.ag.wakwak.com/~hepafil/


67 名前: デフォルトの名無しさん 投稿日: 01/11/06 17:30
日本人って舶来モンに弱いよな、21世紀なのに未だに。

オブジェクト指向なんか、流行り始めた頃は
よく分かってもいないくせにマンセーな奴ばかりで、
ちょっとでも疑問を差し挟めば叩かれまくった。

ちゃんと実体が理解され始めてから今度は
継承に疑問を差し挟んだら叩かれまくった。
今じゃ継承ってあんまり使わん方がいいって感じだもんね。


68 名前: 43 投稿日: 01/11/06 18:06
>>54
before()でファイルを開いてafter()で閉じるなんてことはできないな。


69 名前: 投稿日: 01/11/06 18:55
>>58
そうなんですかぁ。ちらっとデザパタのスレ読みましたけど、なんか勉強量が多そう
ですね。E.Gammaって名前よく出てきますね。昔ACMのOOPSLAに一度行った時に講演
聞きました(ET++に関して)。スェーデンだかスイスだかフィンランドだかの寒い
とこの人ですね。ま、冷やかしで一回行ったきりなんですが、90年ごろか。長髪で
いい意味でのハッカーぽいかっこいい人でしたね。ヨーロッパ人はOOが好きですね。


70 名前: 53 投稿日: 01/11/06 18:59
>>55
>JUnit使ってますか。結構使えるって聞いてるけど、実感としてどうですか?

1年前にRMIと組み合わせてServlet用のユニット作って以来、愛用してます。
すごく良くできてます。っていうか、さすが美しいです。

ただし、大人数のプロジェクトに導入するのは慎重にした方が良いかも。
VB厨かき集めて頭数合わせたようなプロジェクトだったらお勧めしません。
最低限のOOPスキル持ってない人には、やっぱテストコード書くのも無理。
(もちろんレベル高いVB使いなら話は別ですが。)

あと人海戦術しか知らんCOBOLERくずれが実権握ってるプロジェクトでも
用心されたし。
「全てのメソッドに条件網羅でテストコード書け!」とか
言い出しかねないんで、ヤブ蛇が懸念されます。

まあ、お一人で組んでらっしゃるそうなので、杞憂ですね。
(うらやましい…)
ってことでお勧めです。
「楽」できますよ。


71 名前: 52 投稿日: 01/11/06 19:11
>>56
>>58さんが良い事言いました。
「楽」で、尚且つ「楽しい」です。(と私も思いました。)
GoFの本、読まれましたか?
ある程度OOPLでの開発経験があれば面白いですよ。
寝転んでヒマ潰しに読むくらいのスタンスでもそれなりに有益だと思います。
入り口の段階では、とりあえずOOA/OODの知識はそれほど必要ないです。
後になってリファクタリングなんかとの関連もだんだん分ってきます。
学習初期に陥りやすいのは、フレームワークとの混同などでしょうか。
スレ違いですね。この辺にしときます。

>>52で書いたことと逆になっちゃいますが、
お一人で組んでるのであれば、AOPLでデザパタを実装するのも
アリかと思います。
もちろん、ある程度融通の効く開発でなければ危険ですが。

まあ、備えあれば憂いなしってことでAO、DP共にお勧めします。


72 名前: 54 投稿日: 01/11/06 20:37
>>68
こんな寛治?
---------------- HelloWorld.java ----------------
package ajtest.helloworld2;
import java.io.*;

class HelloWorld {
 PrintWriter pw;
 void printMessage() {
  pw.println("Hello world!");
 }
 public static void main(String[] args) {
  new HelloWorld().printMessage();
 }
}

---------------- Trace.java ----------------
package ajtest.helloworld2;
import java.io.*;

aspect Trace {
 pointcut printouts(HelloWorld hw):
  instanceof(hw) && receptions(void printMessage());

 before(HelloWorld hw): printouts(hw) {
  try {
   hw.pw = new PrintWriter(new FileWriter("temp.txt"));
  } catch (IOException ioExcp) {}
 }
 after(HelloWorld hw): printouts(hw) {
  hw.pw.flush();
  hw.pw.close();
 }
}

--------------------------------------------
血がってます?(だったらスマソ。)


73 名前: 68 投稿日: 01/11/06 22:41
>>72
そうそう、それで(Javaはあんまり詳しくないんだが)

class GoodbyWorld extends HelloWorod {
void printMessage() {
super.printMessage();
pw.println("Goodby world!"); //←こういうのには使えないって事?
 }
}


74 名前: 72 投稿日: 01/11/06 23:26
>>73
使えるっす。
この場合、"Hello…"の前後と"Goodby…"の前後で2回ずつ開閉します。
(無駄な気もしますが…)
さっき確認したので信用してね。


75 名前: デフォルトの名無しさん 投稿日: 01/11/07 01:21
>日本人って舶来モンに弱いよな、21世紀なのに未だに。
コンピュータに関しては英語圏が中心だからしょうがないよ。
日本語で論文書いても日本人しか cite しない。
cite してもらうには IEEE や ISO/IEC などに英語で書かないとだめ。
理論を盛り上げるには多くの研究者を巻き込まないといけないので、
もっとも研究が盛んなアメリカでやらないと見向きもされない。
少なくとも向こうに共同研究者がいないと話にならない。

W3C に慶応大学の名があっても日本語のページはないし、
日本語の Technical Report 提出されないしねえ。
(「日本語」を「英語以外」に置き換えても可だね)


76 名前: 73 投稿日: 01/11/07 02:15
>>74
73の例の GoodbyWorld.printMessage() を呼び出した時

before(GoodbyWorld hw): printouts(hw) -> 開く
before(HelloWorld hw): printouts(hw) -> また開く?
HelloWorld.printMessage()
after(HelloWorld hw): printouts(hw) -> 閉じる
GoodbyWorld.printMessage() // これは可能?
after(GoodbyWorld hw): printouts(hw) -> また閉じる?

こうなるって事か?
カウンターを使って開いた回数を数えていれば問題なさそうだが、
すべての場合で使えるとは限らないような気がするなぁ・・・


77 名前: デフォルトの名無しさん 投稿日: 01/11/07 03:17
>>29>>32は、まだ読んでないけど
AOPはデザパタで言うところのVisitorパターン?


78 名前: デフォルトの名無しさん 投稿日: 01/11/07 03:44
メッソド実行や参照ごとにイベントが発生してるのと同じようなイメージ?


79 名前: 74 投稿日: 01/11/07 07:12
>>76
トホホ。。。
テストしたときのmain()がご質問の趣旨と血がってた。
↓正しくはこう。

before     ←ファイル開く
Hello world!  ←基底クラスのメソッド
Good-by world! ←派生で追加した分
after      ←ファイル閉じる

'super.printMessage();'
の前後のbefore/after実行はありません。無駄なく一度ずつ呼ばれます。
(詳しいことはajc生成ソースを見てね。暇な時にでも。)
低能技術者は俺です。
腹かっさばいて逝って来まーっす!


80 名前: デフォルトの名無しさん 投稿日: 01/11/07 11:46
>>78
あとconstructorとかcatchまわりも指定できますね。(pointcut)
このpointcutごとの挙動を定義するのがadviceらしいです。


81 名前: デフォルトの名無しさん 投稿日: 01/11/07 13:53
>>77
GoF本のVisitorパターンみると、「目的」の記述に
"クラスに変更を加えずに、新しいオペレーションを加える。"
という一文があるんで一見当てはまりそうだけど、違う気がする。

オペレーションの追加がありそうな部分を見抜いて、予め「仕掛け」を
作っておくのが多くのパターンに共通するやり方で、それらうち
二重に折り返した多態を使うのがVisitorパターンではないだろか…

少なくともこのスレで挙げられた例には、「仕掛け」も「多態」
も見あたらない。aspect側から一方的にロジックを追加している。


82 名前: デフォルトの名無しさん 投稿日: 01/11/07 21:02
C#はAttribute?とかいうのを使ってAOPみたいなことができるそうですが、
どうなんでしょう?


83 名前: デフォルトの名無しさん 投稿日: 01/11/07 21:23
>>82
名無しさん#さんがサンプル作ってるよ。
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=12
http://do.sakura.ne.jp/~junkroom/cgi-bin/megabbs/readres.cgi?bo=lounge&vi=1003826049&res=13


84 名前: デフォルトの名無しさん 投稿日: 01/11/07 22:21
lispで自動化
仕組みを作のが面倒臭いが。


85 名前: デフォルトの名無しさん 投稿日: 01/11/07 23:34
>>81
なるほど、目的は似てるけど実装方法がずいぶん違うようだ
Visitorは
1.オペレーションの追加を予測し、visitorを受け入れる仕掛けを
 前もって、用意しなければいけない
2.オペレーションが追加される側のオブジェクト構成が変化すると、
 visitorも変化させなければならない
という欠点があるからねぇ


86 名前: デフォルトの名無しさん 投稿日: 01/11/08 16:13
>>83
面白かった。ありがとね。
AspectJと比べるとかなり面倒なソースだけど、
素のC#で使えるのは良いですね。
もしかして、この辺りからアスペクト指向も普及してくんですかね。


87 名前: デフォルトの名無しさん 投稿日: 01/11/08 16:18
AO関連のパターンって、どっかで発表されてないかな?
AOのアナパタ、デザパタ、イディオムとか。
あと、AOの問題をOO的に解決するパターンとか。


88 名前: デフォルトの名無しさん 投稿日: 01/11/08 21:46
>>86
聞きたいんだけど、AspectJってコンテキスト(JoinPoint)にこちらから
情報を追加することはできるのかな?WebでAPIリスト見た感じ、getterしか
ないからできなさそうなんだけど。

で、C#のContextAttributeでは、コンテキスト独自のプロパティを
管理できるんだよね。単に実行前後で呼び出されるってだけじゃなくてさ。
だからAspectJに比べるとコード量がぜんぜん違うんだと思うんだけど。


89 名前: 名無しさん♯ 投稿日: 01/11/08 22:47
>>88
ContextAttributeは、本来Remotingで使うものよん。
AOPを意図した機能とは言いがたいかも。

処理の前後でインターセプションができるからこんなお遊びもできるよ、
という程度で作ったのが >>83 のサンプルね。


90 名前: デフォルトの名無しさん 投稿日: 01/11/09 10:34
>>88
おっしゃる通り、JoinPointはread onlyです。
ただしJoinPointに相当するのはIMessageSinkだと思います。
コンテキストに近いのはどちらかと言うとaspectの方ではと思います。
(どちらにしても、少しこじ付け気味ですが。)

だとするとintroductionってのを使えば、ご要望の処理は可能です。

例えば>>83の例をもとにして言うと、DepositやWithdrawの
実行に通し番号をつけてBankAccountのインスタンス毎に管理するような
処理を、BankAccountの変更無しに追加できます。

>>89
C#って食わず嫌いだったけど、結構楽しそうだね。


91 名前: デフォルトの名無しさん 投稿日: 01/11/09 15:22
>>89
あー、♯さん、やっぱり自分で書いてておわかりでなかったんですね。
Remotingで使うものですよ、もちろん。でもRemotingのRemoteっていうのは
Context外って意味なんですよ、.NET Frameworkでは。で、それは実は
.NET Framework new!ではなくて、MSはMTSのときにすでに実装しているんです。
ですから、コンテキスト属性は、AOPを意図したもの「です」。MSはCOM+の
ときから、Aspectって言葉使ってましたよ。
↑だからえらいなんて言いたいわけじゃないです。AOPを意識しているって
ことを説明したいだけ。

>>90
なるほどなるほど。AspectJ、なかなかやりますね。aspectj.org、もうちょっと
漁ってみよう。
ContextAttributeって書いちゃったからだめだったんですね。あそこは
コンテキスト属性って書けばよかった。


92 名前: デフォルトの名無しさん 投稿日: 01/11/09 17:55
>>13
>>14
++をたてに並べるからC#なんだってさ。
++
音楽で少し高いって意味もあるらしいけど。


93 名前: デフォルトの名無しさん 投稿日: 01/11/09 18:00
++を斜めに重ねて並べるってかんじだが
Visual C++のことを、出る前にC#と呼んでたのが懐かしい。


94 名前: デフォルトの名無しさん 投稿日: 01/11/09 18:13
>>1
薄っぺらなトンデモ系っぽい本だが
Agent Oriented ProgrammingがOOPの次に来るとか
書いてあるやつを持ってる。
http://www.amazon.co.jp/exec/obidos/ASIN/4797305754/ref%3Db%5Fbr%5Fl%5F8%5F2/250-1168776-9396231

Aspectとはぜんぜん違って、AIとか遺伝的アルゴリズムとか
そっち系みたいな感じだったけどね。
個人的にはAspectの方に共感を覚えるかな。

>>93
詳細をキボンヌ。


95 名前: デフォルトの名無しさん 投稿日: 01/11/09 18:19
でも、Agent Oriented Programming も結構前からあるよね。

> AIとか遺伝的アルゴリズムとか

だったっけ?


96 名前: デフォルトの名無しさん 投稿日: 01/11/09 18:25
>>94
エージェント指向はどちらかというとアーキテクチャレベルの話だからねえ。
自律的(って何?)なプログラムをエージェントと呼び、
人間に代わってエージェントプログラムが色々面倒な作業をやってくれるといいなあ、という感じ。

実装で有名なのはこれくらいかな。
plangent , beegent - 東芝
aglet - IBM


97 名前: 名無しさん♯ 投稿日: 01/11/09 19:34
>>91
> でもRemotingのRemoteっていうのは
> Context外って意味なんですよ、.NET Frameworkでは。

それは知りませんでした。ありがとうございます。
マシン境界としか考えてなかった...。

漏れがふだん見ているMLでも、1年以上も前から議論になっていた...。(;´Д`)

 http://discuss.develop.com/archives/wa.exe?A2=ind0007&L=dotnet&F=&S=&P=9965


98 名前: デフォルトの名無しさん 投稿日: 01/11/10 02:24
自律性とは「自分のことは自分でやる」ってこと。

この自律性を、三角形が自分自身を描画したり、台帳と伝票が
語り合ってしまう程まで過激に取り込んだのがオブジェクト指向。

…かな?


99 名前: デフォルトの名無しさん 投稿日: 01/11/10 15:04
>>96
現在、Bee-gentダウンロード中。
plangentはキャラクターが可愛くないからダメだ。
agletは、なんか今alphaworksつながらないんで、また今度にする。


100 名前: デフォルトの名無しさん 投稿日: 01/11/10 17:38
>>96
そんな事は関係無くトレンド転換するのがソフト業界。


101 名前: デフォルトの名無しさん 投稿日: 01/11/10 18:07
↓こんなの見つけた。
http://www.fipa.org/

'The Foundation for Intelligent Physical Agents'
だってさ。エージェント界のOMGみたいなもんかな。

って、エージェント技術のスレってなかったっけ?


102 名前: デフォルトの名無しさん 投稿日: 01/11/10 18:10
>>100
一言居士


103 名前: デフォルトの名無しさん 投稿日: 01/11/10 23:14
OOP(ウープ)
AOP(???)


104 名前: デフォルトの名無しさん 投稿日: 01/11/11 11:15
UMLのアスペクト指向拡張の論文見つけた。
再利用可能なアスペクトとか、
crosscutting concernsとAspectJ・HyperJをマップするやりかたとか。

ttp://www.dsg.cs.tcd.ie/~sclarke/ThemeUML/


105 名前: 投稿日: 01/11/11 18:49
>>94
どうも有り難うございます。エージェントに関する話題ってちょっと昔に流行って
ましたよね。最近あまり聞かなくなってたというか。この世界も結構流行とか
ありますからね。

とりあえず、私はaspectjを使ってみようと思っています。アスペクト指向はすぐに
広まりそうな感じします。


106 名前: デフォルトの名無しさん 投稿日: 01/11/11 19:30
これ以上珍語増やさないでくれ!


107 名前: デフォルトの名無しさん 投稿日: 01/11/11 19:31
アスペクト出版


108 名前: デフォルトの名無しさん 投稿日: 01/11/11 21:38
アスベストかと思った。ゲホンゴホン。


109 名前: デフォルトの名無しさん 投稿日: 01/11/12 03:11
AOPに関する論文はあるみたいだけど、
AOPのみで書籍化されたものってあるの?


110 名前: デフォルトの名無しさん 投稿日: 01/11/14 02:24
あーこれいいな、C++でも織り込み用のプリコンパイラ作れば、
AOP風に組めるかも。作る・・か?
objectに対して、aspectをブチブチ差し込む辺りが気持ちよさそう。


111 名前: デフォルトの名無しさん 投稿日: 01/11/14 02:48
ここにオブジェクトである 犬さんと 猫さんがいます。
犬さんと猫さんは、それぞれ独立している生き「物」です。

犬さんの中には猫さんを含んでいないし、
猫さんのなかにも犬さんは含んでいません。

また、犬さんはネコ科ではないし、猫さんもイヌ科ではありません。

しかし、犬さんと猫さんは仲良しで、
犬さんが1回鳴く毎に、猫さんは1回鳴きます。

一見、猫さんと犬さんはそれぞれ独立しているように見えますが、
何らかの関係も持っているようにみえます。

この状態をあらわす場合、適切であるのが、様相関係です。

※猫さんは状態によっては必ずしも鳴き返さなくても良いような場合も
あるかもしれません。


112 名前: デフォルトの名無しさん 投稿日: 01/11/14 23:55
他言語の拡張としてのAOPLじゃなくて、
ピュア(?)なAOPLってあるの?


113 名前: デフォルトの名無しさん 投稿日: 01/11/15 04:28
エサが足りなくなって共食いするのはどう?>>111
ないんじゃない?>>112


114 名前: 投稿日: 01/11/15 12:10
aspectjのサンプルのトレースaspectを試してみましたが、とてもいいですね。
jbuilderにaspectj IDE拡張を入れればビルドもらくらくだし。なんか、いままで
やりたくてもできなかったことが出来るという感じです。

クロスカットの方法もバリエーションが豊富で、クラス全体…そのクラスのメソッドコール
すべてとか一発でセットできますね。すごいです。ほんとお勧め。

>>109
javaプログラマーならaspectjのドキュメントを読めばよろしいかと。書籍はまだ
ないと思いますね。まだ、一般には認知されてないようです。
日経が取り上げるまではまだしばらくかかりそうです(藁


115 名前: デフォルトの名無しさん 投稿日: 01/11/15 21:01
>>114=>>1
言語仕様も面白いけど、使い回しがいいのもポイントですよね。
ドキュメント類も分りやすいし。
ちなみにSOPのHyperJも持ってるけど、マニュアル読んだだけで
萎えちゃって、全然使ってません。

# JBuilderっすか・・・。いいっすね。
# 私の自宅でのJava開発環境はJDK+秀丸+DOS窓です。
# うらやましっす。


116 名前: 投稿日: 01/11/16 17:58
>>115
マニュアルはたしかにわかりやすく書いてありますね。だからすぐに使い始められる。
あとはJUnitを征服すれば、とりあえず今回の新技術導入は終わり。
jbuilderも今回新規導入したものです。私もいままではは、jdk+mule+DOS窓で
ぐりぐり書いてました。JAVA APIマニュアルを見ながらプログラム書くのは
もう疲れてしまいました。jbuilderいいです。もっと早く使えばよかったと反省しきり。


117 名前: デフォルトの名無しさん 投稿日: 01/12/17 01:38
age


118 名前: デフォルトの名無しさん 投稿日: 01/12/28 19:15
sageでも書き込むといい事ある?


119 名前: デフォルトの名無しさん 投稿日: 01/12/29 23:03
dat落ちさけれるらしいです.
良スレage してもいい?


120 名前: デフォルトの名無しさん 投稿日: 02/01/07 02:44
ネタ切れ?


121 名前: デフォルトの名無しさん 投稿日: 02/01/07 10:01
ネタはあるがチョト準備中sage


122 名前: 1 投稿日: 02/01/07 15:15
このスレのこと忘れてた。本年も宜しくお願いします。

去年aspectjを使ってトレースクラスを入れてみましたがとてもいいとおもいま
した。今年はもっと本格的に使いたいと思っています。


123 名前: デフォルトの名無しさん 投稿日: 02/01/07 16:42
どうでもいいけど、そろそろ折り返して
短くコードが書けるようにならんかね。


124 名前: デフォルトの名無しさん 投稿日: 02/01/30 04:23
思い出したように age


125 名前: デフォルトの名無しさん 投稿日: 02/01/30 10:42
OOPは「ウープ」と発音するそうですが、
AOPは「アオップ」ですか?それとも「アオープ」ですか?


126 名前: Seisei_Yamaguchi 投稿日: 02/02/11 03:02
>>35

>>32を見ると ,

>(例えば、オブジェクト指向プログラミングのような)モジュール型 のプログラミングでは、
:
>コンパイラの最適化の効果を無視 すれば、ソースにおいて連続するコードは、そのまま計算機上で連続し たコードとなります。
:
>アスペクト指向プ ログラミングを用いれ ば、ソースコードからコンパイルされたコードへの直接的 なマッピングという制約を受けなくなります。

となっていて 更に進んだモノに思えます .



127 名前: デフォルトの名無しさん 投稿日: 02/02/11 04:14



128 名前: デフォルトの名無しさん 投稿日: 02/02/11 07:02
MOP=マムコ指向ペニス



129 名前: デフォルトの名無しさん 投稿日: 02/02/11 12:02
> OOPは「ウープ」と発音するそうですが、

はつみみです


130 名前: デフォルトの名無しさん 投稿日: 02/02/20 00:35
http://msdn.microsoft.com/msdnmag/issues/02/03/AOP/AOP.asp


131 名前: デフォルトの名無しさん 投稿日: 02/02/20 01:12
さんくすです
これからよみます


132 名前: 仕様書無しさん 投稿日: 02/02/20 02:00
>>129
アラン・ケイとかがでてるC++の紹介ビデオで
確かに「ウープ」っていってたよ。



133 名前: デフォルトの名無しさん 投稿日: 02/02/20 22:30
>>125
「ク-リトル-リトル」


134 名前: デフォルトの名無しさん 投稿日: 02/04/09 20:29
まだ落ちてなかったのを幸いに維持カキコ


135 名前: _ 投稿日: 02/04/10 22:32
>>65
それはOOPも同じじゃん。
構造化プログラミングを補完するだけ。


136 名前: デフォルトの名無しさん 投稿日: 02/04/30 20:49
維持させて


137 名前: デフォルトの名無しさん 投稿日: 02/05/18 18:52
将来のために保守


138 名前: デフォルトの名無しさん 投稿日: 02/05/23 00:18
EclipseにAspectJのプラグインが出るということで保守


139 名前: デフォルトの名無しさん 投稿日: 02/06/20 11:31
様相指向OSなんてのが出てる。
http://www.nexwave-solutions.com

ところで、汎用言語を無節操に拡張しても複雑になるだけなので、
実装ターゲット別に専用言語があったほうがよさげ。
待ち行列処理やマルチスレッド等のプログラミングが容易な電話交換機用のCHILL、
(HDLを知らないCプログラマにも馴染み易い)ハードのシステム設計用のSpecC
やASIC設計用のSystemC
各コンピュータメーカ社内には、一般公開されてない専用CPU用の専用言語がごろごろあるけど。




140 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:08
良スレageるだけではなんなんで、

うい。
http://www-6.ibm.com/jp/developerworks/java/020405/j_j-aspectj.html


141 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:25
>>139
どの辺に技術概説が書かれてるの?<様相指向OS
ざっと眺めたけどふっつーの宣伝文句ばっかり。


142 名前: デフォルトの名無しさん 投稿日: 02/06/20 17:34
Aspect Oriented Programming Using Aspectj
http://www.amazon.co.jp/exec/obidos/ASIN/0672324105/ref=sr_aps_d_1_1/249-7964749-6873932
こんなのがある。洋書ですね。ていうかまだ発売してないし。


143 名前: _ 投稿日: 02/06/20 18:31
JAVA WORLDでも特集あったし、いよいよブレイク?
マクロの無いJavaではトレース用に使うだけでも凄く便利になるので試す価値有り。


144 名前: デフォルトの名無しさん 投稿日: 02/06/22 17:52
あげ



145 名前: デフォルトの名無しさん 投稿日: 02/07/08 14:37
age



2ちゃんねるは、ここのサーバを使ってるです。。。