А по прошествии 20 поколений она была такой:
MELDINLS IT ISWPRKE Z WECSEL
К этому времени предубежденному взгляду уже начинает мерещиться сходство с нужной фразой. Спустя 30 поколений никаких сомнений не остается:
METHINGS IT ISWLIKE B WECSEL
Сороковое поколение отделяет от цели всего одна буква:
METHINKS IT IS LIKE I WEASEL
Цель была окончательно достигнута в 43-м поколении. Второй заход компьютер начал с фразы:
Y YVMQKZPFJXWVHGLAWFVCHQXYOPY, —
прошел через следующие промежуточные стадии (я снова привожу только каждое десятое поколение):
Y YVMQKSPFTXWSHLIKEFV HQYSPY
YETHINKSPITXISHLIKEFA WQYSEY
METHINKS IT ISSLIKE A WEFSEY
METHINKS IT ISBLIKE A WEASES
METHINKS IT ISJLIKE A WEASEO
METHINKS IT IS LIKE A WEASEP —
и достиг конечной фразы в поколении 64. В третий раз он начал так:
GEWRGZRPBCTPGQMCKHFDBGW ZCCF —
и пришел к METHINKS IT IS LIKE A WEASEL за 41 поколение направленной “селекции”.
Какое именно время потребовалось компьютеру для достижения цели – не имеет значения. Если вам интересно, в первый раз он справился с задачей, пока я выходил пообедать. То есть где-то за полчаса. (Читатели, увлекающиеся компьютерами, сочтут это неоправданно долгим. Причина в том, что программа была написана на бейсике – компьютерной разновидности детского лепета. Когда я переписал ее на паскале, выполнение заняло 11 секунд.) В таких делах компьютеры несколько проворнее обезьян, но на самом деле разница не принципиальна. Что действительно существенно, так это разница между сроком, потребовавшимся для накапливающего отбора, и тем промежутком времени, который потребовался бы для достижения той же самой цели тому же самому компьютеру, работающему точно с такой же скоростью, но методом одноступенчатого отбора: около миллиона миллионов миллионов миллионов миллионов лет. Это более чем в миллион миллионов миллионов раз больше сегодняшнего возраста Вселенной. Лучше даже будет сказать так: по сравнению с тем временем, которое понадобится обезьяне или компьютеру, чтобы случайно набрать нужную фразу, нынешний возраст вселенной – пренебрежимо малая величина, столь малая, что наверняка попадает в пределы погрешности, допускаемой нами в наших приблизительных вычислениях. А компьютеру, работающему тоже наугад, но при ограничивающем условии накапливающего отбора, для выполнения той же задачи потребуется срок, вполне доступный простому человеческому пониманию: от 11 секунд до времени, необходимого, чтобы пообедать.
Итак, отличие накапливающего отбора (когда любое усовершенствование, каким бы незначительным оно ни было, служит фундаментом для дальнейшего строительства) от одноступенчатого (когда каждая новая “попытка” начинается “с чистого листа”) очень велико. Если бы эволюционный прогресс опирался на одноступенчатый отбор, это вряд ли привело бы хоть к чему-нибудь. Если бы, однако, слепым силам природы удалось каким угодно образом создать условия, благоприятные для накапливающего отбора, то последствия оказались бы необыкновенными и изумительными. Собственно говоря, именно это произошло на нашей планете, а сами мы принадлежим к числу самых недавних из таких последствий – и едва ли не самых необыкновенных и изумительных.
Забавно, что расчеты наподобие того, который я привел для “гемоглобинового числа”, все еще используются в качестве аргументов против дарвиновской теории. По-видимому, те, кто так делает, будучи зачастую квалифицированными специалистами в своей области – астрономами или кем угодно еще, искренне думают, что дарвинизм объясняет устройство живых организмов одной лишь случайностью, пресловутым “одноступенчатым отбором”. Убеждение, будто дарвиновская эволюция “случайна”, не просто неверно. Оно диаметрально противоположно истине. В дарвиновском рецепте используется лишь крупинка случайности, а основной ингредиент – это накапливающий отбор, который по сути своей неслучаен.
Облака не способны участвовать в процессе накапливающего отбора. Не существует такого механизма, посредством которого они могли бы производить выводки подобных себе дочерних облаков. Если бы такой механизм был, если бы облако, похожее на хорька или на верблюда, могло стать родоначальником клана облаков примерно той же формы, тогда у накапливающего отбора появился бы шанс приняться за дело. Разумеется, облака порой распадаются на части и образуют “дочерние” облака, но для накапливающего отбора этого недостаточно. Необходимо также, чтобы “потомство” любого отдельно взятого облака было похоже на своего “родителя” больше, чем на любого из более далеких “предков” в “популяции”. Некоторым из философов, заинтересовавшихся в последние годы теорией естественного отбора, этот ключевой момент явно непонятен. Далее нужно, чтобы вероятность выживания облака и производства им собственных копий как-то зависела от его формы. Возможно, в некоей далекой галактике такие условия возникли и по прошествии достаточного количества миллионов лет дали начало воздушной, бестелесной форме жизни. Из этого мог бы выйти неплохой научно-фантастический роман – под названием, скажем, “Белое облачко”, – но для наших нынешних целей компьютерная модель с обезьяной и Шекспиром более наглядна.
Хотя наша модель “обезьяна/Шекспир” и годится для демонстрации отличий одноступенчатого отбора от накапливающего, в некоторых важных отношениях она неудачна и может ввести в заблуж дение. Например, в каждом поколении направленной “селекции” мутантное “потомство” оценивалось по критерию соответствия далекому идеалу – фразе METHINKS IT IS LIKE A WEASEL. В жизни же все иначе. У эволюции нет долгосрочных стремлений. Сколько бы человеческое тщеславие ни лелеяло абсурдную идею, будто наш вид и есть конечная цель творения, не существует ни отдаленной цели, ни окончательного совершенства, которое могло бы послужить мерилом для отбора. В реальной жизни критерии для отбора всегда краткосрочны – это либо простое выживание, либо, в более общем смысле, репродуктивный успех. Если по прошествии геологических эпох свершается то, что задним числом выглядит как движение к некоей далекой цели, это всегда побочный результат сиюминутного отбора, действовавшего в течение многих поколений. “Часовщик”, коим является накапливающий естественный отбор, не видит будущего и не ставит перед собой никаких долгосрочных задач.
Принимая это во внимание, мы можем изменить нашу компьютерную модель. Также мы можем приблизить ее к реальности и в других аспектах. Буквы и слова – это проявления сугубо человеческой природы, так что лучше пускай наш компьютер рисует картинки. Возможно, нам даже удастся увидеть, как изображения на экране благодаря накапливающему отбору мутантных форм приобретают очертания, напоминающие животных. Мы не будем предрешать исход дела, вводя в программу изображения животных в качестве стартового материала. Нам хотелось бы, чтобы они возникли сами и исключительно в результате накапливающего отбора случайных мутаций.
В реальной жизни внешний вид животного возникает в процессе эмбрионального развития. Эволюция происходит потому, что в ряду сменяющих друг друга поколений эмбриональное развитие слегка варьирует. Эти небольшие отклонения появляются вследствие изменений в генах, контролирующих развитие (мутации – та самая необходимая крупица случайности, о которой я упоминал). Следовательно, в нашей компьютерной модели должно быть что-то, эквивалентное эмбриональному развитию, и что-то, эквивалентное способным к мутированию генам. Существует немало способов сделать так, чтобы компьютерная модель удовлетворяла этим требованиям. Я выбрал один из них и написал соответствующую программу. А теперь я расскажу про эту компьютерную модель, так как считаю ее очень показательной. Если вы ничего не знаете о компьютерах, просто запомните, что это такие машины, которые делают в точности то, что им говоришь, а результат нередко оказывается неожиданным. Перечень инструкций, отдаваемых компьютеру, называется программой (я пишу program, как это принято в Америке и как рекомендует Оксфордский словарь; альтернативное написание programme, распространенное в Британии, кажется мне офранцуженным и неестественным).
Развитие эмбриона – процесс слишком замысловатый, чтобы можно было реалистично сымитировать его на маленьком компьютере. Поэтому нужно придумать некий упрощенный аналог: найти такое простое правило вычерчивания рисунков, которому компьютер мог бы легко подчиняться и которое могло бы варьировать под влиянием “генов”. Какое же правило мы выберем? В учебниках по информатике часто демонстрируются возможности так называемого рекурсивного программирования на примере простого алгоритма роста деревьев. Компьютер начинает с того, что чертит одиночную вертикальную линию. Затем эта линия разветвляется на две. Затем каждая из получившихся ветвей разделяется на две ветви второго порядка. Затем каждая из этих новых ветвей разделяется на ветви третьего порядка и т. д. Такое программирование называется рекурсивным, потому что в каждой точке всего растущего дерева применяется одно и то же правило (в данном случае правило ветвления). Каким бы большим дерево ни вырастало, каждая его веточка разделяется снова и снова в соответствии все с тем же правилом.
“Глубиной” рекурсии называется такое число веточек n-го порядка, которому позволяется вырасти, прежде чем процесс будет остановлен. На рисунке 2 показано, что будет, если задать компьютеру один и тот же алгоритм черчения, но с разными значениями глубины рекурсии. При высоких степенях рекурсии получается довольно запутанный узор, однако, как ясно видно из рис. 2, достигается он за счет того же самого простейшего правила ветвления. Несомненно, это именно то, что происходит и у настоящих деревьев. Система ветвей дуба или яблони выглядит сложной, но в действительности таковой не является. Правило, лежащее в основе процесса ветвления, элементарно. Просто оно снова и снова применяется в каждой растущей верхушке каждой веточки: ветви дают начало ветвям второго порядка, каждая из которых, в свою очередь, ветвям третьего порядка и так далее. Вот почему все дерево становится в итоге большим и ветвистым.
Рекурсивная бифуркация является также хорошей метафорой эмбрионального развития как растений, так и животных. Я не хочу сказать, будто зародыши животных похожи на ветвящиеся деревья. Они на них не похожи. Но любой эмбрион растет благодаря делению клеток. Каждая клетка всегда делится на две дочерние. А гены в конечном счете всегда осуществляют свои воздействия на организм посредством локального влияния на клетки, которые раздваиваются и раздваиваются. Гены животного ни в коем случае не являются грандиозным чертежом, подробным планом строения целого организма. Как мы дальше увидим, они похожи скорее на рецепт, нежели на чертеж, и более того, на рецепт, которому следует не весь развивающийся зародыш, а каждая клетка или каждое небольшое скопление делящихся клеток. Я не отрицаю того, что любой эмбрион, а впоследствии и взрослая особь имеет некое целостное строение. Но возникает это крупномасштабное строение за счет множества мелких локальных воздействий на клеточном уровне, происходящих повсюду в развивающемся организме. И в первую очередь местные воздействия сказываются на удвоении клеток – то есть на некоей разновидности ветвления. Именно регулируя такие локальные события, гены в конечном итоге влияют и на строение взрослого организма.
Итак, простое правило ветвления выглядит как многообещающий аналог эмбрионального развития. Что ж, превращаем это правило в небольшой компьютерный алгоритм, которому даем название РАЗВИТИЕ, чтобы затем внедрить его в более масштабную программу ЭВОЛЮЦИЯ[2 - См.: Dawkins, R. (1989) The evolution of evolvability. In C. Langton (ed.) Artificial Life. New York: Addison-Wesley.]. При работе над этой большой программой прежде всего следует задуматься о генах.
Рис. 2
Какого рода “гены” могут быть представлены в нашей компьютерной модели? В реальной жизни гены делают две вещи: влияют на индивидуальное развитие и передаются следующим поколениям. У настоящих животных и растений десятки тысяч разных генов, но мы в своей компьютерной имитации скромно ограничимся девятью. Каждый ген из этой девятки будет охарактеризован в компьютере просто неким числом, которое будет называться значением гена. Какой-то отдельно взятый ген может, к примеру, иметь значение 4 или –7.
Как же эти гены будут влиять на развитие? Ну, они могут делать это множеством разных способов. Главное, чтобы они вносили в алгоритм РАЗВИТИЕ какие-то небольшие изменения количественного характера. Например, один ген мог бы влиять на угол ветвления, а другой – на длину какой-нибудь из веточек. Еще одна возможная задача для генов, которая сразу же приходит в голову, – менять глубину рекурсии, число последовательных ветвлений. Ответственным за этот эффект я назначил ген номер 9. Таким образом, вы можете рассматривать рис. 2 как изображение семи близкородственных организмов, идентичных друг другу во всем, за исключением гена 9. Не буду вдаваться в подробности того, что именно делает каждый из восьми других генов. Представление о том, какого рода воздействия они производят, вы можете получить, изучив рис. 3. В центре расположено исходное дерево – одно из тех, что изображены на рис. 2. Вокруг него располагается еще восемь. Они точно такие же, как и то, которое в центре, но только у каждого из них был изменен – “мутировал” – какой-то из этих восьми генов. Например, картинка справа от центрального дерева показывает нам, что происходит, когда ген 5 мутирует и к его значению прибавляется 1. Будь на странице больше места, я бы расположил вокруг центрального дерева кольцо из 18 мутантов. Почему именно из 18? Потому что у нас есть девять генов, и каждый из них может мутировать в сторону как “повышения” (когда к его значению прибавляется 1), так и “понижения” (когда из его значения вычитается 1). Следовательно, 18 изображений хватило бы для того, чтобы показать всех мутантов, каких можно получить из одного центрального дерева путем единичного преобразования.
Рис. 3
У каждого из этих деревьев имеется своя собственная, уникальная “генетическая формула” – численные значения всех девяти генов. Я не стал выписывать эти генетические формулы здесь, так как сами по себе они ничего вам не скажут. Это же, кстати, справедливо и для настоящих генов. Гены начинают значить что-либо, только когда в ходе белкового синтеза преобразуются в предписания для развивающегося зародыша. То же и в нашей компьютерной модели: численные значения девяти генов обретают смысл, только будучи переведенными в указания по росту древовидного узора.
Но о работе каждого конкретного гена можно получить представление, сравнивая два организма, о которых известно, что они различаются только в этом гене. Сравните, например, исходное дерево в центре рисунка с теми, что расположены по обе стороны от него, и вы получите некоторое представление о том, что делает ген номер 5.
Ровно тем же самым занимаются и генетики в реальной жизни. Обычно генетики не знают, какими путями гены оказывают свое воздействие на эмбрионы. Не знают они и полной генетической формулы каждого животного. Но, сравнив два взрослых организма, различающиеся по одному-единственному гену, они могут увидеть, какое именно действие этот ген оказывает. На самом деле все несколько сложнее, поскольку эффекты генов взаимодействуют друг с другом способами более замысловатыми, чем простое сложение. Но то же самое верно и по отношению к компьютерным деревьям. Еще как верно, и на следующих рисунках мы это увидим.
Вы, вероятно, обратите внимание, что все формы, которые у нас получатся, будут двусторонне-симметричными. Это я установил такое ограничение для подпрограммы РАЗВИТИЕ – отчасти из эстетических соображений, отчасти чтобы уменьшить число необходимых генов (если бы гены не производили одно и то же зеркально отраженное действие на обе стороны вычерчиваемого дерева, нам понадобился бы отдельный набор генов для левой половины и отдельный – для правой), и еще отчасти потому, что надеялся получить картинки, напоминающие животных, а животные в большинстве своем довольно-таки симметричны. По этой же причине отныне я прекращаю называть эти создания “деревьями”, а буду говорить “организмы” или “биоморфы”. Название “биоморфа” придумал Десмонд Моррис – для существ, отдаленно напоминающих животных, с его сюрреалистических полотен. К его картинам я испытываю особенную привязанность, поскольку одна из них была воспроизведена на обложке моей первой книги. Моррис утверждает, что биоморфы “эволюционируют” в его воображении и что их эволюцию можно проследить по его картинам.
Но вернемся к нашим компьютерным биоморфам и к кругу из 18 возможных мутантов, восемь типичных представителей которых изображены на рис. 3. Поскольку каждый из них находится в одном-единственном мутационном шаге от исходной биоморфы, нам будет нетрудно рассматривать их всех как ее детей. Итак, у нас есть своего рода РАЗМНОЖЕНИЕ, которое, точно так же как и РАЗВИТИЕ, будет воплощено в простом компьютерном алгоритме – еще одном готовом “строительном блоке” для нашей большой программы ЭВОЛЮЦИЯ. Про РАЗМНОЖЕНИЕ следует сказать две вещи. Во-первых, никакого секса: размножение бесполое. Поэтому я полагаю, что биоморфы женского пола – ведь животные, размножающиеся без полового процесса (тли, например), почти всегда устроены как самки. Во-вторых, имеется ограничение для мутаций: всегда происходит только одна за раз. Выходит, что дочь отличается от своей родительницы только по одному из девяти генов. Более того, при каждой мутации к значению соответствующего родительского гена может быть добавлено только +1 или –1. Это не более чем произвольные условия, которые могли бы быть и иными без ущерба для биологического правдоподобия.
Нельзя сказать того же о другом свойстве нашей модели, отражающем один из основных принципов биологии. Форма потомка не создается непосредственно из родительской формы. Очертания каждой новой биоморфы определяются значениями ее собственных девяти генов (влияющих на величину углов, протяженность линий и т. п.), и каждый потомок получает свои девять генов от родительской девятки. В реальной жизни происходит ровно то же самое. Следующему поколению передается не тело – передаются гены, и только они. Гены влияют на эмбриональное развитие того тела, в котором находятся. Затем эти же гены либо передаются следующему поколению, либо нет. Участие в индивидуальном развитии организма никак не влияет на природу генов, однако вероятность их дальнейшей передачи может зависеть от успеха того тела, которое они помогали строить. Вот почему необходимо, чтобы в нашей компьютерной модели два этих процесса – РАЗВИТИЕ и РАЗМНОЖЕНИЕ – были отделены друг от друга, как два водонепроницаемых отсека. Перегородка, разделяющая их, абсолютно герметична за исключением того момента, когда РАЗМНОЖЕНИЕ передает РАЗВИТИЮ значения генов, чтобы те влияли на рост новой биоморфы. РАЗВИТИЕ ни в коем случае не передает гены РАЗМНОЖЕНИЮ обратно, иначе это был бы своего рода ламаркизм (см. главу 11).
Итак, мы составили два наших программных модуля, обозначенных как РАЗВИТИЕ и РАЗМНОЖЕНИЕ. РАЗМНОЖЕНИЕ занимается тем, что передает гены из поколения в поколение с определенной вероятностью мутации. В каждом отдельно взятом поколении РАЗВИТИЕ берет предоставленные РАЗМНОЖЕНИЕМ гены и преобразует их в действие по вычерчиванию фигурок, благодаря чему те появляются на экране компьютера. Настало время объединить эти два алгоритма в одну большую программу под названием ЭВОЛЮЦИЯ.
В сущности, ЭВОЛЮЦИЯ – это бесконечно повторяющееся РАЗМНОЖЕНИЕ. В каждом поколении РАЗМНОЖЕНИЕ получает гены от предыдущего поколения и передает их следующему – но с небольшими случайными изменениями, мутациями. Мутация состоит в том, что к значению какого-то случайно выбранного гена прибавляется +1 или –1. Из этого следует, что в ряду сменяющих друг друга поколений генетические отличия от исходного предка мало-помалу накапливаются и становятся очень большими. Но при всей случайности мутаций эти накапливаемые из поколения в поколение изменения не случайны. В любом отдельно взятом поколении биоморфы-потомки отличаются от своей родительницы случайным образом. Но в том, кто именно из этих потомков будет отобран, чтобы дать начало следующему поколению, случайности уже нет. Вот тут-то и начинает действовать дарвиновский отбор. Критерием для него служат не гены сами по себе, а организмы, на форму которых гены оказывают влияние в ходе РАЗВИТИЯ.
Помимо самовоспроизводства при РАЗМНОЖЕНИИ гены еще и передаются в каждом поколении подпрограмме РАЗВИТИЕ, которая вычерчивает на экране соответствующие организмы, следуя своим собственным строго установленным правилам. В каждом поколении нам показывается весь “выводок” “детенышей” (то есть биоморф следующего поколения). Все они являются мутантными дочерьми одного и того же родительского организма, и каждая отличается от него по какому-то одному гену. Такая невероятно высокая частота мутаций – свойство откровенно небиологическое. В действительности вероятность того, что ген мутирует, составляет зачастую меньше единицы на миллион. Причина, почему в программу был заложен такой высокий уровень мутаций, заключается в том, что все это разворачивающееся на экране компьютера действо предназначалось для человеческих глаз. Ни у какого человека не хватит терпения дожидаться одной мутации в течение миллионов поколений!
Человеческий глаз вообще сыграет в этой истории важную роль. Он будет осуществлять отбор – рассматривать всех потомков в выводке и оставлять одного на разведение. Выбранный таким образом организм даст начало следующему поколению, и теперь уже его мутантные детеныши будут все разом представлены на экране. Человеческий глаз выполняет здесь абсолютно ту же функцию, что и при выведении породистых собак или декоративных роз. Другими словами, наша модель является, строго говоря, моделью не естественного отбора, а искусственного. При настоящем естественном отборе дело обстоит так: если организм обладает качествами, нужными для выживания, то его гены выживают автоматически, поскольку находятся внутри него. То есть само собой выходит, что гены, которые выживают, это и есть те гены, которые сообщают организмам признаки, помогающие выжить. В нашей же компьютерной модели критерием отбора служит не выживание организма, а его способность отвечать человеческой прихоти. Прихоть не обязательно долж на быть праздной и случайной – ничто не мешает нам проводить селекцию по какому-то определенному признаку, такому как, например, “сходство с плакучей ивой”. Однако в моем случае человек-отборщик чаще всего был капризным и беспринципным, что не так уж отличается от некоторых разновидностей естественного отбора.
Человек указывает компьютеру, какую биоморфу из имеющегося выводка оставить для продолжения рода. Гены избранницы передаются подпрограмме РАЗМНОЖЕНИЕ, и приходит время следующему поколению появиться на свет. Подобно реальной эволюции живого этот процесс может продолжаться бесконечно. Биоморфа из любого поколения находится всего в одном мутационном шаге как от своей предшественницы, так и от наследницы. Но по прошествии 100 циклов программы ЭВОЛЮЦИЯ наши биоморфы могут оказаться где угодно в пределах 100 шагов от своего исходного предка. А 100 мутационных шагов могут далеко завести.
Однако, начиная играть с только что написанной программой ЭВОЛЮЦИЯ, я и вообразить не мог, насколько далеко. Первое, что меня удивило, – это то, как быстро мои биоморфы перестали быть похожими на деревья. Исходное раздваивание ветвей никуда не делось, но оказалось, что его можно с легкостью завуалировать многократным пересечением линий, образующим сплошные цветовые пятна (иллюстрации, увы, только черно-белые). На рисунке 4 показана одна конкретная история эволюционных преобразований, продолжавшаяся в течение всего-навсего 29 поколений. Матерью-прародительницей было крохотное существо, состоящее из одной-единственной точки. Но хотя предковый организм – всего лишь точка (как бактерия в первичном бульоне), его потенциал к ветвлению такой же, как и у дерева, расположенного в центре рис. 3. Просто ген номер 9 велел ему разветвиться ноль раз! Все создания, изображенные на рис. 4, являются потомками этой точки, но, чтобы не загромождать страницу, я не стал размещать на ней всех потомков, какие мне в действительности были предъявлены. Из каждого поколения я взял только успешную биоморфу (то есть давшую начало следующему поколению) и одну или двух из ее неудачливых сестер. Итак, на рисунке представлена преимущественно одна, магистральная линия эволюции, направляемая моими эстетическими предпочтениями. Все до единой стадии, принадлежащие к этой основной линии, там присутствуют.
Давайте посмотрим на рис. 4 и кратко пройдемся по первым нескольким поколениям “генеральной линии” эволюции. Во 2-м поколении точка превращается в букву Y. В течение следующих двух поколений Y увеличивается в размерах. Затем ее рога немного искривляются, как у хорошей рогатки. В 7-м поколении искривленность усиливается, и две “ветви” почти что соприкасаются кончиками. В поколении 8 они удлиняются и приобретают по паре маленьких отростков. В следующем, 9-м поколении эти отростки пропадают, а рукоятка рогатки становится более вытянутой. Поколение 10 напоминает цветок в разрезе: изогнутые боковые ветви, подобно лепесткам, обрамляют центральный вырост-“рыльце”. В 11-м поколении “цветок” укрупняется, и его форма становится чуть более сложной.
Нет нужды продолжать этот рассказ. На протяжении всех 29 поколений картинка говорит сама за себя. Обратите внимание, как мало каждая биоморфа отличается от своей предшественницы в ряду поколений и от своих сестер. Но раз каждая отличается от своей родительницы, то следует ожидать, что от своей бабки (и от своих внучек) она будет отличаться несколько больше, а от прабабки (и от правнучек) еще больше. Вот в чем суть накапливающей эволюции, хотя мы и разогнали ее до совершенно невероятной скорости, установив такую высокую частоту мутаций. По этой причине рис. 4 больше смахивает на родословную видов, а не особей, но принцип остается тем же.
Рис. 4
Составляя программу, я никак не думал, что она сможет выдать что-нибудь кроме различных древовидных форм. Я ожидал плакучих ив, ливанских кедров, пирамидальных тополей, водорослей, в крайнем случае – оленьих рогов. Ни моя биологическая интуиция, ни мой 20-летний опыт программиста, ни самые дерзкие из моих фантазий – ничто не подготовило меня к тому, что я увидел на экране. Уже не помню, в какой именно момент меня осенило, что из получающейся последовательности может выйти нечто, напоминающее насекомое. Охваченный этой нелепой догадкой, я из поколения в поколение стал отбирать те биоморфы, которые были похожи на насекомых хоть сколько-нибудь больше других. Чем сильнее проступало сходство, тем меньше я верил своим глазам. Итоговые результаты можно увидеть в нижней части рис. 4. Правда, у них восемь ножек, как у пауков, а не шесть, как положено насекомым, – и тем не менее! До сих пор не могу удержаться и не поделиться с вами тем чувством ликования, которое я испытал, когда эти изящные существа впервые возникли передо мной на экране. В голове отчетливо зазвучали торжествующие начальные аккорды из “Так говорил Заратустра” (главный мотив в фильме “Космическая одиссея 2011 года”). От волнения я не мог есть, а ночью, когда попытался заснуть, у меня перед глазами, стоило лишь закрыть их, кишели “мои” насекомые.
Существуют и продаются компьютерные игры, в которых игроку кажется, будто он блуждает по подземному лабиринту, имеющему определенную, хотя и сложную, географию, и встречает там драконов, минотавров и прочих сказочных противников. Эти чудовища не слишком разнообразны, и все они, так же как и сам лабиринт, были разработаны человеческим разумом программиста. В эволюционной игре – как компьютерной, так и реальной – у игрока (или у наблюдателя) тоже создается впечатление, что он, образно говоря, бродит по лабиринту разветвленных коридоров, но только количество возможных маршрутов практически бесконечно, а монстры, встречающиеся на пути, непредумышленны и непредсказуемы. Когда я скитался по закоулкам Страны биоморф, мне попадались жаброногие рачки, храмы ацтеков, окна готических соборов, наскальные изображения кенгуру, а однажды – памятный, но не желающий воспроизводиться случай – вполне приемлемая карикатура на теперешнего уайкхемовского профессора логики. На рисунке 5 представлены еще некоторые трофеи из моей коллекции, все полученные одним и тем же способом. Хочу подчеркнуть: эти изображения – не плод фантазии художника. Никогда и никоим образом их не дорисовывали и не подправляли. Они именно такие, какими их вычертил компьютер, внутри которого они эволюционировали. Роль человеческого глаза сводилась только к тому, чтобы выбирать варианты из потомства, случайно мутировавшего в течение многих поколений накапливающей эволюции.