Eu me acostumei um pouco com a programação intuitiva, mas não tenho ideia de como se faz isso se você não sabe programar da maneira tradicional.
Gosto mais do código Claude. Acho que o Codex tende a ser excessivamente complexo e não segue instruções específicas tão bem.
A parte mais difícil é que o modelo vai gerar MUITO código, grande parte dele redundante e malfeito (no sentido antigo da palavra). Mas o bom é que você pode facilmente escrever um milhão de testes unitários. (Na verdade, eu sempre usei LLMs para isso, mesmo desde o gpt-3.5).
É um paradigma interessante. Por exemplo, neste pequeno aplicativo de teste que estou desenvolvendo, existem vários locais, uns 15, que fazem o aplicativo rolar até algum elemento. Em cada local, ele escreveu exatamente as mesmas 7 linhas para executar essa ação. A maneira como eu faria isso seria...
Criei uma função `scrollToElement` e a chamo sempre que quero rolar até um elemento. Mas o código continua escrevendo as mesmas 7 linhas de código para rolar, independentemente do elemento escolhido. Parece que não há nenhuma maneira de refatorar isso. Obviamente, isso é ruim.
Parece não haver problema em modificar os 15 blocos de código idênticos conforme necessário, e o comportamento é suficientemente coberto por testes, de modo que, quando um deles é esquecido, o teste falha, o erro é encontrado e corrigido. Isso é esteticamente horrível, mas funciona bem o suficiente para...
Eu nem tinha percebido até começar a ler o código com atenção. Normalmente, você quer evitar repetições desse tipo (DRY, na sigla em inglês), pois elas introduzem fragilidade e bugs, mas nesse caso não pareceu haver esse problema. Ainda é ruim, mas levanta questões interessantes…
Por exemplo, se você tem alguém com energia infinita para escrever código, talvez seja melhor ser um pouco mais prolixo? Muitas das minhas próprias práticas se devem a uma preferência estética por fazer o máximo possível com o mínimo de código possível, mas talvez isso não seja o ideal para código LLM.
É claro que o modelo não tem resistência infinita. Ele custa dinheiro, provavelmente mais dinheiro do que eu estou pagando por ele, na verdade.