Аспектно-ориентированное программирование. Xerox PARC, IBM и Microsoft готовят для индустрии ПО новую парадигму программирования. Она называется аспектно-ориентированное программирование (АОП, aspect-oriented programming) и призвана прийти на смену объектно-ориентированному (ООП, object-oriented programming) и компонентному (component-based programming) программированию. По оценкам специалистов, около 70% времени в проектах тратится на сопровождение и внесение изменений в готовый программный код. Вот почему столь важной в ближайшей перспективе становится роль АОП и подобных трансформационных подходов.
Аспект (ключевое понятие новой парадигмы) представляет собой языковую концепцию, схожую с классом, но только более высокого уровня абстракции. Аспекты могут затрагивать многие классы и используют так называемые точки вставки (insertion points) для реализации регулярных действий (например, связанных с безопасностью, обработкой ошибок и т. п.), которые обычно «размазаны» по всему тексту программы.
АОП тесно связано с ментальным программированием (intentional programming), концепции которого изложены в работе Чарльза Саймони «The Death of Computer Languages, The Birth of Intentional Programming» (Microsoft Research, 1995, http://research.microsoft.com/pubs/view.aspx?tr_id=4). Другой близкой идеологией является так называемое порождающее, или трансформационное, программирование (generative programming, transformational programming).
АОП можно поддерживать в рамках уже существующих языков. Так, в частности, знаменитый исследовательский центр Xerox PARC разработал систему AspectJ (www.aspectj.org), поддерживающую АОП в рамках языка Java. В ноябре 2002 г. вышел новый релиз AspectJ 1.1. Этот пакет встраивается в такие системы разработки, как Eclipse, Sun ONE Studio (http://forte.sun.com/ffj/articles/aspectJ.html) и Borland JBuilder. Другой исследовательский центр — IBM Research — выпустил альфа-версию HyperJ (http://www.alphaworks.ibm.com/tech/hyperj) и готовит к марту 2003 г. выпуск системы Cosmos (http://www.research.ibm.com/AEM/mdsoc.html) с гипертекстовой поддержкой требований и диаграмм. Cosmos является развитием MDSOC, которая, в свою очередь, опирается на идеи субъектно-ориентированного программирования (http://www.research.ibm.com/sop/). Помимо Java новая идеология поддерживается и в других языках, таких как Си, Си++, Squeak/Smalltalk, Perl, Python, Ruby (http://aosd.net/tools.html). Пока интерес к новой парадигме проявляют несколько сот экспертов из General Electric, Hewlett-Packard, Siemens, Motorola, Oracle и Sony. Очевидно, что их число будет расти.
В сентябре 2002 г. основные идеологи нового программирования — Грегор Кишалес (Xerox PARC) и Чарльз Саймони, бывший ведущий архитектор Microsoft (см. «Тайны Microsoft», «Мир ПК», № 7/02, с. 52), — ушли из своих компаний и основали корпорацию Intentional Software (http://intentsoft.com/). Важно отметить, что Саймони в течение нескольких лет возглавлял в Microsoft Research группу из 10 человек, которая занималась изучением ментального программирования. Более того, Microsoft имеет уже около дюжины патентов, охраняющих ее интеллектуальную собственность в данной области.