He estado leyendo sobre las bibliotecas que la gente ha escrito para lenguajes como Java y C # que utilizan el tejido de código de bytes para hacer cosas como interceptar llamadas a funciones, insertar código de registro, etc. También he estado leyendo sobre macros Lisp / Clojure en un Intente comprender mejor cómo utilizarlos. Cuanto más leo sobre las macros, más parece que proporcionan el mismo tipo de funcionalidad que las bibliotecas de tejido de código de bytes. Por funcionalidad, me refiero a la capacidad de manipular código en tiempo de compilación.
Ejemplos de bibliotecas que he estado viendo serían AspectJ, PostSharp y Cecil.
¿Hay algo que se pueda hacer con uno y no con el otro? ¿Realmente resuelven los mismos problemas o estoy comparando manzanas y naranjas?