злой чечен ползет на берег - [entries|archive|friends|userinfo]
aculeata

[ website | Барсук, детский журнал ]
[ userinfo | ljr userinfo ]
[ archive | journal archive ]

[Oct. 26th, 2019|04:00 am]
Previous Entry Add to Memories Tell A Friend Next Entry
Постановка вопроса не моя, но ссылаться на Шеня не буду,
потому что легко могу переврать, что конкретно его
беспокоит. Впрочем, в любом случае на сей счет
прохаживается не он один.

Если немного изменить программу, она не будет работать.
С крошечной вероятностью она пройдет стадию компиляции,
но зациклится или сделает что-нибудь неосмысленное.
Как же получается, что мутации в генетическом коде
порождают другого зверя, но тоже жизнеспособного?
(По ряду причин, которые, возможно, обозначу ниже,
я не хочу говорить об этом в терминах эволюционного
ландшафта.)

Предположим, что компилятор действует так: натыкаясь
на то, что он считает ошибкой, соответствующую строку
комментирует. Тогда программа на выходе будет короткой,
но исполняемой, или просто будет закомментирована целиком.
Если немного усложнить компилятор и разрешить ему
исправлять строку на ближайшую в какой-нибудь заранее
заданной метрике грамматически верную -- на выходе
будут частые сообщения об ошибке, зацикливание, но
что-то будет. Потребуем еще, чтобы всякая программа
содержала блок, создающий самозапускающиеся копии ее
текста на диске.

Исходно единственный мыслимый ресурс здесь ресурс
памяти, и он ограничен. Если какая-либо программа
умеет стирать другие программы, она быстро заполнит
все пространство. Если их несколько, они будут
конкурировать между собой. Если программа может
защитить себя от стирания (например, посредством
прикрепления к стирающей программе), у нее появится
шанс, и т. д. Если стирающая программа сможет
инкорпорировать блок, который улучшает ее эффективность
в деле стирания чужих и производства своих копий,
ей повезло.

Нужен язык, на котором несколько самых простых функций
отделены друг от друга несколькими опечатками. Тогда
много разных случайных опечаток будут приводить к одному
и тому же варианту после коррекции. Остальные --
сравнительно далекие "аттракторы", осмысленно исполняемые --
могут подождать своей очереди.

Разумеется, все это полная ерунда, в искусстве
программирования я сильна примерно столько же, сколько
в биологии (да и главная проблема, проблема возникновения
жизни, есть как раз история отделения программы и
многоуровневого компилятора), но все же вопрос
"непрерывности кода жизни" -- вероятно, именно в силу
некомпетентности -- мне представляется переоцененным.

А парадигма ландшафта, конечно, наглядная, но не очень
рабочей кажется, потому что (мне) непонятно, как учесть
то обстоятельство, что движение по ландшафту и простое
его заселение меняет ландшафт вплоть до катастроф
уровня кислородной. [Эволюционный ландшафт изображает
мутации, способствующие выживанию, как движение вверх,
нейтральные по хребту ии плато, негативные -- вниз,
в затопленные области, где смерть и запустение. Но
затопленные области могут временно пересыхать,
горизонтальный обмен генами наводить мосты и т. п.]
LinkLeave a comment

Comments:
[User Picture]
From:[info]wieiner_
Date:October 26th, 2019 - 04:36 pm
(Link)
круто!
нет телихтуальных сил сейчас
пейсать что-то осмысленное (бо отмывал кабинку всю субботу)

поэтому просто круто! И вот, да, правильно все!
(еще утром читал ваш псто)
Компиляторы и компиляторостроители рулят!
Всего и побольше!
From:[info]mngr
Date:October 28th, 2019 - 06:09 am
(Link)
Если вопрос в том, могут ли вообще эволюционировать компьютерные программы
(т.е. потому что результат каждого действия зависит от предыдущего, и если одно заменить,
то вроде как ничего уже не должно работать) -- генетическое программирование этим ведь
успешно занимается уже много лет.
Конечно, программы в GP представлены не в виде исходного кода на универсальном языке,
а в виде деревьев или графов или набора стеков (язык Push), и генетические операторы
определены таким образом, что невозможно получить невалидную программу в результате
мутации или скрещивания. И программы обычно не дерутся напрямую за ресурсы компьютера.

Или это не совсем то, чего требуют биологи?
[User Picture]
From:[info]aculeata
Date:October 28th, 2019 - 06:22 am
(Link)
Да биологи-то требуют разных вещей, но в данном
случае вроде как обсуждается "загадка непрерывного
кода жизни". В результате биологической мутации
как раз возможно получить невалидную программу.
Я тут совсем не специалист (мне только что дали
кучу ссылок на Andreas Wagner, буду читать).
Просто принципы у теории эволюции минималистские:
репликаторы соревнуются за ресурсы и усложняются,
нет ничего, кроме конкуренции, самоорганизации
и иногда внешних, а иногда вызванных на свою голову
теми же репликаторами катастроф. Язык программирования,
если угодно, создается в результате тех же процессов.
А у эволюционирующих программ, видимо, пока все не так.
[User Picture]
From:[info]tomcatkins
Date:November 14th, 2019 - 11:48 am
(Link)
хотел спросить, но забыл тогда

какой биологический процесс имеется в виду под компиляцией?
[User Picture]
From:[info]aculeata
Date:November 16th, 2019 - 08:34 am
(Link)
репарация днк