O que você acha do assunto?
A metaprogramação é mais comumente associada a linguagens não dinâmicas, uma vez que é mais difícil obter determinados comportamentos (como implementar um ORM) sem muitas linhas de código não produtivas e não inteligentes.
Mas mesmo em linguagens mais dinâmicas como PHP, a geração de código pode realmente salvar a vida e aumentar a produtividade em grande quantidade. Nas estruturas modernas, é muito comum ter andaimes que geram a maioria do modelo, formulário, teste e ações comuns para um determinado objeto de negócios que você declara. É uma das razões pelas quais estruturas como o symfony ou o RoR têm tanto sucesso que essas ferramentas de geração de código tornam o código consistente muito rapidamente e aumentam a produtividade dos programadores.
Nos sites, a maior parte da interação gira em torno de quatro ações principais:
- Crie um elemento
- Recuperar um conjunto de elementos (com possível filtragem)
- Atualize um elemento com novos atributos
- Excluir um conjunto de elementos
Pelo menos tudo o que gira em torno dessas quatro ações principais poderia e deveria ser alcançado usando ferramentas de geração de código para obter a máxima produtividade.
Na minha empresa, usamos o symfony, e seu administrador-gerador é uma ferramenta excepcional, que até gera código em tempo de execução (e o armazena em cache), o que significa que nem precisamos usar nenhum tipo de tarefa ou ferramenta externa para Para gerar um novo código, precisamos apenas limpar nosso cache. Eu aconselho fortemente o uso desse tipo de ferramenta para operações CRUD.
Mas, fazer o que os colaboradores incríveis do symfony fizeram, não é uma tarefa fácil. Eu mesmo implementei algumas tarefas de geração de código e fazer algo verdadeiramente consistente e com uma ampla implementação para cobrir a maioria dos casos extremos não é fácil.
É algo que realmente aumentará sua produtividade?
Acredito que a metaprogramação é muito muito importante em níveis mais baixos de trabalho (estruturas, cache, compiladores etc.), mas algo que devemos abordar com extrema cautela se estivermos fazendo coisas na camada de negócios.
Usar a geração de código é, sem dúvida, um grande impulsionador da produtividade. Implementando suas próprias ferramentas de geração de código, não muito, a menos que você mesmo esteja criando uma estrutura.
Quais são alguns bons recursos sobre o assunto, entre livros, blogs, apresentações de slides, etc?
O melhor recurso para entender a programação é sempre um código fonte bom e bem comentado. Eu diria que analisar os geradores de administração RubyOnRails e Symfony é uma boa idéia.