A Large-Scale Comprehensive Measurement of AI-Generated Code in Real-World Repositories A Large-Scale Comprehensive Measurement of AI-Generated Code in Real-World Repositories
Este artigo apresenta um estudo empírico de larga escala que analisa as características e o impacto do código gerado por IA em repositórios reais, utilizando um novo conjunto de dados e filtros heurísticos para comparar métricas de código e de commits com o código escrito por humanos.
Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita nem endossada pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo
Imagine que você tem um assistente de programação superinteligente, como um "copiloto" que escreve código para você. Nos últimos anos, ferramentas como o GitHub Copilot e o ChatGPT tornaram-se muito populares. Mas a grande pergunta que os pesquisadores queriam responder era: quando esse assistente escreve o código e o coloca em um projeto real, como ele se compara ao código escrito por humanos?
Muitos estudos anteriores olhavam para o código gerado em laboratórios (como se fosse um teste de prova), mas este estudo foi diferente. Eles foram até os "grandes armazéns" de código do mundo (o GitHub) e analisaram projetos reais que já estão sendo usados por pessoas.
Aqui está o resumo do que eles descobriram, usando analogias do dia a dia:
1. O Código do Robô é "Verboso" (Muito Falante)
Imagine que você precisa explicar como fazer um sanduíche.
- Humano: "Pegue o pão, passe o requeijão, coloque o presunto e feche." (Direto e eficiente).
- IA: "Primeiro, pegue uma fatia de pão. Em seguida, pegue outra fatia. Aplique uma camada uniforme de requeijão na primeira fatia. Em seguida, coloque uma fatia de presunto sobre o requeijão. Finalmente, coloque a segunda fatia de pão sobre o presunto."
A Descoberta: O código gerado pela IA tende a ser mais longo e mais detalhado. Ele não é necessariamente mais complexo, mas é menos "compacto". A IA gosta de escrever tudo de forma explícita, passo a passo, como se tivesse medo de que você não entendesse. O código humano, por outro lado, tende a ser mais resumido e usa atalhos que os programadores experientes já conhecem.
2. A Estrutura: Torres vs. Blocos de Construção
- Humano: Tende a criar "torres" altas e interconectadas. O código humano muitas vezes usa recursão (uma função que chama a si mesma) e organiza as coisas em funções grandes e poderosas que fazem muito trabalho de uma vez.
- IA: Tende a construir "blocos" menores e mais organizados em camadas. A IA prefere criar muitas funções pequenas e simples, uma dentro da outra, em vez de uma função gigante. É como se a IA preferisse fazer uma escada de degraus pequenos em vez de um salto grande.
A Analogia: Se o código fosse uma casa, o humano constrói com vigas grandes e poucos pilares. A IA constrói com muitos tijolos pequenos e bem alinhados, mas a casa acaba ficando um pouco mais alta e com mais corredores do que o necessário.
3. O "Lixo" e os Erros de Segurança
A IA não comete mais erros graves (como fazer o prédio desabar), mas ela deixa mais "poeira" e pequenos problemas.
- Segurança: O código da IA tem mais alertas de segurança de nível médio. É como se a IA deixasse mais janelas entreabertas ou portas mal trancadas, mesmo que não deixe a porta da frente destrancada.
- Senhas: Humanos tendem a deixar senhas óbvias (como "123456"). A IA, curiosamente, tende a deixar chaves de API e tokens expostos. São tipos diferentes de "vazamentos".
4. O Comportamento do Programador (O "Commit")
Aqui está uma das descobertas mais interessantes sobre como os humanos trabalham com a IA:
- Tamanho do Trabalho: Quando um humano usa a IA, ele não escreve o projeto inteiro de uma vez. Ele usa a IA para fazer pequenos ajustes rápidos. São commits (salvamentos de código) menores e mais focados.
- Horário: Os programadores usam a IA mais fora do horário de expediente (à noite ou fins de semana), como se fosse uma ferramenta para "desafogar" o trabalho quando estão sozinhos.
- O Preço da Manutenção: Embora a IA ajude a começar rápido, o código que ela gera demora mais para se estabilizar.
- Analogia: É como pedir para um robô montar um móvel. Ele monta rápido e fica de pé. Mas, depois de uma semana, você percebe que precisa apertar alguns parafusos, ajustar uma perna que ficou torta e trocar uma peça. O código da IA precisa de mais revisões e ajustes ao longo do tempo do que o código feito puramente por humanos.
5. A Linguagem Importa
A IA não se comporta igual em todas as linguagens de programação.
- Em JavaScript, a IA gera código com muitos mais problemas de segurança de alto risco.
- Em Java, o código da IA é muito parecido com o humano.
- Isso mostra que a IA aprende os "vícios" e padrões de cada linguagem, e às vezes ela aprende os maus hábitos também.
Conclusão: O Que Isso Significa para Nós?
A IA não está substituindo os programadores, mas está mudando como eles trabalham.
- O Benefício: A IA é ótima para gerar rascunhos rápidos e fazer pequenas tarefas repetitivas.
- O Custo: O trabalho não desaparece; ele apenas se move. Em vez de gastar tempo escrevendo o código do zero, o programador gasta mais tempo revisando, limpando e organizando o código que a IA gerou.
A Lição Final: A IA é como um estagiário muito rápido e detalhista, mas que às vezes escreve demais e precisa de supervisão para não deixar o código bagunçado. O programador humano continua sendo o arquiteto que precisa garantir que a casa fique sólida, segura e bem organizada a longo prazo.
Afogado em artigos na sua área?
Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.