Компилятор жизни

топ 100 блогов anairos13.10.2018 Сегодня хочу предложить вам гипотезу, выдвинутую биологом Уинстоном Эвертом в работе The Dependency Graph of Life. В статье, которую вы можете прочитать по ссылке, много математики, поэтому здесь я изложу краткую суть.


У сторонников разумного дизайна сейчас незавидное положение.

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

Но есть и один важный вопрос, на который они ответить не могут. Если все виды были созданы независимо друг от друга, а не эволюционировали от общего предка, почему же тогда классификация видов так напоминает дерево?

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

Для отклонений от строгой древовидности уже создана масса убедительных объяснений: горизонтальный перенос генов, конвергентная эволюция и т.д.

Альтернативная гипотеза будет убедительной лишь в одном случае: если она покажет, что классификация видов на самом деле – не дерево, а совершенно другая структура, которую до сих пор принимали за дерево лишь по ошибке.

Так вот, у Уинстона Эверта такая гипотеза есть.


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

Но модуль, в свою очередь, сам полагается на другие модули, функции из которых использует. Их тоже придется включать в программу.

В результате получается структура, которая называется графом зависимости. Она показывает все модули, необходимые программе для работы.

Эверт предположил, что именно такова подлинная классификация жизни. Виды похожи не потому, что у них был общий предок, а потому, что они используют одни и те же генетические модули.

Чем ближе виды, тем больше у них общего кода. Скажем, кошка и рысь используют модуль «кошка», которому для работы необходим модуль «хищник», а тому, в свою очередь – модуль «млекопитающее», и так далее, вплоть до своеобразного БИОСа, который задает базовые функции живого существа как такового. В собаке же присутствует модуль «собака», который тоже вызывает функции модуля «хищник» и всех остальных, но делает это по-другому.


Хорошая гипотеза позволяет делать нетривиальные предсказания.

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

Эверт провел несколько расчетов по имеющимся в доступе генетическим базам данных – и обнаружил, что его предсказание великолепно сбывается.

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


В качестве завершающего штриха Эверт сделал еще одно предположение.

ДНК – своего рода машинные коды жизни. Но программисты крайне редко пишут в машинных кодах. Обычно они пользуются языком высокого уровня или хотя бы ассемблером, а затем поручают программе перевести это на язык, понятный компьютеру.

Современные компиляторы еще и оптимизируют код, так что предсказать, какой будет окончательная последовательность байт, становится невозможно.

Что если ДНК – как раз и есть результат работы компилятора, который уже умеет оптимизировать, но плохо с этим справляется? Это объяснило бы многие странности в генетических «программах», например, т.н. «мусорный код». Он не выполняется ни при каких обстоятельствах, но выкинуть его из исполняемого файла компилятор не догадался. Возможно, это функции какого-то из модулей, в которых нет необходимости в этой программе.


Мне кажется, это интереснейшая гипотеза, имеющая право на жизнь и дающая возможность дальнейших исследований.

Оставить комментарий

Архив записей в блогах:
...
Вот и у нас начинается эпопея с садиком. Предстоит поход к психиатру. Придется ехать в Наро-Фоминск в психиатрическую больницу. Чего ждать и как подготовиться самим и подготовить почтидвухлетку ( год и десять). Вдруг чего то не умеет и сыну диагноз припаяют. Ребенок обычный, контактный, ...
Люди часто засыпают в самых неподходящих для отдыха обстоятельствах - на рабочем месте, во время долгого совещания, в кафе, парке, метро или кино. Представление театра кабуки в ...
На этот выходной я взяла платье еще короче:)У меня от Ed Hardy всего два платья - самое короткое в моем гардеробе и самое длинное в моем гардеробе) Самое короткое, которое сегодня на мне - очень нравилось экс-бойфренду и еще больше нравится нынешнему))) ...
‎7 ‎сентября ‎2007 ‎г., ‏‎12:28:22 Где-то в Жироне пояснение, из комментофф к фото шестнадцатилетней давности: — Почему у слона глаза красные? — Чтобы ему легче было прятаться среди помидоров. — Вы видели когда-нибудь слона среди помидоров!? — Вот как надо ...