¿Qué piensas sobre el tema?
La metaprogramación es más comúnmente asociada con lenguajes no dinámicos, ya que es más difícil lograr ciertos comportamientos (como implementar un ORM) sin muchas líneas de código no productivas y no inteligentes.
Pero incluso en lenguajes más dinámicos como PHP, la generación de código puede salvar la vida y aumentar la productividad en gran cantidad. En los marcos modernos, es muy común tener andamios que generan la mayor parte del modelo, la forma, la prueba y las acciones comunes para un determinado objeto comercial que declara. Es una de las razones por las que los marcos como Symfony o RoR tienen tanto éxito, esas herramientas de generación de código hacen que el código sea muy rápido y aumenten la productividad de los programadores.
En los sitios web, la mayor parte de la interacción gira en torno a cuatro acciones principales:
- Crear un elemento
- Recupere un conjunto de elementos (con posible filtrado)
- Actualizar un elemento con nuevos atributos
- Eliminar un conjunto de elementos
Al menos, todo lo que gira en torno a estas 4 acciones principales se podría lograr, y EN IMHO, DEBE CONVERTIRSE utilizando herramientas de generación de códigos para lograr la máxima productividad.
En mi empresa, usamos Symfony, y su administrador-generador es una herramienta excepcional, que incluso genera código en tiempo de ejecución (y lo almacena en caché), lo que significa que ni siquiera necesitamos utilizar ningún tipo de tarea o Herramienta externa para generar nuevo código, solo necesitamos limpiar nuestra caché. YO SÓLO aconsejo utilizar este tipo de herramienta para las operaciones de CRUD.
Pero, hacer lo que hicieron los impresionantes contribuidores de Symfony, no es una tarea fácil. Yo mismo he implementado algunas tareas de generación de código y no es fácil hacer algo que sea realmente consistente y con una implementación amplia para cubrir la mayoría de los casos de esquina.
¿Es algo que realmente aumentará tu productividad?
Creo que la metaprogramación es muy importante en los niveles inferiores de trabajo (marcos, almacenamiento en caché, compiladores, etc.) pero es algo que debemos abordar con extrema precaución si estamos haciendo cosas en la capa empresarial.
El uso de la generación de código es, sin lugar a dudas, un importante impulsor de la productividad. Implemente sus propias herramientas de generación de código, no tanto a menos que usted mismo esté creando un marco.
¿Cuáles son algunos buenos recursos sobre el tema, entre libros, blogs, presentaciones de diapositivas, etc.?
El mejor recurso para comprender la programación es siempre un código fuente bueno y bien comentado. Yo diría que mirando RubyOnRails y Symfony generadores de administración es una buena idea.