Tierra[0], written by Tom Ray[1], immediately comes to mind. I was captivated when I read about it, as a teenager, in Steven Levy's "Artificial Life"[2]. Having played Core War[3], the description of Tierra in Levy's book inspired me to play around with making a virtual machine in Turbo Pascal and trying my hand at making a pale and naive clone. It was a lot of fun, and arguably has influenced a lot of my thinking about the origin of biological life.
Yes and it also reminds me of one of my favorite books, Andreas Wagner's "Arrival Of the Fittest" and, connected, the Miller-Urey experiment of course.
Do you have any idea why the authors chose Z80 as the program language? I have seen other studies in the same spirit that use simpler toy languages like Brainfuck (https://arxiv.org/abs/2406.19108) and I wonder if you could get higher execution speed if you didn't have to execute so much emulator code.
The programs/genomes are extremely tiny. I would be very interested to see what kind of hardware is needed to scale this approach up. How long until we can feed in giant corpuses of text and evolve these little organisms to predict the next letter?
> Do you have any idea why the authors chose Z80 as the program language?
In that previous paper you cite (by the same group) they tested several substrates for spontaneous replication (BFF, Forth, SUBLEQ, and emulated real CPUs. Z80 and 8080 CPU exps confirmed the rise of self-replicators, with the Z80 notably exhibiting multiple waves of increasingly capable self-replicators.
And the instruction set seems quite appropriate for the experiment: Z80 has native block-copying instructions, while it doesn't have MUL, so the task of evaluating polynomials is somewhat more challenging
This paper is by the same team. My guess is that the BF code that evaluates polynomials is much much longer than the equivalent Z80 code. Thus it may not be expected to evolve in the space and time constraints of this experiment.
A small update here: another replication using a different CPU, the 6502. In this case, replicators emerge 100 times less frequently than in Z80, due to a lacking LDIR-like instruction
This is a cool finding; I did not know it was still an active area of study with all the work on ML and LLMs these days. I have done some amateur exploration of the space and the result does not surprise me: https://github.com/ehbar/evol
> We show that when random, non self-replicating programs are placed in an environment lacking any explicit fitness landscape, self-replicators tend to arise. We demonstrate how this occurs due to random interactions and self-modification, and can happen with and without background random mutations. We also show how increasingly complex dynamics continue to emerge following the rise of self-replicators.
Thanks for posting this, indeed that group at google has produced some interesting research in this space.
That paper was also discussed here back in the day: https://news.ycombinator.com/item?id=40820022
If evolution had access to TSMC's process technology, do you think it wouldn't leverage it? The signals in my AMD CPU propagate ~1,000,000x faster than the ones in my brain.
[0] https://tomray.me/tierra/whatis.html
[1] https://en.wikipedia.org/wiki/Thomas_S._Ray
[2] https://www.stevenlevy.com/artificial-life
[3] https://en.wikipedia.org/wiki/Core_War
https://www.goodreads.com/en/book/show/20821275-arrival-of-t...
https://en.wikipedia.org/wiki/Miller%E2%80%93Urey_experiment
Do you have any idea why the authors chose Z80 as the program language? I have seen other studies in the same spirit that use simpler toy languages like Brainfuck (https://arxiv.org/abs/2406.19108) and I wonder if you could get higher execution speed if you didn't have to execute so much emulator code.
The programs/genomes are extremely tiny. I would be very interested to see what kind of hardware is needed to scale this approach up. How long until we can feed in giant corpuses of text and evolve these little organisms to predict the next letter?
In that previous paper you cite (by the same group) they tested several substrates for spontaneous replication (BFF, Forth, SUBLEQ, and emulated real CPUs. Z80 and 8080 CPU exps confirmed the rise of self-replicators, with the Z80 notably exhibiting multiple waves of increasingly capable self-replicators.
And the instruction set seems quite appropriate for the experiment: Z80 has native block-copying instructions, while it doesn't have MUL, so the task of evaluating polynomials is somewhat more challenging
https://arxiv.org/abs/2406.19108
> We show that when random, non self-replicating programs are placed in an environment lacking any explicit fitness landscape, self-replicators tend to arise. We demonstrate how this occurs due to random interactions and self-modification, and can happen with and without background random mutations. We also show how increasingly complex dynamics continue to emerge following the rise of self-replicators.
Evolution also eventually gets frustrated and creates the brain, capable of in context learning.
Maybe we should take some notes from these massively parallel, shallow, and highly recurrent constructions.
Constrained evolutionary algorithms may have some promise.