- Programar é um ato criativo de lapidar especificações ambíguas até torná-las precisas, e a IA acelera esse processo ao converter especificações em inglês em código
- O “vibe coding” possibilita uma forma mais intuitiva de desenvolver, mas não consegue evitar os problemas de complexidade e bugs causados por vazamentos de abstração
- Humanos usam abstração e compressão para lidar com a complexidade, e isso funciona como o valor essencial da programação
- Na era da AGI, a IA deve apoiar abstrações melhores e possibilitar a criação de código sofisticado e artístico
- Ao contrário da ideia de que “o código morreu”, a IA é apresentada não como o fim da programação, mas como uma ferramenta que abre um novo começo
A morte do código é uma afirmação exagerada
- Ao apontar a ambiguidade das especificações em inglês e os limites da precisão, o texto argumenta que programar é, como escrever, um processo iterativo de aumentar a precisão
- Com uma citação de Bertrand Russell, enfatiza-se que “tudo é vago até que se tente torná-lo preciso”
- A IA converte rapidamente especificações escritas em inglês em código executável, permitindo que o usuário refine gradualmente o resultado desejado
- “Vibe coding” é uma forma de desenvolvimento guiada pela reação intuitiva ao que a IA gera, mas isso pode criar a ilusão de uma abstração precisa
- Quando a abstração vaza, surgem bugs inesperados, e isso se agrava à medida que a escala aumenta
- É apresentado o caso de Dan Shipper, cujo editor de texto colaborativo feito com “vibe coding” ganhou popularidade e depois caiu por problemas de complexidade
- “Colaboração em tempo real” parece simples intuitivamente, mas na prática é um problema muito difícil, mostrando a natureza da complexidade
Abstração e controle da complexidade
- Como humanos conseguem perceber apenas cerca de 7±2 itens de cada vez, a única forma de lidar com a complexidade é a “compressão”, isto é, a abstração
- Com uma citação de Edsger Dijkstra, reforça-se que “o propósito da abstração não é a vagueza, mas a precisão em um novo nível de significado”
- É dado como exemplo o caso em que Sophie Alpert simplificou um fluxograma complexo de notificações do Slack
- O núcleo da programação é a criação de abstrações melhores para lidar com a complexidade, e essa beleza pode ser encontrada em áreas como programação funcional reativa
- Até problemas intrinsecamente complexos, como editores de texto colaborativos, podem ser conquistados gradualmente com ferramentas de abstração como ReactJS e TailwindCSS
A era da AGI e o papel do código
- À medida que a IA evolui cada vez mais rápido e de forma mais barata, ela acabará chegando a uma inteligência indistinguível da humana (AGI)
- Na era da AGI, a perspectiva é que qualquer pessoa possa usar uma inteligência tão poderosa quanto “100 gênios do nível de Karpathy” a baixo custo
- Mas isso não serviria para produzir “mais código ruim”, e sim como ferramenta para melhores abstrações e melhor compreensão da complexidade
- Código não é apenas um meio de construir software, mas um artefato artístico importante em si mesmo, e um código bem escrito é comparado à poesia
- Assim como não existe “vibe writing” na escrita, programar também não pode ser substituído por um simples ato guiado por sensação
- Com a chegada da AGI, as máquinas poderão escrever código non-slop, e isso será um avanço glorioso para a humanidade
IA e a melhoria da qualidade do código
- Hoje, a IA ainda gera código imperfeito, mas os desenvolvedores já a utilizam levando isso em conta
- Como defende Simon Willison, a IA deve ser usada como ferramenta para produzir código melhor
- Quando a AGI surgir, ela será aplicada primeiro à resolução dos problemas de abstração mais difíceis, melhorando sistemas complexos como bibliotecas de editores colaborativos
- É apresentado o caso de desenvolvimento do framework full-stack React (vtrr) para o Val Town usando o Opus 4.6
- Questões em aberto relacionadas ao React Router 7 foram resolvidas de uma vez, lidando com a complexidade de forma elegante em um demo de arquivo único com 50 linhas
- Isso mostra como é possível criar código sofisticado por meio da colaboração entre IA e humanos
O futuro do código e o valor do formalismo
- Grande parte da sociedade acredita que “o código morreu”, mas isso é o mesmo erro que declarar o fim das histórias por causa da invenção da imprensa
- A IA não significa o fim da programação, mas um novo começo para programar
- Com citações de Edsger Dijkstra, Tony Hoare e Charles Babbage, enfatiza-se que o pensamento formal e o poder de compressão dos símbolos expandem o pensamento humano
- Dijkstra menciona que usar linguagens formais deve ser visto não como um fardo, mas como um privilégio
- Hoare contrasta duas abordagens: “um design simples, obviamente sem defeitos” e “um design complexo no qual os defeitos não são óbvios”
- Babbage destaca que a compressão dos símbolos é uma força que impulsiona o pensamento
- Em conclusão, o código não morreu; ao contrário, está emergindo como uma ferramenta criativa ainda mais poderosa na era da IA
1 comentários
Opiniões no Hacker News
Chris Lattner revisou um compilador escrito com Claude AI e disse que não havia nada de inovador
A IA tende a recombinar, em média, conhecimento já existente, então não consegue criar sozinha pensamento crítico ou novos paradigmas
Humanos conseguem pensar fora do consenso existente, mas a IA tem uma força que a puxa de volta para esse consenso
No fim, a IA é conformista (conformist), e isso é ao mesmo tempo sua força e sua fraqueza
Post relacionado
Em vez de gastar horas tentando entender pela documentação configurações complexas de autenticação como OAuth ou SAML, um LLM gera rapidamente código de integração funcional
Também uso IA como uma espécie de debug com pato de borracha, conversando com ela para organizar meu pensamento
Essas conversas têm um nível de complexidade difícil de alcançar para alguém sem experiência real em desenvolvimento
A preocupação real é se a IA vai reduzir a demanda e levar o setor a um excesso de oferta
Se novos problemas de negócio continuarem surgindo, a IA ajudará como ferramenta; se não, os empregos vão diminuir com ou sem IA
Redes neurais essencialmente fazem interpolação (interpolation), não extrapolação (extrapolation)
Ou seja, dentro da região aprendida elas são sofisticadas, mas fora dela a previsão se torna imprevisível
O artigo da Wikipedia e o exemplo SolidGoldMagikarp mostram isso bem
O objetivo do Claude não era inovar, mas provar “se uma IA consegue criar um compilador”
Casos como AlphaDev e AlphaEvolve mostram que, com aprendizado exploratório e combinação de conhecimento, também há bastante possibilidade de a IA realmente gerar inovação
Na maioria dos casos, queremos ferramentas previsíveis, não uma entidade instável que aprende sozinha
A IA tem a capacidade de organizar requisitos contraditórios e produzir uma implementação consistente
Por exemplo, ela pode responder logicamente até a um pedido impossível como “desenhe 7 linhas vermelhas com tinta azul”
O fato de Claude ter dito “isso é impossível, então desenhar 0 linhas é a resposta honesta” é um exemplo de pensamento crítico
Sobre a pergunta “a IA conseguirá criar novas tecnologias?”, sou cético
Como a IA depende de dados existentes, quando surge uma nova linguagem ou framework pode haver risco de desaceleração na evolução por falta de dados de treino
A programação com IA pode até reduzir a “reinvenção da roda” e ajudar a escapar da síndrome NIH
Mesmo com quase nenhum dado de treino, eles conseguem ler a documentação, escrever código e realizar novas tentativas
Precisamos manter aberta a possibilidade de que um dia a IA também consiga fazer síntese tecnológica criativa
No fim, talvez chegue uma época em que desenvolvedores terão de pagar para entrar nos dados de treino da IA
Por exemplo, plataformas como skills.sh oferecem um sistema de skills para ensinar novos frameworks à IA
Só com documentação e código de exemplo, a IA já consegue usar esse framework imediatamente
Tenho sentimentos contraditórios em relação ao código
No trabalho, código é dívida, mas ao mesmo tempo também é diversão como hobby
Tenho a impressão de que um mundo como o computador de Star Trek, em que “você pede em voz alta e ele resolve”, está ficando próximo
Muitos recursos intelectuais da sociedade estão sendo usados em tecnologia de anúncios ou na indústria de vigilância
Se a IA substituir a programação, isso pode até ser um gatilho para realocar talentos
Estou criando um CRDT em estrutura de árvore que permite mover, apagar e ordenar sem tombstones
O Claude Code escreve bem, mas continuava tentando adicionar tombstones, então precisei convencê-lo com uma prova lógica
Parece que a IA ainda não domina totalmente esse tipo de entendimento estrutural detalhado
Sempre que surge uma nova tecnologia, os humanos passam por um período de expectativa excessiva e experimentação
É assim que aprendemos os limites da tecnologia
A promessa da programação orientada a agentes parece boa demais, mas no fim todos vão aprender a realidade por tentativa e erro
Em vez de dizer que “o código morreu”, vejo que os humanos estão subindo um nível de abstração
Agora você escreve a especificação em inglês, e a IA escreve o código
Mas quando é necessária especificidade total, o código ainda é mais útil
Como na edição de fotos: se você precisa de controle preciso, é melhor fazer diretamente; mas na maioria dos casos basta deixar com a IA
Acho que, com o tempo, a IA escreverá código estável e seguro melhor do que humanos
Como Simon Willison disse, o verdadeiro valor de vibe coding não está em “mais rápido”, mas em produzir código melhor
Dá para gerar protótipos com vários modelos de design e iterar melhorias com base em legibilidade, confiabilidade e tolerância a falhas
Hoje, em revisão de código, se digo “vamos mudar esta parte assim”, a IA corrige na hora
Mas muitos colegas esperam apenas um “mundo em que o código desaparece”
Há pouco tempo saiu uma notícia de que Donald Knuth pediu uma prova à IA, e ela encontrou uma prova antes desconhecida
Mas isso provavelmente foi menos uma nova descoberta e mais um caso de reencontrar material esquecido
É isso que faz dos LLMs uma ferramenta de pesquisa poderosa, ao mesmo tempo em que faz parecer que são criativos
Com o Dragon Book, dá para fazer algo funcional em poucos meses e entender todos os princípios no processo
Acho que linguagens de programação são um meio de expressar intenção humana de forma compacta
Mas às vezes a linguagem natural transmite essa intenção de forma ainda mais precisa e densa
Uma boa abstração reduz esse intervalo, e DSLs ou linguagens da família ML/Lisp são exemplos disso
Por exemplo, como no tutorial de Electric Clojure, o código pode ser a melhor forma de conter a intenção
No fim, como disse Wittgenstein, “uma imagem ambígua às vezes pode ser exatamente aquilo de que precisamos”