Тем не менее, в этой статье мы предположим, что такие аналогии являются более смелыми, чем точными, и попробуем рассмотреть, почему ДНК может считаться субстратом для полноценного генетического программирования, но сама по себе достаточно далека от языка программирования и языка как такового.
ДНК является матрицей для синтеза белков и, в конечном итоге, предназначена для передачи генетического материала от поколения к поколению. Таким образом, генетический код может считаться работоспособным, если позволит носителю оставить многочисленное плодовитое потомство, которое при этом окажется не менее или более жизнеспособным, чем представители родительского поколения. Эта задача сформулирована достаточно широко, поэтому эволюция при всей успешности является «багородным» начинанием и обременяет своих детищ огромной базой унаследованного, закомментированного и нещадно сбоящего кода.
Синтетическая биология, в свою очередь, ставит перед собой значительно более четко очерченные цели, чем эволюция. Например, серьезнейшая область применения технологии CRISPR связана с противоопухолевыми разработками, притом, что сами раковые клетки являются плодом неизбирательного естественного отбора – отбор поддерживает их, поскольку им удается эффективно и быстро оставлять потомство, а также мимикрировать под здоровые клетки пораженной ткани.
Код ДНК более подобен естественному языку, нежели языку программирования, так как избыточен, быстро накапливает ошибки, полон сложных зависимостей, которые обусловлены контекстом развития организма, и вред или полезность этих зависимостей не всегда очевидны.
Широко известен пример с серповидноклеточной анемией — наследственным заболеванием, в результате которого человеческий эритроцит приобретает неправильную форму и оказывается в большей степени похож на полумесяц, нежели на пончик.
Предполагается, что эритроцит неправильной формы затрудняет протекание малярии и неудобен для проживания малярийных плазмодиев, благодаря чему носитель данного заболевания получает лишний шанс дожить до репродуктивного возраста, и лишь потом умереть от инфаркта. В зависимости от условий проживания и возраста индивида перед нами «и баг, и фича в одном кодоне».
При «тестировании» in vivo таких генетических модификаций естественный отбор не был стеснен сроками и требованиями к качеству, а скорее развивался в условиях, многие из которых можно сравнить с DDD. Продолжая аналогию с кровеносной системой, можно назвать предметно-ориентированным решением голубую кровь головоногих моллюсков. В качестве металла, аналогичного железу, в крови осьминога содержится медь. Согласно новейшим исследованиям, такая эволюционная находка оптимизирует насыщение крови кислородом в холодной воде и при низкой концентрации кислорода как такового.
Если же представить себе тестирование реальных биотехнологических разработок in vivo так, как тестируется программный код, здесь экстраполяция наталкивается на явные нестыковки и сложности, о которых, в частности, сказано в статье Брюса Шнайера и Ларисы Руденко:
Представьте себе биотехнолога, который пытается нарастить экспрессию гена, обеспечивающего нормальное воспроизведение клеток крови. Хотя, по нынешним стандартам эта операция весьма проста, почти наверняка успех будет достигнут не с первой попытки. В случае софтверного кода весь ущерб, который был бы нанесен таким кодом – это аварийное завершение программы, в которой он работает. В биологии же такой ошибочный код мог бы значительно повысить вероятность возникновения разнообразных лейкемий и уничтожить жизненно важные клетки иммунной системы.Также авторы делают следующее немаловажное замечание:
В отличие от программного обеспечения, биологические системы невозможно «пропатчить» после того, как они отправлены в свободное плавание, хотя, исследователи и пытаются разработать такие патчи. Также отсутствует возможность «пропатчить» растения или животных, которые могут оказаться уязвимы перед такими синтетическими организмами. На этапе тестирования могли бы помочь строгие меры по предотвращению утечек биоматериала, но ни одна такая система не сводит риски к нулю.Аналогично, очень сложно представить себе «кроссплатформенный» генетический код, который работал бы, например, и на Земле, и на Марсе. ДНК, значительная часть которой является некодирующей, очевидно обладает значительной информационной избыточностью, но при этом, как правило, не подходит для биохимической перенастройки для работы на других планетах или даже в условиях, комфортных для экстремофилов на Земле. Экстремофилы же, в свою очередь, смогли выжить на Земле в условиях, приближенных к марсианским.
Таким образом, значительная адаптация генетического кода к принципиально неблагоприятным условиям имеет место лишь на периферии биохимии, а для большинства экстремофилов губительны и типичные земные экосистемы.
Интересно, что еще Станислав Лем в «Сумме технологии» затрагивал важнейший аспект биологической информации – ее серьезнейшую обусловленность контекстом развития организма:
Знак предполагает существование информации (он является элементом ее кода), информация же существует только тогда, когда имеется ее адресат. Известно, кто является адресатом «Гамлета»… Но кто является адресатом хромосомной информации, содержащейся в яйце крокодила? Зрелый организм не является им, он представляет собой лишь некую позднейшую стадию передаваемого сообщения. Этот организм в свою очередь обладает адресатом; но где? Ни на Луне, ни на Сатурне крокодилы жить не могут; они могут жить только в реке с болотистыми берегами, воды которой дают им пищу; здесь же, найдя партнеров, они могут размножаться. Следовательно, адресатом генетической информации крокодила является именно данный район вместе со всей популяцией данного вида и другими организмами, поедаемыми им или поедающими его; короче: получателем генетической информации особи служит ее биогеоценотическое окружение.Наконец, известно, что и четыре нуклеотида, составляющие молекулу ДНК, не являются единственно возможными. Уже созданы синтетические нуклеотиды, увеличивающие емкость генетического кода, а также синтетическая бактерия, способная производить аминокислоту, отсутствующую в других живых организмах.
Соответственно, ДНК отчасти может быть сравнима с машинным кодом, о чем на Хабре уже писали, но от исходного кода в значительной степени отличается, прежде всего, своей избыточностью, непредсказуемостью и предметно-ориентированностью. Поэтому совершенно логичным выглядит феномен технологии Cello, позволяющей транслировать исходный код в нуклеотидные последовательности ДНК. Желающие могут ознакомиться с репозиторием Cello на Github (используется язык Verilog).
Таким образом, аналогии ДНК с машинным кодом весьма условны, а аналогии с исходным кодом пока представляются неубедительными. ДНК в значительно большей степени напоминает естественный язык для общения живого организма с окружающей средой. Но значительная упорядоченность и расширяемость алфавита ДНК вполне располагают к созданию полноценного языка программирования на ее основе, а, возможно, и к созданию компиляторов. Возможно, такой язык будет сопоставим с ДНК как Java или Python сопоставимы с английским, либо заимствует из ДНК синтаксис, но частично или полностью изменит семантику кодонов. Кроме того, учитывая сказанное выше, полноценный биологический язык программирования должен обладать функцией self-healing и, возможно, гораздо большим потенциалом к снижению энтропии, чем присущ биологической жизни. Генетический код, реализованный в биосфере Земли, чрезвычайно интересен в качестве носителя информации и, скорее всего, при некоторой доработке и увеличении абстракции сможет поспорить в точности с низкоуровневым языком программирования.
Остается до этого дожить.
Mike_666
Мне думается на ДНК (и особенно РНК) стоит смотреть не как на язык, а как на сущность которая является программой и компьютером одновременно. И как раз отсутствие разделения на информационную и физическую части приводит к тем особенностям которые нам пока не до конца понятны.
napa3um
Ген, в основном, и так уже абстрагированная от физики сущность, это математическая абстракция, единица наследственной информации. Прост в большинстве современных работ по генетике решаются вопросы физических/химических механик передачи генетической информации, потому термин постепенно размылся, его стали использовать для указания конкретных кусков молекулы. Но так же остались (полезными) и теоретические модели, в которых ген определяется абстрактно, без уточнения физического воплощения («чёрный ящик»). Примерно так же отличаются бит из теории информации и бит из технических характеристик шины данных или ячеек памяти.
Но если проводить аналогию с программированием, то да, можно сказать, что ДНК — это не код программы, а уже конкретный поднятый инстанс, эдакая сервер-хромосома с процессами-генами, которые исполняются параллельно. Причём, эти сервера ещё и объединяются в кластера (путём межклеточных сигнальных молекул).
Наиболее близкой к такому «подходу» в программировании была, наверное, среда Smalltalk, в которой предполагалось редактирование программы «наживую», прям в запущенном инстансе (без перезапусков).
saaivs
Ген, насколько мне известно, не вполне точно определённая сущность в общем случае. Абстракция возможно только при сильном упрощении. "… Так как ген как однозначную структурную единицу выделить трудно, то нередко под геном понимают исключительно функциональную единицу наследственности… геном — это сложная система, взаимосвязанных участков ДНК. Дать однозначное определение понятию ген не представляется возможным."
napa3um
Я написал, как он определён, и как размыто это определение :). Всё представляется возможным, но вытекает из решаемой задачи, в которой мы определяем ген. Абсолютных онтологий уже давно в рамках научного метода не ищут (см. постпозитивизм, прагматизм :)). Можете на вики почитать, там вполне понятно описано положение вещей по понятию гена и истории этого вопроса :).
VolkaDlak
Ну вообще-то saaivs прав, в вашем представлении ген, это некая «команда» прописанная вполне определёнными нуклеотидами и кодирующие вполне определённые белки. Понятно откуда взялось такое представление, но оно давно развенчано. Одна и та же последовательность лежащая на одной и той же хромосоме в одном и том же месте ДНК вполне может кодировать разные белки. И то каким будет конечный белок, что закодирован на этом участке, может зависеть как от внешней среды, так и от внутренней. Например погружён ли сейчас организм в воду и воздух, какой его возраст, заражён ли он другими организмами и так далее и тому подобное.
Таким образом множество генов не существует без контекста, без контекста это лишённая смысла цепочка ДНК — сломанный кусок кода, который можно заставить что-то сделать, но ничего полезного не произойдёт.
napa3um
Вообще-то вы не правы. Ген — это единица наследственной информации. Про определённость нуклеотидов и белков читайте дальше в моём комментарии, уверен, вы его не прочли.
VolkaDlak
Хорошо, опустите ту часть моего комментария где упоминается ДНК и нуклеотиды.
Это ничего не меняет в сказанном мной о генах. Коротко я разъяснил как это работает в природе, дальше уже будут стены текста, а я ленивый. Что бы вам было проще начать самопоиски начните гуглёшь со слова «плейотропность».
napa3um
Нет, мне бы было не проще ковыряться в свалке ваших озарений, правда. Вы вообще не вникаете. Ген — это абстрактная единица наследственной информации. Что в этом тезисе вам кажется противоречащим вашей «плейотропности»? :) Бит (в теории информации) — это единица информации, но он не определяет сюжет фильма в mp4-файле или форму транзистора в ячейке оперативы. Это чистая математика. Учитесь абстрагировать.
VolkaDlak
:) В вашей аналогии ген, это не бит. Бит это три нуклеотида. Ген, это команда состоящая из битов. И если в программировании команда всегда точно определяет что надо делать, то в биологии нет, одна и та же команда может привести к разным результатам в зависимости от окружения. Один и тот же ген в одном сегменте тела даст начало крыльев, в другом ноги.
napa3um
Нет, вы продолжаете бороться с выдуманными чудовищами. Боритесь со своими демонами без меня :)
VolkaDlak
Но если вы про то что ДНК это не компьютер, то да вы правы, само по себе ДНК это что то типа сверхусложнённой флешки на которой сверхзаархивированная информация, смысл которой может меняться в зависимости от того каким архиватором её «открывать».
napa3um
Главное, чтобы у вас была задача, теория без практики не несёт смысла, теория без поставленной задачи — это просто нефальсифицируемый экспериментом набор слов.
NikolayZolotarev
Не люблю такие аналогии, но в вашем примере компьютером является не ДНК, а вся клетка. Передача и реализация информации невозможна только с помощью ДНК, нужно большое число белков, РНК, мелких молекул.
В биологии разделить информационную и физическую часть невозможно. Физика и является носителем и обработчиком информации.