AMOPはThe Art of the Metaobject Protocolのこと
2007-01-14


ASAHIネット([URL]のjouwa/salonからホットコーナー([URL] )に転載したものから。
---
[URL]
Rubyの特異メソッドとCLOSのeql specializer
に、穴山さんから、
[URL]
というコメントがありました。
 あ、ほんとだ。おっしゃる通り。AMOPは、
[URL]
Gregor Kiczales, Jim Des Rivieres, Daniel G. Bobrow「The Art of the
Metaobject Protocol」
の略記です。すみません。直します。

 なぜ、A Meta Object Protocolと書いたのかな。数理システムでやってた勉
強会にも行ったことがあるのに。^^;
 単にボケてるだけでしょ。気づいた人は少ないかもしれないけど、お前、
generic functionの訳語を汎関数と書いてただろ。総称関数なのに。汎関数な
ら、高階関数のことだよね。
 仕様は、
[URL]
The Common Lisp Object System MetaObject Protocol
で読めます。
 ただし、繰り返すようですが、これは公式の標準ではありません。ただし、
さらに繰り返すようですが、ほとんどの実装ではこれをサポートしているよう
です。ものによっては、フルサポートではなく一部のサポートのようですが。
 数理システムの黒田さんに、また
[URL]
のようなMOPのセミナーをやらないんですかと、この前のLispセミナー後の懇
親会で訊ねたら、またやりたいですねなどという話だったと思います。おれの
勝手な解釈かもしれませんが。^^;

[URL]
のMeta Object Protocol (MOP)の項をみると

In particular, a MOP has been defined for the Common Lisp Object
System, which is implemented using this particular MOP. Often, when
people refer to "the MOP" as opposed to "a MOP", they are refering to
the CLOS MOP. However, AMOP is short for The Art of the Metaobject
Protocol, which defines "the MOP". See the MOP references.

なんて、ややこしいことが書いてありますね。^^;

 CLOSの設計者の一人であり、前述の「The Art of the Metaobject Protocol」
の著者の一人であるGregor Kiczalesは、のちにXerox PARCで、Aspect
Oriented Programming(AOP)を提唱するようになったんですが、Javaのような
固い言語でやったから、結局、AOPをサポートするようにJavaのコンパイラを
書き直すことになったんですよね。それでそのコンパイラAspectJは、彼のア
イデアをCommon LispからJavaにバックポート(古いバージョンのもの、下位の
ものに移植すること)したものだなんて、Lisp屋が思ったりもしたわけです。
 AspectJについては、
[URL]
[URL]
[URL]
をどうぞ。
 MOPを使ってLispでAOPをやれるようにしたのが、AspectLです。
 AspectLについては、
[URL]
をどうぞ。と思ったら、いま、
[URL]
に移って、
[URL]
にある、Closerというプロジェクトとマージされちゃってますね。
 ぱっと見たところ、Closerは、MOPの実装の差異を吸収する互換レイヤです
ね。これがあると、多くの有名どころのCommon LispでMOPを使ったあれこれが
動くということですね。

 またうたた寝しちゃって、午前1時ごろ起きましたが、もう眠いので、寝ます。^^;

コメント(全0件)
コメントをする


記事を書く
powered by ASAHIネット