Я читав про бібліотеки, які люди писали для таких мов, як Java та C #, які використовують байтове плетіння коду, щоб виконувати такі дії, як перехоплення функцій викликів, вставлення коду журналу тощо. Я також читав макроси Lisp / Clojure у намагання краще зрозуміти, як їх використовувати. Чим більше я читаю про макроси, тим більше здається, що вони забезпечують такий же функціонал, як і бібліотеки байтового плетіння коду. Під функціоналом я маю на увазі можливість маніпулювати кодом під час компіляції.
Прикладами бібліотек, які я розглядав, були AspectJ, PostSharp та Cecil.
Чи є щось, що можна зробити з одним, а не з іншим? Вони насправді вирішують одні і ті ж проблеми чи я порівнюю яблука та апельсини?