アスペクト指向はJavaの進化か?

■何となくひまつぶしに読もうと『Java World』という月刊誌を購入して、JavaとXMLの世界の変化に驚いた。「SimpleTypeFactoryはsimpleTypeを表すインタフェースISimpleTypeの具象クラスの生成を、FacetFactoryはファセットを表すインタフェースIFacetの具象クラスの生成を行います」。これはいったい何語だろうか。前提知識がなければほとんど理解不可能な言語だ。
僕がナイーブな進歩主義者ならJavaの世界の「進歩」と書くところだが、単なる「変化」である。技術者は長く考えれば考えるほど技術領域を細分化・専門化してエントロピーを増大させてしまう。これは惰性的な変化であって、何事かが進歩しているわけでは決してない。その証拠に細分化・専門化の後には統合化・体系化の動きが必ず続く。
Javaの例で言えばJavaが複数の専門分野に細分化していくのは、Javaという生まれて間もないプログラミング言語が世界の多様さに適応していく過程というより、モジュール化に体裁のいい名前を付けているだけではないだろうか。Javaの登場でプログラミング言語が記述しうる世界の複雑さの水準が高まったわけではなく、表現方法がちょっと洗練されたというだけのことだ。
たとえばアスペクト指向を見ればそれがオブジェクト指向の「進歩」ではなく単なる「変化」、悪くすれば「退化」かもしれないということがよく分かる。もともとプログラミングとは対象としての世界を記述する手段であり、世界の客観的な自律性を暗黙の前提として初めて成立する。
ところがアスペクト指向はせっかく作り上げたその「客観的な自律性をもつ世界」という虚構に、人間の主観的な「関心事」を持ち込んで、並立する対象に気まぐれな横串を貫通させてしまう(アスペクト指向プログラミングはサブジェクト[=主体]指向プログラミングとも呼ばれる)。
これはプログラミングの存立基盤そのものを危うくさせる「禁じ手」であり、オブジェクト指向の「退化」ではないのか。それを「オブジェクト指向の欠点を補う新しいパラダイム」と紹介してしまうのだから、情報技術にかかわる技術者が自分自身の依拠する問題領域の境界や前提条件にいかに無自覚かということがわかる。
情報技術者たちは自分たちがちょっと哲学チックな領域に踏み込んでいるという、検討違いな自尊心を捨てるべきだ。情報技術は単なる応用科学なのだから。