Concurso premia códigos em C tão criativos quanto impossíveis de entender
- Cyber Security Brazil
- há 4 horas
- 5 min de leitura

A 29ª edição do International Obfuscated C Code Contest, conhecido como IOCCC, divulgou os vencedores da competição de 2025 e voltou a mostrar por que a linguagem C ainda é capaz de produzir alguns dos programas mais engenhosos, ilegíveis e surpreendentes da computação.
Criado originalmente em 1984, o IOCCC premia códigos escritos em C que abusam da criatividade, da compactação extrema, da formatação visual, de truques de compilação e de técnicas deliberadamente difíceis de entender. A proposta não é escrever código limpo, seguro ou recomendado para produção, mas explorar os limites da linguagem e do compilador de forma artística, técnica e muitas vezes absurda.
A edição anterior havia marcado o retorno do concurso após um hiato de quatro anos. Agora, com os resultados de 2025, a competição mostra fôlego renovado. A etapa de julgamento foi concluída algumas semanas antes da publicação, mas os vídeos de demonstração precisaram ser editados em clipes individuais para cada vencedor, já que a gravação completa no YouTube tem quase três horas.
Nesta edição, foram 23 entradas vencedoras. Três participantes se destacaram com uma espécie de “hat-trick” triplo: Yusuke Endoh, Nick Craig-Wood e Don Yang venceram em três categorias cada. Como é tradição no IOCCC, os juízes Landon Curt Noll e Leonid A. Broukhis criaram categorias específicas para cada programa vencedor, com títulos que muitas vezes só fazem sentido depois de ver o código e sua execução.
Um dos destaques mais curiosos foi a entrada de Adrian Cable, premiada na categoria “Best imaginary emulator”. O projeto implementa um computador Subleq em apenas 366 bytes de C, com uso da biblioteca SDL para exibir gráficos. Mesmo com essa dependência externa, o tamanho e a funcionalidade do programa impressionam.
O Subleq é uma arquitetura do tipo One Instruction Set Computer, ou OISC. A ideia leva ao extremo o conceito de RISC, arquitetura de conjunto reduzido de instruções: em vez de poucas instruções, há apenas uma. Nesse caso, a instrução é “subtract and branch if less than or equal to zero”, ou subtrair e desviar se o resultado for menor ou igual a zero.
O interesse pelo Subleq não é apenas acadêmico. A arquitetura aparece em iniciativas como a Eternal Software Initiative, que busca preservar software para o futuro por meio de uma arquitetura projetada para ser extremamente simples de emular. A lógica é que, quando o hardware original deixar de existir, ainda será possível reconstruir ambientes executáveis a partir de uma base mínima.
A Eternal Software Initiative já implementou o Subleq em software, criou um compilador C voltado para essa arquitetura usando LLVM e portou o Linux para ela, incluindo bibliotecas de runtime C e C++. A partir daí, um emulador simples pode servir como ponto de partida para executar software em arquiteturas futuras ou desconhecidas.
A versão vencedora do IOCCC condensa essa ideia em um código de apenas nove linhas. A demonstração mostra o programa gerando um conjunto de Mandelbrot colorido, rodando um jogo de Pong e, depois, executando Linux e alguns aplicativos. Uma versão um pouco mais legível do mesmo código ainda tem apenas 91 linhas.
Nick Craig-Wood também teve forte presença na edição. Ele venceu a categoria “Best real emulator” com um emulador funcional do Nintendo Game Boy original em apenas 66 linhas de C, formatado visualmente para se parecer com o console. Outra entrada sua foi premiada como “Best fractional emulator”, combinando um emulador de Commodore 64 com a linguagem FRACTRAN, criada por John Conway.
Craig-Wood também ganhou a categoria “Best use of Unicode” com uma implementação de Forth. Dentro do código C, há um programa em Forth capaz de gerar uma animação de zoom em Mandelbrot. O resultado reforça uma característica comum no IOCCC: muitos programas funcionam simultaneamente como código, arte visual, quebra-cabeça técnico e demonstração matemática.
Yusuke Endoh, um dos nomes mais conhecidos do concurso, também venceu três vezes. Sua primeira entrada premiada em 2025 foi um simulador de tubo Nixie. Esses tubos eram usados em calculadoras eletrônicas antigas e outros equipamentos para exibir números por meio de filamentos em forma de dígitos, que acendiam individualmente.
No caso de Endoh, o código-fonte foi formatado para se parecer com o objeto simulado. Mais do que isso, o próprio programa destaca os dígitos dentro do seu código em cores para simular a saída de um tubo Nixie. Ou seja, o código-fonte também funciona como mecanismo visual de exibição.
A segunda entrada de Endoh gera figuras de Lichtenberg em pouquíssimo espaço. Essas figuras são padrões ramificados associados a descargas elétricas, com aparência semelhante a raios ou nervuras. Já sua terceira entrada repetidamente altera o próprio código, reconstrói a si mesma e gera como saída o código-fonte da ferramenta de diff usada no processo. A vitória marcou o 23º prêmio de Endoh no IOCCC, um recorde para o programador japonês.
Outro destaque foi Tomoya Ishida, vencedor da categoria “Most soothing”. Em apenas 36 linhas de código contendo a mensagem “RELAX”, o programa gera um arquivo WAV com uma música ambiente de cinco minutos, incluindo sons sintéticos de praia. Em uma competição conhecida por confundir leitores e abusar do compilador, a entrada se destacou justamente pelo efeito relaxante.
Jonah Uellenberg venceu com uma das ideias mais inventivas da edição: um jogo de Pong que também é um quine. Um quine é um programa que, quando executado, imprime seu próprio código-fonte. Essa já é uma tarefa difícil, mas o programa de Uellenberg vai além.
O código contém, em seus espaços em branco, uma espécie de tela de Pong, com raquetes e bola. Quando compilado e executado, o programa aceita uma tecla para mover uma das raquetes e então imprime uma nova versão de seu próprio código, com a tela atualizada. Para jogar, é preciso recompilar a saída gerada a cada rodada. Cada frame do jogo é uma nova versão do próprio código-fonte.
Entre as entradas mais convencionais, embora ainda extremamente compactas, está um roguelike em apenas 54 linhas de código, premiado como “Most likely to teleport”. Para fãs de Doctor Who, um participante identificado como “jingp49”, de Taiwan, criou uma entrada em formato de TARDIS que gera uma animação ASCII inspirada na abertura da série.
A edição também trouxe programas matemáticos e jogos diminutos. Gil Dogon venceu a categoria “Consistently constant” com um programa que imprime muitos dígitos da constante de Euler usando apenas uma variável, chamada naturalmente de “e”. Como bônus, tanto os juízes quanto o participante explicaram o programa em versos.
Outro vencedor, Anthony C. Howe, recebeu o prêmio “Most likely to invade” por um jogo extremamente pequeno e jogável, lembrando certos games de PC dos anos 1980 feitos para parecerem inocentes o suficiente para serem jogados no trabalho.
O IOCCC também mantém uma distinção importante: ele não deve ser confundido com o Underhanded C Contest. Enquanto o IOCCC celebra truques de programação, humor técnico e criatividade inofensiva, o Underhanded C Contest explorava código enganoso com intenções mais traiçoeiras, como esconder comportamentos maliciosos ou vulnerabilidades em implementações aparentemente normais.
Apesar do tom divertido, o concurso ajuda a lembrar a complexidade e a flexibilidade da linguagem C. A mesma liberdade que permite criar emuladores, jogos, sintetizadores e programas autorreferenciais em poucas linhas também pode gerar código difícil de auditar, revisar e manter. No contexto do IOCCC, isso é arte. Em sistemas de produção, porém, seria um pesadelo para segurança, manutenção e confiabilidade.


