¿Qué opinas sobre el tema?
La metaprogramación se asocia más comúnmente 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 ser realmente un salvavidas y aumentar la productividad en gran cantidad. En los marcos modernos, es muy común tener un andamiaje que genere la mayoría de los modelos, formularios, pruebas y acciones comunes para un determinado objeto comercial que usted declara. Es una de las razones por las que los frameworks como Symfony o RoR tienen tanto éxito, esas herramientas de generación de código hacen un código consistente muy rápidamente y aumentan 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
- Recuperar 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 podría y, en mi humilde opinión, DEBE lograrse utilizando herramientas de generación de código para lograr la máxima productividad.
En mi empresa, utilizamos Symfony, y su generador de administración 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 usar ningún tipo de tarea o herramienta externa para generar nuevo código, solo necesitamos limpiar nuestro caché. Recomiendo encarecidamente que utilice este tipo de herramienta para operaciones CRUD.
Pero, hacer lo que hicieron los increíbles colaboradores de Symfony no es una tarea fácil. Yo mismo he implementado algunas tareas de generación de código y hacer algo que sea verdaderamente consistente y con una implementación amplia para cubrir la mayoría de los casos de esquina no es fácil.
¿Es algo que realmente aumentará su productividad?
Creo que la metaprogramación es muy 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 esté construyendo un marco usted mismo.
¿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. Diría que es una buena idea buscar en los generadores de administración de RubyOnRails y Symfony .