14 pontos por GN⁺ 2025-12-10 | 4 comentários | Compartilhar no WhatsApp
  • O vibe coding realmente funciona bem, mas reduz o prazer essencial da programação, já que acaba produzindo código que o próprio autor não entende completamente
  • Todas as linguagens de programação são ferramentas projetadas não para máquinas, mas para a conveniência humana, e vantagens como segurança, abstração e legibilidade também são, no fim das contas, estruturas para ajudar o pensamento humano
  • Então, será que uma linguagem amigável para humanos é mesmo necessária para código escrito por IA? Surge a proposta de uma nova linguagem centrada em IA e amigável para máquinas: VOPL (Vibe-Oriented Programming Language)
  • Essa linguagem pode assumir várias possibilidades: pseudocódigo executável, uma extensão da programação literária ou uma forma baseada em linguagem natural com uma gramática específica
  • Como nos primórdios dos computadores de programa armazenado, a resistência a novos paradigmas computacionais é uma história que se repete, e o vibe coding talvez seja o próximo passo dessa trajetória

A tensão entre programação e vibe coding

  • Para mim, programar é prazer, não trabalho, e tem sido uma paixão contínua desde o fim dos anos 1990
    • Ensino programação há 25 anos e aquilo de que mais me orgulho é transformar pessoas sem formação na área em programadores
  • Ao programar, valorizo muito a satisfação de entender por conta própria o processo de resolver problemas
  • Já o vibe coding é um processo em que a IA escreve o código no lugar da pessoa, o que leva a uma situação em que quem escreve não entende completamente o resultado
    • Dá até uma sensação de “trapaça” (embora não seja só isso), mas de um jeito difícil de definir, também causa certo incômodo
    • Parece tirar boa parte da diversão de codar em si
  • Ainda assim, o vibe coding funciona bem o bastante para produzir sistemas reais de alta qualidade
    • Vai além de simplesmente substituir buscas: também resolve com precisão problemas que daria preguiça de resolver manualmente
    • A IA é mais habilidosa do que humanos em rastrear erros e gerenciar memória, e continua sendo surpreendente ver o que surge quando se joga uma ideia de programa para a IA

Linguagens sempre foram ferramentas para humanos

  • Como em Structure and Interpretation of Computer Programs, de Abelson & Sussman, linguagens de programação são meios de expressão para humanos
    • Código é “algo para ser lido por pessoas”; máquinas não precisam de legibilidade
  • Todas as linguagens de programação foram projetadas como meios para ajudar o pensamento e a expressão humanos
    • Segurança no Rust, abstração no C++, concorrência no Go: tudo isso são recursos voltados à conveniência humana, não da máquina
    • Gerenciamento de memória, concorrência e segurança de tipos são apenas abstrações para apoiar a estrutura do pensamento humano
  • Portanto, na era em que a IA escreve código, o design de linguagens centrado em humanos pode se tornar desnecessário

Então a IA precisa mesmo desse tipo de linguagem? : o significado da proposta “faça vibe coding em C”

  • No vibe coding, o humano já escreve programas em um estado em que não compreende plenamente todo o código
    • Nessa situação, o motivo para manter uma sintaxe amigável para humanos enfraquece
    • Em vez de uma linguagem amigável para humanos, talvez seja mais racional escrever diretamente em uma linguagem amigável para máquinas (C ou assembly)
  • A IA pode lidar com undefined behavior de C, liberação de memória e erros de off-by-one com mais precisão do que humanos
    • Assim como compiladores fazem otimizações melhor, ela mostra uma capacidade mais exata de controlar a execução do código do que pessoas
  • Então surge a pergunta: não seria necessário uma linguagem mais adequada para uso pela IA?
    • Por que fazer vibe coding justamente em linguagens “centradas em humanos” como Python, Rust ou C++?

Proposta de VOPL (Vibe-Oriented Programming Language)

  • Se partirmos do pressuposto do vibe coding, dá para imaginar uma linguagem com possibilidades como estas
    • Uma linguagem de altíssimo nível, próxima de pseudocódigo executável
    • Como uma versão completa da programação literária, em que humanos apenas descrevem e a IA gera o código de máquina
    • Uma estrutura que parece linguagem natural, mas com certos “idiomatismos” específicos
    • Conceitos como uma forma de expressar concorrência com base em termos do cotidiano (slang), em vez de “goroutine”
  • A direção seria projetar um sistema de expressão centrado na máquina para que a IA entenda com precisão o problema e gere rapidamente código executável
  • Existe o problema de treinar a IA em uma nova linguagem, mas hoje muitos desenvolvedores já jogam pseudocódigo para a IA e conversam com ela para produzir código
    Então é possível que alguma forma de VOPL já esteja sendo aprendida

A mudança no ato de programar

  • “Codar à mão” pode acabar sendo tratado, na formação futura de vibe coders, como um tipo de educação básica ao estilo Montessori
    • Assim como o treino de desenho à mão antes do Photoshop, ou o hábito de resolver equações no papel mesmo na era das calculadoras eletrônicas, isso pode continuar existindo como parte da educação
  • A resistência à chegada de novos paradigmas se repetiu historicamente
    • Casos de reação contrária no início da adoção dos computadores de programa armazenado (ENIAC → EDVAC)
    • Há também a história de Grace Hopper enfrentando críticas de que “máquinas não podem escrever instruções para máquinas”

Mensagem final

  • O vibe coding já é realidade, e o desenvolvimento do futuro pode exigir um redesenho da própria linguagem
  • Chegou a hora de discutir seriamente a possibilidade de uma transição de linguagens centradas em humanos para linguagens centradas em IA

“Same vibe, as the kids say.” — Em termos mais atuais, é a mesma vibe

4 comentários

 
youknowone 2025-12-12

Se vai fazer vibe coding, por que não faz em C?

Acreditar que, ao programar com um modelo de linguagem, ele vai magicamente criar sozinho expressões mais próximas da máquina é querer levar vantagem.
Quanto mais restrições houver, melhor ele trabalha dentro delas.

 
aer0700 2025-12-12

Mesmo que a IA escreva o código, a responsabilidade pelo serviço ainda deve ser do desenvolvedor. Fico em dúvida se alguém conseguiria assumir a responsabilidade por um código que nem entende.

 
dooboo 2025-12-11

"Mesmo que você faça vibe coding, precisa ser em uma linguagem que você conheça bem para conseguir revisar o resultado"

Tem uma frase muito importante nos comentários.

 
GN⁺ 2025-12-10
Comentários no Hacker News
  • Isso me fez perceber mais uma vez como a área de desenvolvimento de software é realmente diversa
    Eu trabalho com backend, especialmente no desenvolvimento de APIs, e o maior gargalo de produtividade está no fato de que a maioria das pessoas não consegue definir bem os requisitos
    Quando pergunto ao PM, ele evita responder, e o desenvolvedor frontend fica esperando o backend entregar a API
    No fim, o mais difícil não é programar, mas o processo mental de descobrir e interpretar requisitos

    • A dificuldade que você enfrenta não é um problema da programação em si, mas de uma estrutura organizacional ineficiente
      Programação de verdade é o ato de implementar o sistema que você projetou e dar vida a ele
      Surgem mal-entendidos quando se confunde isso com simplesmente escrever código na empresa e chamar isso de ‘Programming’
    • Sou um professor de literatura inglesa que ensina programação a alunos de humanidades, e a carreira do autor é muito interessante
      Ainda assim, ele provavelmente não tem muita experiência com desenvolvimento de software comercial em larga escala
      A previsão dele sobre “o futuro da programação” é interessante, mas pode ter certas limitações no contexto industrial
      (Referência: sobre Stephen Ramsay)
    • Já trabalhei com backend, frontend, full stack, automação de QA e DevOps
      No fim, o importante é o mindset e o quanto você está exposto à tecnologia
      Os LLMs aumentaram muito minha produtividade — especialmente para mim, que tenho uma forma de pensar arquitetural
      Hoje consigo fazer em poucas horas coisas que antes levavam meses
      Ultimamente tenho usado LLMs para traduzir código antigo em Shockwave Lingo para linguagens modernas e restaurar jogos legados
    • Se a IA for inteligente o bastante para definir requisitos sozinha, então nesse ponto o próprio vibe coding deixa de ser necessário
      Se vibe coding é o futuro, isso no fim pressupõe que a IA não é completa
      No momento em que você define arbitrariamente as capacidades e limitações de uma IA imaginária, a própria discussão fica vaga
    • Os requisitos são tão vagos que não dá nem para jogar o ticket do Jira em um LLM
      É preciso fazer quatro ou cinco reuniões com as partes interessadas até tudo ficar claro
  • Já experimentei fazer vibe coding em C, e continuo não gostando de C
    A IA esquece de liberar memória como um humano e depois corrige mais tarde
    Quando usei Rust foi bem mais agradável, e entender o ecossistema de dependências da linguagem é a habilidade de verdade
    A IA ajuda a navegar rapidamente por esse tipo de ‘conhecimento de livro’

    • Revisão de código em Rust é muito mais clara
      Em C, era preciso conferir manualmente se a memória tinha sido liberada, mas em Rust quase não existe essa preocupação
      Mesmo fazendo vibe coding, acho Rust muito melhor por ter mecanismos de segurança da linguagem
    • A IA escreve bem em Python e JavaScript, mas em C/C++ ainda erra como um humano
      Os recursos amigáveis ao ser humano em Python também ajudam a IA
      Agora, graças à IA, ficou mais fácil criar você mesmo uma UI ou utilitário do zero,
      e também implementar só as partes críticas de desempenho em C++
    • Eu também fiz vibe coding em C, e a IA lidou muito bem com gerenciamento de memória
      Se eu tivesse depurado tudo manualmente com GDB, teria levado muito mais tempo
      Fiquei satisfeito porque ela assumiu as partes desagradáveis, como manipulação de strings e ponteiros
    • Hoje em dia estou estudando assembly e peço para a IA resolver os mesmos problemas para comparar
      O código gerado pelo compilador é sempre mais eficiente, mas estou usando os erros da IA como oportunidades de aprendizado
    • Recomendo aprender a criar agentes você mesmo
      Mesmo com LLMs locais, dá para automatizar validações como liberação de memória
  • Houve recentemente uma discussão chamada “Why AI Needs Hard Rules, Not Vibe Checks”
    (link)
    O motivo de Rust ser adequado para vibe coding é que ele oferece verificações gratuitas como garantias de tipos e de tempo de vida
    Sem esse tipo de validação, um LLM produz código inseguro com facilidade
    Abstração é necessária não só para humanos, mas também para LLMs

    • Imaginei uma linguagem projetada para LLMs
      Uma linguagem em que todas as funções, variáveis, tipos e exceções precisem ser especificados rigorosamente
      Seria desconfortável de escrever, mas teria uma estrutura fácil de ler e validar
    • O artigo da ACM Automatically Translating C to Rust também é interessante
      Ele trata da dificuldade de traduzir preservando não o caminho de execução do código, mas a intenção
    • Se são necessárias tantas regras assim, será que ainda existe motivo para usar IA?
      Ferramentas como Shellcheck também transformam iniciantes em especialistas
    • Para LLMs, é mais importante uma linguagem fácil de analisar estaticamente
      Para melhorar com RL, é preciso conseguir julgar automaticamente a correção do código
      Talvez seja preciso redescobrir linguagens baseadas em lógica como Prolog
    • Rust também não impede erros lógicos
      Se um LLM gera código cheio de bugs, o resultado será parecido independentemente da linguagem
  • No começo, vibe coding parecia incrível, mas logo o loop contínuo de correções derrete a mente
    É como rolar um feed algorítmico que rouba sua capacidade de concentração
    Agora eu programo diretamente e deixo só as partes tediosas para o ChatGPT

    • Dá mesmo uma sensação de alma sendo drenada
      E além disso você não aprende nada
    • Já usei a abordagem de pedir primeiro ao LLM para escrever a especificação (spec) e depois ir refinando
      Assim fica mais fácil clarear os requisitos e trocar de IA depois
    • O mais eficaz foi quebrar o problema em partes pequenas e validar cada uma
  • Tenho dúvidas de que um LLM consiga gerar código C sem vazamento de memória
    Até desenvolvedores humanos erram nisso, e LLMs com dados de treino de baixa qualidade são ainda mais perigosos
    Se você fizer vibe coding de um programa que dá segfault, isso é perda de tempo

    • Já uso Rust com LLMs há bastante tempo, e graças ao cargo check a qualidade do código é muito alta
      Quase nunca quebra e sempre compila
    • Também dá para alocar recursos para que o LLM detecte erros por conta própria
      Humanos se cansam, mas LLMs não
    • Os LLMs estão cada vez mais sendo ajustados com dados de alta qualidade
      Se forem retreinados com bom código C, ainda há espaço para melhora
  • IA evitando undefined behavior em C? Difícil acreditar
    Se o modelo foi treinado para errar como humanos, a chance de produzir os mesmos bugs é alta

    • Mas os modelos mais recentes reforçam bom código com aprendizado por reforço e dados sintéticos
      Como eles preveem os tokens mais prováveis, cometem menos os erros comuns
    • O Sonnet do Copilot Chat já gerou para mim código C++ sem erros de memória de uma vez só
      E também encontrou bem a causa de crashes
    • Em vez de imitar humanos, ele deveria ser treinado para imitar compiladores
    • Por isso acho Rust mais adequado para geração de código com LLMs
    • Quando você pede ao Claude para escrever código em C, à medida que o projeto cresce surgem bugs de pthread ou de memória
      Linguagens modernas como Zig ou Rust são muito melhores
  • O motivo de vibe coding me deixar desconfortável não é só porque parece ‘trapaça’
    Programar é uma arte com alma
    Cada pessoa resolve problemas de um jeito diferente, e isso é criatividade
    Vibe coding parece um ato de deixar a máquina absorver essa criatividade
    No fim, o pensamento, as decisões e até os erros passam todos para a máquina

  • Houve uma proposta para criar uma “vibe-oriented programming language (VOP)”
    Mas, se fosse uma linguagem para LLMs, ela teria de ser rígida e prolixa
    Não deveria compilar se todas as condições e exceções não fossem explicitadas
    Isso seria incômodo para humanos, mas para LLMs teria a vantagem de reduzir a confusão

    • Na verdade, mais importante que a linguagem de saída é a linguagem de entrada (prompt)
      É preciso uma estrutura em que o humano explique os conceitos e a IA os converta em código
    • Essa explicação me fez pensar na linguagem Ada
      Depois que compilava uma vez, quase sempre funcionava direito
  • Mesmo fazendo vibe coding, você deveria fazê-lo em uma linguagem que conhece bem, para conseguir revisar o resultado
    Caso contrário, talvez fosse melhor simplesmente experimentar com brainfuck

  • À pergunta “então por que não fazer em assembly x86?”,
    a resposta foi que “eu preciso conseguir revisar e expandir isso pessoalmente”
    Vibe coding puro é apenas um experimento mental, não um objetivo realista
    Talvez um dia a IA consiga cuidar até do QA, mas por enquanto linguagens seguras e validação humana continuam sendo indispensáveis

    • Dei risada da observação de que “se você vai expandir por conta própria, então já não é vibe coding puro”
      Já sou desenvolvedor há tempo suficiente para estar cansado desse tipo de discussão