Возможности такой восходящей «нехореографии» были изящно продемонстрированы талантливым программистом по имени Крейг Рейнолдс. Он написал программу под названием «Птоиды», моделирующую поведение птиц, сбивающихся в многочисленные группы. Вы могли подумать, будто Рейнолдс задал общий рисунок движений всей стаи. Отнюдь нет: иначе это было бы нисходящее программирование. Его же программа работала по восходящему принципу, а именно следующим образом. Рейнолдс приложил немало усилий, чтобы смоделировать поведение одной-единственной птицы, снабдив ее правилами вроде такого: «Следи за движениями других птиц, находящихся поблизости от тебя. Если твой сосед делает то-то и то-то, поступай так-то и так-то». Отточив как следует эти команды для своей единственной птицы, Рейнолдс «клонировал» ее: создал десятки копий и все их «выпустил» в компьютер, а затем наблюдал за поведением стаи в целом. Его «Птоиды» вели себя очень сходно с настоящими птицами. На цветной вклейке 27 показана еще более красивая модель, построенная на основе программы Рейнолдса. Ее сделала Джилл Фантауцца для музея Эксплораториум в Сан-Франциско.
Принципиально здесь то, что модель Рейнолдса действовала не на уровне стаи. Все программирование велось на уровне отдельно взятой птицы. Поведение стаи возникало как следствие. Такое же «восходящее программирование» мы наблюдаем и в эмбриологии, где роль отдельных птичьих особей играют отдельные клетки зародыша. Процесс эмбрионального развития включает множество разнообразных клеточных движений, когда мембраны и целые тканевые пласты сворачиваются и изгибаются, непрестанно меняя форму. Так что и тут, аналогично примеру с летающими скворцами, опять нет хореографа, равно как и архитектора.
Эмбриологи все еще выясняют, каким образом ДНК создает младенца. Многое уже известно, но я не собираюсь углубляться в детали. Это заняло бы целую книгу, а наша книга не о том. Здесь нам с вами достаточно будет просто понимать, что развитие зародыша — процесс восходящий. Такой же, как строительство термитников или взаимодействие скворцов внутри стаи. Идет он не по чертежам. Вместо этого все клетки развивающегося эмбриона следуют своим собственным локальным правилам, подобно отдельным термитам, возводящим собор из глины, или отдельным скворцам в кружащейся стае.
Остановлюсь на самых ранних этапах жизни зародыша чуточку подробнее, чтобы показать, как работают такие восходящие правила. Вы, конечно, знаете, что оплодотворенная яйцеклетка представляет собой одну-единственную клетку, хоть и большую. Она делится на две. Затем каждая из этих двух клеток тоже делится — и их становится четыре. Из четырех получается восемь и так далее. После каждого деления общий объем остается прежним — равным объему исходной оплодотворенной яйцеклетки. Тот же самый материал перераспределяется между двумя, четырьмя, восемью, шестнадцатью и более клетками, формируя в итоге плотный шар. Когда число клеток приближается к сотне, они (подчиняясь локальным восходящим правилам) образуют нечто вроде полого мячика, называемого бластулой. Размер бластулы опять-таки примерно тот же, что был у оплодотворенной яйцеклетки, а сами клетки теперь очень мелкие. Получившийся мячик образован стеной из клеток.