Simulating Modern Language Models with Generative and Aspect-Oriented Approach
ウソ臭いタイトルの英語はさておき、、、
前の日記でも書いたけど(今試し中だけど)ArchJava の特徴(Connector とか Port の抽象性)なんかを、Annotation (or Attribute or @) とソースコード(特に AspectJのコード)を生成するアプローチを用いることで、シミュレートできるかもしれない気がする、ということで試し中。
同様にして、Traits なんかもシミュレートできるかもしれない、と思い中(試してみる予定)。すでに、以前、AspectJ で単体で Traits っぽいことをできないかは、試した:
AspectJ Tips: Traits
http://www.ncfreak.com/asato/doc/aspectj-traits.html
二つ(ArchJava と Traits)をシミュレートすると考えたときに共通なのは
ということ。
さらに、実装のときに問題となるのは、どうやって楽にソースコードを生成するのか、ということ。選択肢は
- Java でプログラミング的にソースを生成する
- 何らかのテンプレートのアプローチを用いる
一番目のアプローチは、もし、生成するコードが Java なのであれば、JaxMe JavaSource framework なんかが便利かもしれない。しかし、もし、Java でない(たとえば AspectJ)のであれば、それは、なかなかめんどくさい。
二番目のアプローチでは、どのテンプレートを用いるのかが、問題となる(どれが一番適しているのがわからないので)。僕が知っている限りでは、3つ
今は、Groovy で実装しようと思っているけど(ちょっと実装してみたけど)、Velocity なんかも使いかっても試す予定。
疑問:
関連:
Raul Silaghi.
Better Generative Programming with Generic Aspects.
2nd OOPSLA Workshop on Generative Techniques in the context of Model Driven Architecture. (2003)
DL: http://www.softmetaware.com/oopsla2003/mda-workshop.html
DL: http://lgl.epfl.ch/members/silaghi/publications.html
Eli Tilevich, Stephan Urbanski, Yannis Smaragdakis and Marc Fleury.
Aspectizing Server-Side Distribution.
Automated Software Engineering 2003.(2003)