Аспектно-ориентированное программирование

Аспектно-ориентированное программирование (АОП) – относительно новая парадигма программирования, появившаяся в начале этого тысячелетия. Пройдя по ссылке и прочитав краткий обзор на эту тему, можно долго думать и гадать, а что же такое АОП, и какие цели преследовали те самые сотрудники Xerox, которые ее разрабатывали.

Обратите внимание, как заметно отличается объем статьи в Википедии, кратко повествующей об АОП от объема статьи про объектно-ориентированное программирование (ООП), концепции которого известны практически всем разработчикам программного обеспечения? Ну да, АОП, судя по тексту, призвано упростить процесс разделения целевой и второстепенной функциональности, которую здесь называют сквозной. Но ведь одной из главных целей создания всех парадигм программирование, и ООП в том числе, является абстрагирование программиста от специфики общения с вычислительной техникой и концентрация его аналитических усилий на целевой функциональности создаваемой им программы. Т.е. на первый взгляд ничего нового.

С ООП ведь все всем понятно: есть реальный мир, есть объекты реального мира, есть их функциональные и информационные аспекты. С какой стати в общении с вычислительной машиной мы должны обходиться банальными последовательностями операторов, хоть и сгруппированных в процедуры и функции и размещенных в отдельных модулях? Вот и решили ввести в языки программирования понятие объект с его свойствами, методами, инкапсуляцией и т.д.

А там мысль уже было не остановить, и появились наследование, полиморфизм, шаблоны и т.п. Т.е. все логично. А теперь обратимся к АОП. Здесь отнюдь не все так очевидно, но это и понятно, потому как все гениальное уже придумали, и осталось лишь выдумывать модификации того, что имеем, и выдавать их за нечто уникальное и оригинальное. На самом деле я не хочу сказать, что АОП не заслуживает внимания, напротив, в основе этой концепции лежат вполне себе разумные идеи.

Я просто хотел заметить, что все новые идеи на фоне того же ООП уже не выглядят чем-то революционным, и по этой причине их могут незаслуженно обделить вниманием. Примером этому служит весьма скромный объем заметки в Википедии. А ведь есть еще и субъектно-ориентированное программирование… Возможно даже такое, что кто-нибудь, видя аббревиатуру АОП, думает, что это опечатка.