top recent

アスペクト指向プログラミング

関連ページ

プログラミング

目次

  1. アスペクト指向プログラミング...
  2. Class修飾も...
  3. そうか...
  4. アスペクトは誰の後釜なのか?...
  5. RubyでAspect...

アスペクト指向プログラミング

http://www.race.u-tokyo.ac.jp/~yoshimi/AOP/
『 (例えば、オブジェクト指向プログラミングのような)モジュール型 のプログラミングでは、ソースのコードからコンパイルされたコー ドへ単純なマッピングがなされています。コンパイラの最適化の効果を無視 すれば、ソースにおいて連続するコードは、そのまま計算機上で連続し たコードとなります。ソースの一行を変更すると、結果として、バ イナリコードに線形の効果を与えるといえます。アスペクト指向プ ログラミングを用いれば、ソースコードからコンパイルされたコードへの直接的 なマッピングという制約を受けなくなります。アスペクト指向プロ グラムのある一行の変更は、コンパイルされたコードに対して非線 形に効果を与えます。この違いは、非常に強力なプログラミングシ ステムを生み出します。なぜなら、プログラムを通してもつれあっ ているプログラム全体の特性(global program property)は、アス ペクトとして別個に表現され得るからです。 』

アスペクト指向言語、Separation of Concerns 関連研究メモ
『しかし、一般には複数のクラスを横断する形で関連するコードを記述せざるを得ない場合もあります。つまり、現在のオブジェクト指向言語では、 separation of concerns が「できない場合もある」のです。この問題の解決のために最近注目されているのがアスペクト指向言語です。』
『ある「側面(aspect)」に関連するコードは、一般に複数のクラスを横断して存在する。それをひとまとめにして再利用の単位とすべし、という話。』

[[id:1153]] 2002-09-10 08:56:42


Class修飾も

広い意味でAspectなんだなと思います。--SHIMADA

# Method修飾は高階関数・コンビネータなのかも。

[[id:1154]] 2002-09-09 17:21:14


そうか

「クロスカット」がキーワードなのか。
ロールはクロスカットしているけど、クラス修飾はクロスカットしていないですね。

修飾は継承システムの改善の話になるのか。っていうか CLOS では普通なのかも知れないし。

# SHIMADA

[[id:1156]] 2002-09-10 08:50:49


アスペクトは誰の後釜なのか?

でもあんまり「HOGEHOGEはアスペクトだ」と言ってしまうと
クラスもアスペクトだ、関数もアスペクトだ、という域に逝きかねないのでは? -戯

アスペクトは新たな(そして画期的な/使い物になる)切り口であるのは確かだけど、
それが提供するものはあくまで、(従来と比べると)メタな手口であって、
従来の色々なものをそのまま置き換えるもの、という雰囲気ではないと思う
んですが、どうでしょう?

-かといって、「どこのカテゴリにも従来たまたま属していなかったもの」をまとめてアスペクトに放り込むのは、アスペクトを「物置/ゴミ箱」あつかいしてるだけだし…

で、ならば従来の何をならば、アスペクトによって置き換えられるのか?と問えば、
上記の説明文を間に受けると(^^;、それは
「モジュール」
なのではないかなと、予想しときます。
#あくまで予想なのは、未経験なので機微が全然判らないせいです(ぉ

少なくともモジュールは、クラスや関数やMVCや…「ではない」ですよね。
たまたま一致または包含してしまうように実装された(チャチな(^^;)言語は、無いわけじゃないですが。

- オブジェクト指向で「コードの重複部を委譲で除去」や「1クラス1責務」を真面目にやっていると分解しすぎて、もはやオブジェクトとかクラスとかの本来の粒度を下回るものになってしまうからではないか?クラス、オブジェクトというのは、おこがましいのでアスペクトと名付けたのではないかいな?

-粒度じゃなく次元の数の問題だと思います。
--今までは、手続きの構造化という軸や、データの構造化という軸が有ったけど(つまり素直に数えれば2次元)、これにいわばアスペクトの構造化とでもいう軸を今回追加したことになるのでは?
--たぶんそれら3軸は互いに直交なのでしょう。
---出来上がったコードを分析するときは、別々の次元?もの?として扱います。その点は、そのとおりだと思います。でもプログラムを組んでいる最中は、リファクタリングする過程でコードの中身は各次元をウロウロ動き回りますよね?そういう意味では同列として扱わなければならないような気も。どうなのかな?
---ウロウロするときも(それこそリファクタするなら尚のこと)、次元を意識しませんかね?自分が今向いている向きが「どういうカテゴリの方向」なのか…変な日本語だがつまり東西なのか南北なのか上下なのか未来/過去(ぉ)なのかというような…を意識すると思う。
---ある問題を解決するために採る舵の方向は1つとは限らないけど、その時に舵の方向自体は考えるっていうか。1つきりではないということと、区別しないということとは、同じじゃない。

[[id:1155]] 2002-09-24 03:24:11


RubyでAspect

http://www.ruby-lang.org/en/raa-list.rhtml?name=RubyObjectTeams
http://www.ruby-lang.org/en/raa-list.rhtml?name=AspectR

[[id:1281]] 2002-09-24 11:54:07


top recent

HashedWiki version 3 beta
SHIMADA Keiki