Narrativa em primeira pessoa: trabalhei em um projeto interno de automação de APIs que visava reduzir o tempo…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Reconhecer o conceito de metaprogramação como uma forma de generalização na construção de programas, permitindo que algoritmos sejam entrada ou saída para outros algoritmos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Narrativa em primeira pessoa: trabalhei em um projeto interno de automação de APIs que visava reduzir o tempo de desenvolvimento de funções de conversão de objetos para JSON. No início, escrevíamos manualmente cada função de serialização para diversas classes. Depois, criamos um módulo que recebia como entrada a descrição dos atributos de cada classe e gerava automaticamente o código-fonte dessas funções, além de produzir fábricas de deserialização que interpretam JSON e instanciam objetos correspondentes. Com base no texto, identifique a prática que exemplifica o uso de metaprogramação para generalizar a construção de programas.
- A) Utilizar funções de ordem superior para iterar sobre atributos de um objeto e montar JSON
- B) Criar um programa que receba descrições de classes e gere automaticamente funções de serialização
- C) Aplicar funções puras para transformar valores de objetos em pares chave-valor genéricos
- D) Usar laços de repetição para concatenar manualmente cada campo de um objeto em uma string JSON
- E) Empregar bibliotecas externas para registrar tipos de dados em tempo de execução
✅ Resposta correta: alternativa B
Resolução passo a passo
- A questão pede a prática que exemplifica metaprogramação, ou seja, um programa que produz ou manipula outros programas, generalizando a construção de código. Passo 2: No texto, a equipe criou um módulo que recebe a descrição dos atributos de cada classe e gera automaticamente o código-fonte das funções de serialização. Isso é metaprogramação, pois o programa escreve código de outros programas a partir de uma descrição. Passo 3: A alternativa B descreve exatamente essa prática: um programa que recebe descrições de classes e gera automaticamente funções de serialização. Passo 4: A alternativa A está errada porque funções de ordem superior apenas iteram e transformam dados em tempo de execução, sem gerar código novo. Passo 5: A alternativa C está errada porque funções puras são um conceito de programação funcional sobre transformação de valores, não geração de código. Passo 6: A alternativa D está errada porque concatenar campos manualmente é justamente o método antigo, não generalizado, descrito no início do texto. Passo 7: A alternativa E está errada porque registrar tipos em tempo de execução usa bibliotecas para reflexão, mas não descreve a geração automática de código que o texto apresenta. Passo 8: Conclusão: o gabarito oficial B está correto e coincide com a análise feita.
💡 Dica: Identifique a prática que automatiza a geração de código a partir de descrições de classes.
Alternativa por alternativa
O aluno associa generalização apenas ao uso de funções de ordem superior para percorrer atributos, sem perceber que o texto descreve a geração de código-fonte novo.
Por que engana: Confundir automação de código com manipulação manual ou uso de funções puras sem geração automática.
Geração de código a partir de especificações caracteriza metaprogramação, pois algoritmos produzem outros algoritmos.
O aluno confunde metaprogramação com programação funcional, supondo que funções puras que transformam valores já generalizam a construção de programas.
O aluno interpreta a narrativa como descrição da solução e não percebe que a concatenação manual é justamente o método antigo que o projeto substituiu.
O aluno acredita que qualquer uso de registro dinâmico de tipos em tempo de execução seja metaprogramação, sem notar que o texto destaca a geração automática de código.
Raio-X da questão
metaprogramação e automação de código
avaliacao
programação orientada a objetos · funções de ordem superior
Estude metaprogramação e geração automática de código em programação.
Confundir automação de código com manipulação manual ou uso de funções puras sem geração automática.
ciencia_tecnologia
pensamento_critico
cientifico
Questões parecidas com resolução
- Quando comecei a desenvolver uma ferramenta para automatizar a geração de relatórios, implementei um programa que lê…
- Em levantamento interno recente, 85% dos desenvolvedores de uma empresa de software relatou gasto excessivo de horas…
- Dados ilustrativos: 68% das empresas de software empregam geradores automáticos de código para acelerar a construção de…
- Linhas de código percorriam as telas dos participantes durante uma maratona de desenvolvimento, enquanto vozes trocavam…
- Como equipes de desenvolvimento conseguem gerar módulos de software sem escrevê-los manualmente? Num projeto ágil, uma…
- Dados ilustrativos: em pesquisa com 50 startups de tecnologia, 30% relataram empregar técnicas em que componentes de…
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
