Комментарии 10
Я праильно понимаю, что декораторы в питоне это именно оно и есть, аспектное программирование? Или есть разница (кроме скорости реализации, конечно)
Классический подход — скопировать строчку с вызовом логгера в начало каждого метода, а затем провести остаток дня, проклиная бренность бытия и отсутствие метакопипаста.
Самый классический подход это вставить нужный инклюд в начале файла исходников и вызвать printf() где вам угодно и удобно. Если очень приспичит, обернуть его в какой-то дефайн. То есть логирование это системная функция которая должна быть доступна во всех исходниках приложения без ограничений и без всяких танцев с бубном для доступа к этой системной функции.
Не, ну инструмент интересный, спасибо. Вспомнил про PostSharp, который когда-то пользовался, зашел к ним, а оказалось, что Metalama это их детище! ) Тогда понятно, как получился такой (судя по всему) хороший продукт.
Metalamaработает на этапе компиляции, генерируя C#-код, который можно увидеть, отладить и понять без степени в компьютерной магии.
А насколько близко к "классическому подходу" получается сгенерированный код? И как его найти? Если, скажем, я нахожусь в исходном методе с аспектным атрибутом.
Да, я хотел упомянуть PostSharp, но в суете забылось.
А насколько близко к "классическому подходу" получается сгенерированный код? И как его найти?
Вот официальная документация, вот где найти, но скажу честно: мне не потребовалось смотреть на сгенерированный код ни разу (то ли в силу того, что я в метапрограммировании собаку съел в нескольких языках, то ли я сильно в дебри не залезал).
Спасибо! Как раз в тему.
Странно, что + статье не поставить.
Созрели вопросы, которые отчасти являются и утверждениями:
1. Правильно ли я понимаю, что АОП можно рассматривать, как некоторую попытку систематизации метапрограммирования? То есть, изначальные негигиенические макросы LISP — это некоторый ну совершенный дикий Северо-Запад. Но есть набор довольно шаблонных применений макросов: Сериализация (механизмы deriving), Cross-cutting concerns (АОП), DSL/eDSL. И, наверное, есть что-то ещё, что я не знаю (кстати, что?). Так?
2. Как всякие пишут в Википедиях, FP сильно ограничивает поле деятельности AOП. Вернее даже не FP, а просто современные языки, в которых есть хотя бы функции высоких порядков. И, скажем, в том же Эликсире подход АОП, реализованный на местных макросах, будет уже не столь полезен. Так? Вообще, в Элексире с вашей точки зрения, где лучше АОП на макросах (см. ваша же Телеметрия — это же и есть АОП), нежели стандартные механизмы языка?
3. Правильно ли я понимаю, что по вашему опыту использования АОП, приемущества в: серьёзной интроспекции функций (вывод в телеметрию локальных переменных, указанных в АОП аннотации, как пример), глобальном действии аннотаций (log на модуль целиком)? А ещё что?

Metalama: праовца, аспекты приносящая