O pitch
Thomas Habets argumenta que a linguagem de programação C é fundamentalmente inválida porque a sua especificação formal define quase toda operação complexa como comportamento indefinido (Undefined Behavior, UB). Isso provocou um debate intenso no Hacker News, enquanto os desenvolvedores encaram o fato de que escrever C “formalmente correto” é quase impossível sob os padrões modernos.
Por dentro
O padrão ISO C23 (ISO/IEC 9899:2024) endureceu as restrições e transformou padrões antes comuns, como realloc(ptr, 0), em comportamento indefinido formal (fonte: i-programmer.info). Essa mudança significa que bases de código legadas que migram para o C23 ou para o futuro C2y enfrentam falhas silenciosas à medida que os compiladores ficam mais agressivos.
O cast de ponteiros desalinhados agora é classificado como UB mesmo que não ocorra nenhum acesso à memória, uma nuance que muitas vezes escapa aos desenvolvedores que partem das premissas mais antigas do C11 ou do C17 (fonte: HN). Além disso, leituras volatile são classificadas como efeitos colaterais pela seção 5.1.2.4.1, o que gera UB surpreendente em expressões não sequenciadas (fonte: HN).
Compiladores modernos como o GCC 16 e o Clang 22 exploram essas definições de UB para otimizações extremas.
As ferramentas atuais baseadas em raciocínio, como o Claude 4.5 Opus e o GPT-5, mudaram o cenário de segurança ao identificar esses bugs profundos de UB que os analisadores estáticos tradicionais não detectam (fonte: devops.com). Empresas como Notion, DuckDuckGo e Quora usam hoje a suíte Claude Code Security para auditar esses cenários específicos.
Ver o perfil do Claude
Ainda não sabemos como o comitê WG14 vai responder ao artigo de Habets.
Nossa opinião
Habets está tecnicamente certo, mas a conclusão dele é previsivelmente sensacionalista para um engenheiro do Google. Os sistemas de produção nunca sobreviveram com C puro, em conformidade estrita com a ISO; eles sobrevivem graças ao comportamento definido pela implementação e a flags específicas do GCC/Clang que anulam as armadilhas mais pedantes do padrão. Se você está começando um projeto novo em 2026 e ainda escolhe C em vez de uma alternativa com segurança de memória, está basicamente assinando um contrato para passar os fins de semana depurando a proveniência de ponteiros.