Eu tenho lido sobre as bibliotecas que as pessoas escreveram para linguagens como Java e C # que utilizam tecelagem de código de bytes para fazer coisas como interceptar chamadas de função, inserir código de log etc. etc. Também estive lendo nas macros Lisp / Clojure tente entender melhor como utilizá-los. Quanto mais eu leio sobre macros, mais elas parecem oferecer o mesmo tipo de funcionalidade que as bibliotecas de tecelagem de código de bytes. Por funcionalidade, quero dizer a capacidade de manipular código em tempo de compilação.
Exemplos de bibliotecas que estive pesquisando seriam AspectJ, PostSharp e Cecil.
Existe algo que possa ser feito com um e não com o outro? Eles realmente resolvem os mesmos problemas ou estou comparando maçãs e laranjas?