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)

DL: http://www.cc.gatech.edu/~yannis/