В обоих случаях, если репликатор подсадить в суп, он быстро распространяется. Но при рандомной инициализации суп остаётся равномерно рандомным и после миллиардов инструкций. Динамики изменения распределения строк не наблюдается, само-репликаторы не возникают (или авторы не дождались). Возможно, дело таки в длине -- в других языках репликаторы были сильно короче. Возможно, пример SUBLEQ является хорошей отправной точкой для выработки теории, предсказывающей возникновение такой жизни. Авторы также проверили на реальном живом языке, взяли ассемблер Z80 (когда-то давно я тоже на нём писал, это был мой первый язык ассемблера, и практически первый язык программирования). Здесь изучали двумерную сетку 16-байтовых программ, инициализированных случайно. В каждый момент случайно выбирали пару программ A и B, конкатенировали в случайном порядке, сбрасывали эмулятор Z80 и запускали 256 шагов выполнения инструкций. Лента с объединённой программой использовалась как память и все операции работы с памятью выполнялись по модулю длины этой ленты (32). Плюс фоновые мутации для рандомных байт на сетке. Даже такой простой вариант дал жизнь довольно сложному поведению и появлению разных поколений репликаторов. Некоторые образовывали симбиотические экосистемы, другие боролись за доминирование. Разные репликаторы или коллективы несколько раз захватывали бульон. Ранние репликаторы использовали механизм копирования через стек (потому что при старте стек устанавливается на конец адресного пространства, что даёт простой способ ленте A писать на ленту B). Со временем такие репликаторы замещались репликаторами, копирующими память с помощью специальных инструкций LDIR/LDDR (из моей остаточной памяти про программирование под Z80 я ожидал, что инструкция LDIR окажется полезной для такого дела, и судя по картинке всё так). Авторы сделали отдельную репу для таких восьмибитных экспериментов на z80. Ещё попробовали ассемблер процессора 8080 (я, кстати, упустил, что Z80 был создан выходцами из Интела, сделавшими процессор 8080, а также самый первый Intel 4004) в варианте с длинной лентой. Там рулили репликаторы из повторяющихся двух байт, без циклов. Например, последовательность байт 01 c5 01 c5 выполняет две команды LXI BC, 01c5 (загрузить в регистр BC слово 01c5), PUSH BC (и затем отправить его в стек -- то есть, как я понимаю, в итоге на ленту B). Репликаторы такого типа работали очень хорошо, поэтому, видимо, более сложные с циклами не возникли (ну или снова не дождались). --- Такие дела. Не знаю, говорит ли это что-нибудь о биологии, процессы всё же сильно разные. Но всё равно прикольная работа. Какие там могут быть следующие качественные переходы в таком супе, интересно? Вообще за работами Blaise Agüera y Arcas следить интересно, он в последние пару лет много говорит и пишет про темы вокруг жизни, вычислений и интеллекта. Вот совсем недавняя его колонка в Nature, “What is the future of intelligence? The answer could lie in the story of its evolution”. В принципе каких-то супер новых вещей там может и нет, многие эти идеи уже давно витают вокруг и высказываются разными людьми. Но ценности это не уменьшает, Эйнштейн тоже не на пустом месте свои открытия делал. Здесь Blaise Agüera y Arcas пишет, например, про Computogenesis и вычислительную природу, но не в смысле панпсихизма или чего-то такого, а в смысле, что живые клетки и далее организмы последовательно осваивали вычисления для разных своих нужд, от поддержания гомеостаза, репродукции и до предсказания действий других. А с репродукцией уже и тема про универсальный конструктор где-то рядом (помните Дойча и Марлето?). В этом свете первичный бульон Земли с разными конкурирующими химическими реакциями, протоклетками и прочим может и не так сильно уже отличается от первичного бульона программ, а появление длинных молекул типа РНК и ДНК идейно похоже на эксперименты текущей работы с длинными лентами.