. В жизни же все иначе. У эволюции нет долгосрочных стремлений. Сколько бы человеческое тщеславие ни лелеяло абсурдную идею, будто наш вид и есть конечная цель творения, не существует ни отдаленной цели, ни окончательного совершенства, которое могло бы послужить мерилом для отбора. В реальной жизни критерии для отбора всегда краткосрочны – это либо простое выживание, либо, в более общем смысле, репродуктивный успех. Если по прошествии геологических эпох свершается то, что задним числом выглядит как движение к некоей далекой цели, это всегда побочный результат сиюминутного отбора, действовавшего в течение многих поколений. “Часовщик”, коим является накапливающий естественный отбор, не видит будущего и не ставит перед собой никаких долгосрочных задач.

Принимая это во внимание, мы можем изменить нашу компьютерную модель. Также мы можем приблизить ее к реальности и в других аспектах. Буквы и слова – это проявления сугубо человеческой природы, так что лучше пускай наш компьютер рисует картинки. Возможно, нам даже удастся увидеть, как изображения на экране благодаря накапливающему отбору мутантных форм приобретают очертания, напоминающие животных. Мы не будем предрешать исход дела, вводя в программу изображения животных в качестве стартового материала. Нам хотелось бы, чтобы они возникли сами и исключительно в результате накапливающего отбора случайных мутаций.

В реальной жизни внешний вид животного возникает в процессе эмбрионального развития. Эволюция происходит потому, что в ряду сменяющих друг друга поколений эмбриональное развитие слегка варьирует. Эти небольшие отклонения появляются вследствие изменений в генах, контролирующих развитие (мутации – та самая необходимая крупица случайности, о которой я упоминал). Следовательно, в нашей компьютерной модели должно быть что-то, эквивалентное эмбриональному развитию, и что-то, эквивалентное способным к мутированию генам. Существует немало способов сделать так, чтобы компьютерная модель удовлетворяла этим требованиям. Я выбрал один из них и написал соответствующую программу. А теперь я расскажу про эту компьютерную модель, так как считаю ее очень показательной. Если вы ничего не знаете о компьютерах, просто запомните, что это такие машины, которые делают в точности то, что им говоришь, а результат нередко оказывается неожиданным. Перечень инструкций, отдаваемых компьютеру, называется программой (я пишу program, как это принято в Америке и как рекомендует Оксфордский словарь; альтернативное написание programme, распространенное в Британии, кажется мне офранцуженным и неестественным).

Развитие эмбриона – процесс слишком замысловатый, чтобы можно было реалистично сымитировать его на маленьком компьютере. Поэтому нужно придумать некий упрощенный аналог: найти такое простое правило вычерчивания рисунков, которому компьютер мог бы легко подчиняться и которое могло бы варьировать под влиянием “генов”. Какое же правило мы выберем? В учебниках по информатике часто демонстрируются возможности так называемого рекурсивного программирования на примере простого алгоритма роста деревьев. Компьютер начинает с того, что чертит одиночную вертикальную линию. Затем эта линия разветвляется на две. Затем каждая из получившихся ветвей разделяется на две ветви второго порядка. Затем каждая из этих новых ветвей разделяется на ветви третьего порядка и т. д. Такое программирование называется рекурсивным, потому что в каждой точке всего растущего дерева применяется одно и то же правило (в данном случае правило ветвления). Каким бы большим дерево ни вырастало, каждая его веточка разделяется снова и снова в соответствии все с тем же правилом.