A tolice de "programação em linguagem natural" (1978)
Interfaces em linguagem natural para codificação estão reacendendo um sonho de longa data que Edsger Dijkstra argumentou ser fundamentalmente equivocado em 1978. Os comentadores contrastam sua ênfase na precisão das linguagens formais com os modelos de linguagem de grande porte de hoje, observando que a IA agora consegue transformar pedidos vagos em inglês em código funcional, mas ainda herda a ambiguidade da linguagem natural, a falta de garantias e a dependência de supervisão humana. Muitos veem os LLMs menos como “compiladores de linguagem natural” e mais como desenvolvedores juniores estocásticos ou agentes, úteis para acelerar o trabalho e elevar o nível de abstração, mas não para substituir linguagens de programação tradicionais, especificações ou engenharia de software cuidadosa.
Escopo da “Programação em Linguagem Natural”
- Muitos argumentam que o ensaio ainda se aplica: a linguagem natural é informal, ambígua e inadequada como representação primária de programas.
- Vários კომენტadores enfatizam que a “programação em linguagem natural” de hoje é, na verdade, uma delegação em linguagem natural para um agente que então escreve código convencional.
- Uma minoria argumenta que a crítica original está “superada” porque a linguagem natural agora serve como mais uma camada de abstração que é compilada para linguagens formais.
LLMs: Compiladores, Desenvolvedores ou Algo Mais?
- Visão forte: LLMs não substituem compiladores; eles substituem (ou ampliam) desenvolvedores de software que traduzem especificações informais em código.
- Outros veem LLMs como um novo tipo de interpretador para uma linguagem subespecificada (prompts), ou seja, uma forma de programação, só que com semântica probabilística.
- Debate sobre se prompting é realmente “programação” ou apenas dar instruções a outra entidade semelhante a um programador.
Determinismo, Semântica e Confiabilidade
- Vários comentários distinguem pipelines determinísticos de compiladores de saídas estocásticas e sensíveis ao contexto de LLMs.
- Alguns rebatem que humanos também são não determinísticos na prática, mas outros insistem que estocasticidade é uma noção diferente e mais forte do que mera variação.
- Há consenso de que compiladores e sistemas de tipos ricos continuam essenciais para garantias semânticas, testes e verificações de segurança em código gerado por LLMs.
Especificações, Reuniões e Entendimento de Sistemas
- Vários relatos destacam que o trabalho real depende de esclarecer especificações vagas em linguagem natural, seja por humanos ou por agentes.
- Usuários de negócios frequentemente têm dificuldade até com configuração em linguagem natural; “pensamento sistêmico” e habilidade de especificação ainda são raros e cruciais.
- Agentes carecem de contexto do mundo real (infraestrutura, restrições organizacionais, responsabilidade), limitando a automação total do papel de analista/engenheiro.
Código, Prompts e Fonte da Verdade
- Muitos insistem que a linguagem no controle de versão (Java/Python/etc.) determina em que o sistema é “programado”, independentemente de como esse código foi produzido.
- Alguns preveem que prompts ou conversas acabarão sendo tratados como artefatos primários, levantando questões de manutenção e de licenciamento de código aberto.
- A saída de LLMs é comparada a qualquer gerador de código pontual: manutenção e reprodutibilidade continuam sendo problemas.
Experiências Empíricas e Exceções de Nicho
- Usuários relatam sucesso fazendo vibe coding de aplicativos via agentes, mas observam requisitos não funcionais perdidos, detalhes de infraestrutura e bugs sutis.
- Inform7 e redação jurídica são citados como exemplos de linguagens quase naturais: legíveis, mas ainda altamente restritas, o que ressalta o quão difícil é a verdadeira programação em linguagem natural.