Quando comecei a desenvolver uma ferramenta para automatizar a geração de relatórios, implementei um programa…
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
Quando comecei a desenvolver uma ferramenta para automatizar a geração de relatórios, implementei um programa que lê descrições em alto nível de transformações de dados e produz funções em Python para cada etapa. O utilitário analisa arquivos de texto onde o usuário define operações como “filtrar por data” ou “agrupar vendas”. Sempre que as descrições de entrada mudam, o programa regenera automaticamente o código-fonte atualizado. Essa solução permite à equipe concentrar-se em especificar o que precisa ser feito e confiar no gerador para criar as implementações detalhadas. Outras partes do sistema, como interfaces gráficas e arquivos de configuração, continuam sendo codificadas manualmente. Analise o texto-base e identifique a prática que exemplifica metaprogramação no contexto apresentado.
- A) Aplicar um padrão de design que define interfaces fixas para comunicação entre classes
- B) Empregar um gerador de arquivos de configuração baseado em modelos predefinidos sem gerar código fonte
- C) Reutilizar funções de autenticação em vários módulos do sistema
- D) Utilizar um script que recebe uma descrição de tarefas em texto e gera funções de código correspondentes
- E) Usar uma biblioteca que permite inspecionar tipos de dados de objetos durante a execução
✅ Resposta correta: alternativa D
Resolução passo a passo
- O texto descreve um programa que lê descrições de alto nível (por exemplo, 'filtrar por data' ou 'agrupar vendas') e produz automaticamente código-fonte em Python para cada etapa, regenerando esse código sempre que a entrada muda.
- Metaprogramação é a prática em que um programa escreve, transforma ou gera outro programa (código como dado). O caso apresentado é exatamente esse: o gerador toma uma especificação textual e produz funções executáveis, sem que a equipe escreva a implementação detalhada.
- Analisando a alternativa D, ela descreve um script que recebe descrição de tarefas em texto e gera funções de código correspondentes, o que coincide com o funcionamento descrito. Portanto, D é a resposta correta, e o gabarito oficial está correto.
- Por que as outras estão erradas:
- A) Padrões de design que definem interfaces fixas são uma técnica de organização de classes, não geração de código a partir de descrições.
- B) O texto diz que o gerador produz código-fonte, e não apenas arquivos de configuração; além disso, as configurações são codificadas manualmente.
- C) Reutilizar funções de autenticação é reuso de código comum, sem qualquer geração automática de programas.
- E) Inspecionar tipos em tempo de execução (reflexão) é uma capacidade de análise, mas não cria código novo a partir de uma descrição, que é o ponto central do texto.
💡 Dica: Identifique a prática que envolve geração automática de código a partir de descrições.
Alternativa por alternativa
O aluno associa a ideia de 'padrão' e 'interfaces' ao conceito de organização arquitetural do sistema, confundindo estrutura de classes com geração de código.
O aluno lê 'gerador' e foca apenas na palavra 'configuração', sem perceber que o texto diz que o gerador produz código-fonte e que as configurações são feitas manualmente.
Por que engana: Confundir geração automática de código com uso de bibliotecas ou padrões de design sem geração dinâmica.
O aluno entende metaprogramação como qualquer reaproveitamento de código, sem distinguir reuso de funções de geração automática de programas.
Esse procedimento exemplifica metaprogramação ao usar algoritmos de entrada para produzir código-fonte automaticamente.
O aluno confunde reflexão (inspecionar tipos durante a execução) com metaprogramação, que envolve gerar ou modificar código, e não apenas examiná-lo.
Raio-X da questão
metaprogramação geração automática código
diagnostico
programação básica em Python
Estude o conceito de metaprogramação e geração dinâmica de código.
Confundir geração automática de código com uso de bibliotecas ou padrões de design sem geração dinâmica.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Em levantamento interno recente, 85% dos desenvolvedores de uma empresa de software relatou gasto excessivo de horas…
- Por que certas ferramentas de desenvolvimento conseguem gerar trechos de código automaticamente, adaptando-se a…
- Dados ilustrativos: em pesquisa com 50 startups de tecnologia, 30% relataram empregar técnicas em que componentes de…
- Na startup brasileira CodeArt, uma equipe busca reduzir o tempo de desenvolvimento de um sistema de atendimento. Para…
- Narrativa em primeira pessoa: trabalhei em um projeto interno de automação de APIs que visava reduzir o tempo de…
- Manchete fictícia: Ferramenta gera scripts de análise para múltiplos experimentos Pesquisadores de biotecnologia…
🔎 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
