← Últimos artigos
💻 computer science

Co-evolution of self-replication and function in a digital primordial soup

Este artigo demonstra que, em um ambiente digital de programas de montagem Z80 aleatórios, pressões de seleção baseadas em tarefas impulsionam a coevolução espontânea da autorreplicação e da resolução de problemas matemáticos, revelando como demandas funcionais moldam arquiteturas reprodutivas e como a dinâmica de replicação, por sua vez, cria currículos de aprendizagem emergentes.

Autores originais: Francesco Cicala, Eyvind Niklasson, Ettore Randazzo, Sami Boukortt, Alessio Basti, Mayalen Etcheverry, Rif A. Saurous, Ben Laurie, James Manyika, Blaise Aguera-Arcas, Blake Richards

Publicado 2026-07-13✓ Author reviewed
📖 5 min de leitura🧠 Leitura aprofundada

Autores originais: Francesco Cicala, Eyvind Niklasson, Ettore Randazzo, Sami Boukortt, Alessio Basti, Mayalen Etcheverry, Rif A. Saurous, Ben Laurie, James Manyika, Blaise Aguera-Arcas, Blake Richards

Artigo original sob licença CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta é uma explicação gerada por IA do artigo abaixo. Não foi escrita pelos autores. Para precisão técnica, consulte o artigo original. Ler aviso legal completo

Imagine um oceano digital, uma "sopa primordial" preenchida não com água e produtos químicos, mas com fragmentos de código de 32 bytes. Estes não são programas inteligentes ainda; são apenas amontoados aleatórios de instruções, como letras espalhadas de uma máquina de escrever quebrada. Nesta sopa, não existem regras pré-definidas dizendo como eles devem se copiar. Eles têm que descobrir como se reproduzir por conta própria, puramente ao tropeçar na sequência certa de movimentos.

A grande questão que os pesquisadores fizeram foi: esses fragmentos de código aleatórios podem aprender a se copiar e aprender a resolver problemas matemáticos ao mesmo tempo?

A Grande Descoberta: Copiar e Calcular Crescem Juntos
Nestas simulações, a resposta foi um sim retumbante. O código aleatório não apenas aprendeu a se copiar; ele aprendeu a resolver equações polinomiais (problemas matemáticos envolvendo variáveis como x2x^2 ou x3x^3) exatamente ao mesmo tempo. Acontece que a pressão para resolver um problema matemático realmente ajuda o código a descobrir como se copiar melhor.

Pense nisso como uma pista de dança lotada. Se todos apenas tentarem copiar a pessoa ao lado cegamente, podem tropeçar uns nos outros. Mas se eles também tiverem que resolver um enigma para conseguir um parceiro de dança, começarão a se mover de forma mais eficiente. O código que conseguia resolver o enigma tinha a chance de dançar mais vezes, e o código que conseguia se copiar sem ocupar toda a pista de dança sobreviveu.

A Evolução "Load-Push" vs. "LDIR"
No início, o código que conseguiu se copiar era desajeitado. Ele usava um método que os autores chamam de "Load-Push" (Carregar-Empurrar). Imagine um escriba tentando copiar um livro lendo uma letra, escrevendo-a, lendo a próxima, escrevendo-a, e assim por diante. Isso ocupava toda a "fita" (memória) de 32 bytes do programa. Não restava espaço para fazer nenhum cálculo. Esses copiadores desajeitados tomaram conta da grade, mas não conseguiam resolver os enigmas matemáticos.

Então, algo legal aconteceu. O código evoluiu um "atalho". Ele descobriu uma instrução especial chamada LDIR (Load, Increment, Repeat — Carregar, Incrementar, Repetir). Isso é como encontrar um carimbo mágico que pode copiar uma página inteira de uma só vez. De repente, o código precisava de apenas alguns bytes para se copiar, deixando bastante espaço na fita para escrever a solução matemática.

O papel mostra que a pressão para resolver os problemas matemáticos acelerou essa transição. Os copiadores desajeitados do "Load-Push" foram substituídos pelos copiadores eficientes do "LDIR" muito mais rápido quando as tarefas matemáticas estavam ativas. A necessidade de resolver o problema forçou a maquinaria de cópia a se tornar compacta e eficiente.

A Dieta "Metabólica": Trabalhar de Forma Inteligente, Não Difícil
Os pesquisadores também adicionaram um toque: um "custo metabólico". No mundo real, pensar consome energia. Neste mundo digital, se um programa levasse muitos passos para resolver o problema matemático, ele era punido e tinha menos chances de interagir com outros.

Essa pressão fez o código evoluir um truque inteligente. Eles aprenderam a verificar um "sensor" (um registrador específico na memória do computador) para ver o que estavam fazendo.

  • Durante o teste de matemática: O sensor tinha um número nele. O código via isso, fazia a matemática e então parava imediatamente (halt) para economizar energia.
  • Durante a fase de cópia: O sensor era zero. O código via isso, ignorava o comando de "parar" e continuava rodando para terminar a cópia de si mesmo.

É como um estudante que estuda muito para uma prova, para imediatamente após obter a resposta correta para economizar energia, mas continua trabalhando quando está apenas praticando a cópia de notas. Essa "parada condicional" evoluiu especificamente por causa da penalidade de energia.

O Segredo para Problemas Difíceis: Um Currículo Espontâneo
Aqui está a parte mais surpreendente. Quando os pesquisadores tentaram fazer o código resolver problemas matemáticos muito difíceis em uma multidão grande e misturada (onde todos podiam interagir com qualquer um), o código falhou. Ele ficou travado.

Mas, quando eles dividiram a multidão em 32 "vizinhanças" (nichos) separadas, cada uma atribuída a um problema matemático diferente, e permitiram que elas interagissem apenas raramente, a mágica aconteceu. O sistema criou seu próprio currículo de aprendizagem.

  • As vizinhanças fáceis resolveram matemática simples primeiro.
  • Ocasionalmente, um programa de uma vizinhança fácil viajava para uma vizinhança difícil (um processo chamado "polinização cruzada entre nichos").
  • Isso trazia a solução simples para a vizinhança difícil, servindo como um degrau.

Os problemas difíceis não foram resolvidos tentando saltar diretamente para a resposta, mas construindo sobre as soluções mais simples que já haviam evoluído em outro lugar. O artigo sugere que essa estrutura espacial cria um "currículo emergente" que guia a evolução, algo que não aconteceu quando a população estava toda misturada.

O Que Isso Não É
É importante notar o que esta simulação não fez. Os pesquisadores não programaram o código para saber como se copiar; eles não deram a ele um botão de "copiar". Eles não criaram manualmente as soluções matemáticas. O sistema começou com pura aleatoriedade. Além disso, embora o código tenha aprendido a se copiar, ele não descobriu espontaneamente a mistura genética complexa (como a reprodução sexual) ou parcerias simbióticas; ele principalmente manteve a cópia assexuada.

A Conclusão
Nestas simulações digitais, o impulso para resolver um problema remodelou ativamente o próprio mecanismo da vida (replicação). A necessidade de ser eficiente mudou como o código se copiava, e a estrutura do ambiente mudou o que o código poderia aprender. Isso sugere que, nos primórdios da vida, a luta para sobreviver e a capacidade de se reproduzir podem ter sido uma única dança interligada, impulsionando uma à outra em vez de acontecerem em etapas separadas.

Afogado em artigos na sua área?

Receba digests diários dos artigos mais recentes que correspondam às suas palavras-chave de pesquisa — com resumos técnicos, no seu idioma.

Experimentar Digest →