анированными.
Холдейн, отвечая на вопрос, конечно, сказал чистую правду. Однако он не стал бы отрицать, что в развитии человеческого тела всего из одной клетки есть тайна, близкая к чуду (хоть и не переходящая грань). То, что развитие происходит по инструкциям, содержащимся в ДНК, приоткрывает завесу таинственности, но не полностью. Причина таинственности проста: нам сложно представить, даже в теории, возможность создания инструкций для строительства тела способом, которым оно строится на самом деле: самосборкой. Программисты называют такие алгоритмы восходящим проектированием — в противоположность нисходящему.
Архитектор готовит чертеж величественного собора. Затем операции передаются отдельным бригадам, затем звеньям, группам, пока, наконец, инструкции не доходят до конкретных каменщиков, столяров и витражных мастеров. Те принимаются за работу и трудятся до тех пор, пока собор не будет построен. Причем выглядит он в итоге вполне похожим на чертеж архитектора. Это нисходящее проектирование.
Восходящее проектирование принципиально иное. Я не могу в это поверить, но существует миф о том, что некоторые из лучших средневековых соборов Европы были построены без архитектора и общего чертежа. Никто их не планировал и не чертил. Каждый каменщик или плотник занимался, в меру своих способностей, частью общей работы, практически не обращая внимания на то, что делается вокруг, и вовсе не думая о плане. И, о чудо, каким-то образом из этой анархии рождался собор. Будь оно так, это был восходящий алгоритм. Миф этот, правда, не соответствует действительности: соборы так не строили. Однако это происходит, например, при строительстве муравейника или термитника, а также в ходе развития зародыша. Это и отличает эмбриологию от всего, к чему мы, люди, привыкли в вопросах строительства и конструирования. На этом принципе основаны некоторые компьютерные программы, типы поведения животных, а также компьютерные программы, моделирующие поведение животных. Предположим, что мы хотим смоделировать стайное поведение скворцов. На цветной вклейке 16 приведены кадры из нескольких прекрасных роликов с видеохостинга «Ю-Тьюб»[105]. Этот «балет» над Отмуром, неподалеку от Оксфорда, запечатлел Дилан Уинтер. В стайном поведении скворцов поразительнее всего то, что у них нет хореографа и, насколько нам известно, вожака также. Каждая птица всего лишь следует локальным правилам.
Число птиц в подобных стаях может измеряться тысячами, однако столкновений практически не бывает. Еще бы, ведь на таких скоростях любое столкновение почти неизбежно приведет к ранениям. Часто можно наблюдать, что стая ведет себя как единое целое, согласованно поворачиваясь или кружась. Или что несколько стай пролетают друг сквозь друга, причем каждая сохраняет целостность. Это кажется волшебством. На самом деле стаи находятся на разном удалении, а не пролетают друг сквозь друга. Дополнительное эстетическое удовольствие дает четкий абрис стаи: ее плотность не снижается от центра к периферии. Ну не удивительно ли?
Эти «танцы», вероятно, самый элегантный скринсейвер. В видеосъемке «балета» необходимости в данном случае нет, поскольку она запечатлела повторяющиеся раз за разом хореографические движения, и, следовательно, не все пиксели будут в равной степени заняты. Лучше сделать компьютерную модель поведения скворцов. Любой программист объяснит вам, что есть два способа написания алгоритма: правильный и неправильный. Не пытайтесь выступать в роли хореографа балета в целом. Для подобной задачи этот подход крайне неудачен. Я расскажу о верном способе составления алгоритма, потому что сами птицы (их мозги) почти наверняка запрограммированы так же. А главное, это прекрасная аналогия эмбрионального развития.
Вот как надо программировать стайное поведение скворцов. Нужно сосредоточиться на программировании поведения отдельной птицы. Встроим в компьютерного скворца правила поведения в полете и реагирования на присутствие вблизи других скворцов. Определим, в какой степени птица при изменении направления полета будет отдавать приоритет поведению окружающих особей и в какой — собственной инициативе. Все эти правила можно установить экспериментальным путем, наблюдая за птицами в природе. Дадим киберптице возможность менять правила поведения случайным образом, но в определенных рамках. Теперь, когда мы создали сложную программу, в деталях описывающую поведение скворца, наступает самый важный момент. Не следует пытаться программировать поведение стаи, как, возможно, поступил бы программист прошлого. Вместо этого мы клонируем компьютерного скворца, создадим тысячу его копий, идентичных или с небольшими случайными вариациями правил поведения. И «выпустим» их в компьютерную среду обитания, предоставив самим себе, позволив взаимодействовать на основании общих правил.
Если правила поведения одиночной птицы заданы удачно, то тысячи компьютерных скворцов, каждый в виде точки на экране, поведут себя как реальная стая. Поведение не совпадает с реальным? Не беда, можно отойти на шаг назад и изменить правила для одиночного скворца, например по результатам новейших исследований поведения реальных птиц. Теперь остается снова размножить компьютерных птиц. Так, повторяя последовательные стадии перепрограммирования и клонирования компьютерных скворцов, можно добиться поведения, близкого к реальному. Крейг Рейнольдс написал похожую программу (не занимаясь специально скворцами) в 1986 году и назвал ее Boids[106].
Главное вот что: здесь нет ни хореографа, ни дирижера, ни вожака. Порядок, организация, структура возникают как побочный продукт системы правил, исполняемых локально, а не глобально. Именно так устроена эмбриология: она целиком построена на соблюдении локальных правил на разных уровнях, но главным образом на уровне клетки. Никакого хореографа. Никакого дирижера. Никакого централизованного планирования. Никакого архитектора. В эмбриологии и на производстве процессы, аналогичные работе подобной программы, называются самосборкой.
Тела человека, орла, крота, дельфина, гепарда, леопардовой лягушки и ласточки — все они столь восхитительно и точно собраны, что кажется невозможным то, что гены, их программирующие, не являются ни чертежом, ни генпланом. Тем не менее это так. Как и в случае компьютерных скворцов, все создано отдельными клетками, следующими локальным правилам. Прекрасно спроектированное тело возникает благодаря исполнению локальных правил отдельными клетками, без какого бы то ни было всеобщего плана. Клетки эмбриона «танцуют» друг с другом как скворцы в гигантской стае. Есть, однако, важные различия. В отличие от скворцов, клетки склеены вместе, образуют слои и блоки: их «стаи» называются тканями. «Танцуя» и крутясь, они образуют трехмерные формы, вызывая инвагинацию (впячивание) тканей в ответ на движение клеток, разрастание или сжатие тканей в ответ на изменение местных схем клеточного роста и смерти. Мне нравится аналогия, предложенная известным эмбриологом Льюисом Уолпертом в книге «Триумф зародыша»: оригами — японское искусство складывания фигурок из бумаги. Однако прежде чем перейти к этой аналогии, я хотел бы отмести несколько альтернативных аналогий, которые могут прийти в голову при размышлении об эмбриональном развитии, а именно — сравнений с процессами конструирования и производства.
Кое-что о развитии
Удивительно трудно подыскать приемлемую аналогию процесса развития живой ткани, однако можно найти частичное сходство с отдельными сторонами этого процесса. Например, понятие «рецепт» гораздо лучше отражает суть, чем «чертеж», и я иногда пользуюсь первым для того, чтобы объяснить, почему последнее неверно. В отличие от чертежа, рецепт необратим. Следуя тексту рецепта пирога, в итоге вы получите пирог. Но по готовому пирогу вы не восстановите рецепт, в то время как, видя здание, вполне можно воспроизвести чертеж. Дело в том, что части здания и элементы чертежа соответствуют друг другу. Не считая очевидных исключений вроде вишенки в центре, однозначного соответствия между кусочками пирога и строчками рецепта нет.
Какие еще аналогии с человеческой деятельностью можно привести? Скульптура? Нет, совсем не то. Скульптор берет глыбу камня или кусок дерева и обрабатывает его, аккуратно удаляя лишнее, пока не получит желаемую форму. В принципе, эта процедура напоминает в эмбриологии процесс апоптоза. Апоптоз — это запрограммированная клеточная смерть. Так формируются пальцы на руках и ногах. У человеческого эмбриона пальцы соединены. Когда вы или я находились в матке, наши кисти и ступни были перепончатыми. У подавляющего большинства перепонки исчезают (но встречаются и исключения) в процессе запрограммированной клеточной смерти. Это и вправду похоже на скульптора с его резцами, однако эта аналогия все же не помогает понять развитие эмбриона. Некоторые скульпторы работают не резцом. Они лепят форму из глины или воска. Опять не то. И аналогия с кройкой и шитьем также не годится: ткань сначала размечают по лекалам и разрезают, выкроенные детали сшивают по заранее намеченной схеме друг с другом. Готовая одежда выворачивается швами внутрь, чтобы их не было видно. Это, пожалуй, похоже на некоторые детали эмбриологического развития. Но в целом кройка и шитье, как и ваяние, слабо напоминает эмбриологию. Вязание подходит несколько больше: свитер складывается из отдельных петель, как из отдельных клеток. Однако есть аналогии и уместнее.
Как насчет сборки автомашин или других сложных механизмов на конвейере? На автозавод поступают детали, изготовленные в литейных цехах (здесь, думаю, нет даже отдаленного сходства с эмбриологией). Детали поступают на конвейер, где их прикручивают, приковывают, приклеивают и так далее, в соответствии с планом. Но, повторяю, в эмбриологии нет ничего, что напоминало бы план. Зато имеется некоторое сходство с упорядоченным соединением деталей, как на конвейере, где готовые карбюратор, распределительная головка, ремни привода вентилятора, головка цилиндров и так далее подгоняются друг к другу.