Houve um tempo em que era comum mesclar código C/C++ com Assembly. Existia um bloco usado exatamente para isso. Livros e mais livros falavam sobre a técnica. Mas por quê?
Na época, o código gerado pelo compilador, ao traduzir C/C++ para Assembly, muitas vezes não era bom. Quem buscava desempenho escrevia o próprio Assembly na unha. Eu fazia isso!
Um dia, lendo a documentação, encontrei uma advertência: “Blocos asm não serão otimizados pelo compilador”. Que disparate! Se eu escrevia Assembly na unha era justamente porque não confiava no compilador.
Resolvi testar. Peguei casos que eu tratava em baixo nível, reescrevi em C e comparei.
O resultado mudou minha visão. O compilador era claramente um programador Assembly melhor do que eu. Anos de prática perderam força.
Fiquei assustado? Não. Surpreso? Um pouco. Empolgado? Com toda a certeza. A mudança é o oxigênio para o crescimento.
Assim como hoje discutimos se a IA substitui o programador, naquela época discutíamos se o compilador podia fazer melhor do que nós.
Isso me fez pensar em outras mudanças de paradigma. Com a programação funcional, veio a declarativa. No lugar de loops, chamadas de funções. Em vez de dizer “como fazer”, passamos a dizer “o que fazer”. Em .NET isso aparece no LINQ.
Nunca gostei de ferramentas de geração de código. Sempre achei que tentavam substituir o trabalho do programador, e isso não fazia sentido até hoje. Programar é muito mais do que apenas escrever código.
Com a IA, surge uma nova etapa. O programador especifica, e a máquina ajuda. Não como prometem no chamado Vibe Coding, que aposta em substituir o programador, mas como um “par” de programação. Só que, em vez de outro DEV humano, um DEV artificial.
Na prática, reconheço: mesmo com mais de 30 anos codificando, pouco do conhecimento técnico que tenho com mais de 3 anos é útil no dia a dia. O resto é bagagem, que me ajuda a pensar melhor.
E você? Está usando sua bagagem para pensar melhor ou ainda a carrega apenas como peso para passar trabalho?