Actualmente estoy aprendiendo D, y una de las cosas que me he preguntado es si D tiene una forma de duplicar las capacidades de generación de código de los lenguajes JVM.Generación de código de tiempo de compilación en D
Aquí hay un escenario: Tengo un objeto, y quiero generar una cadena basada en ese objeto que le da su nombre y todos sus campos. En Java/Scala, I podría solo usar la reflexión, pero suponga que la velocidad es un problema. Podría usar una biblioteca de generación de códigos de bytes para generar dinámicamente y compilar una clase que lo haga sin reflexión. La implementación se dividiría para iterar a través de los campos del objeto y obtener su nombre a través de la recursión, y usar esa información para generar dinámicamente Java (o bytecode) que acceda directamente a los campos.
Si no te gusta ese escenario porque es débil y/o poco realista, otro que podría ser más realista es la serialización de objetos optimizados.
He visto ejemplos donde la evaluación de tiempo de compilación de D's y/o la metaprogramación de plantillas se usa para precalcular la secuencia de fibonacci en tiempo de compilación y otros algoritmos recursivos, pero ¿hay alguna manera de hacer cosas como esta solo con el lenguaje y un compilador, o ¿necesitaría desarrollar un generador de código separado y ejecutarlo antes del compilador para obtener este tipo de funcionalidad?
Por favor, ¿pueden considerar esto [publicar] (http://stackoverflow.com/questions/11314596/listing-a-classs-methods-trough-mixin)? – menjaraz