Говорят, что все изобретения человечества были «подмечены» у природы, или хотя бы имеют природные аналоги; например, у самолёта в природе есть аналог — птица. А есть ли аналог компьютера и компьютерных программ?
Это — биологическая клетка, которая и будет рассмотрена в этом посте с точки зрения программиста, как молекулярный компьютер. Вы узнаете, что многие современные способы и алгоритмы обработки информации появились не в 1980-х годах, а на многие миллионы лет раньше.
Носитель информации
Данные хранятся на молекулярном носителе информации — на одной молекуле (ДНК, у прокариотов ДНК в виде кольца), и разделены на кластеры (гены). Данные хранятся в виде 4-хричного кода (физически представлены в виде 4-х нуклеотидов: аденин, тимин, цитозин, гуанин). Высокая отказоустойчивость и целостность данных осуществляется по технологии RAID 1 (ДНК — двойная спираль, нуклеотиды в обоих спиралях связаны в пары А=Т, Ц=Г). Регулярно проходят проверки целостности данных (с помощью белка ДНК-лигазы), найденные повреждения восстанавливаются, разумеется при сохранившемся дубликате.
Репликация такой базы данных осуществляется специальной службой (белковым комплексом под названием реплисома) методом физического разделения носителей информации, осуществляя тут же создание полноценной резервной копии одного из носителей, а так же сверяя при разделении целостность информации и восстанавливая повреждения. Создание резервной копии для реплики производится с задержкой для экономии ресурсов (см. репликация ДНК). По окончании процесса репликации, обе копии данных содержат резервные копии, соответствующие спецификации RAID 1.
Носитель так же поддерживает запись информации (обратная транскрипция), но запись на практике применяется редко, обычно трудно уничтожаемыми вирусами (ретровирусы).
Параметры носителя: Объём памяти: масштабируемый, скорость репликации: >1 Гб/с (не точно), скорость чтения/записи: ??? Мб/с / ??? Мб/с.
ОЗУ
Так как это молекулярный компьютер, то объём оперативной памяти определяет число свободно доступных молекул, незадействованных в хранении данных. При выделении памяти в «ОЗУ» берутся свободные молекулы и выстраиваются в нити, в последовательности, кодирующую информацию.
При освобождении памяти нитевидные молекулы разделяются, пополняя объём свободных молекул.
Чтение данных с носителя информации
В начале чтения данных с носителя (транскрипция ДНК) в «ОЗУ» осуществляется поиск нужного места на носителе (сайты связывания). Затем считывание продолжается до признака конца файла (предположительно последовательность АААА). Образовавшаяся нитевидная молекула (РНК или мРНК) направляется на обработку.
Процессы чтения могут проходить параллельно.
Запуск программ по событию
Запуск процесса чтения осуществляется по событиям (под воздействием специальных белков). При поступлении события, или группы событий начинает считывается служебная информация с нужного участка данных на носителе (ДНК), где могут содержаться ссылки на другие участки, которые будут считанны для выполнения (инициация транскрипции — сложный процесс, зависящий от последовательности ДНК и от наличия или отсутствия различных белковых факторов).
Процессор
В компьютере находятся множество процессоров, которые выполняют код, хранимый на нитевидных молекулах (РНК), так что можно сказать, что этот вид компьютеров поддерживает multithreading как в прямом, так и в переносном смысле.
Слово «поток», в компьютере который, неправильно когда-то с английского переведён был. На самом деле перевод дословный thread-а будет — нить!
Машинное слово 3-хразрядное, но 4-хричное. Все команды фиксированной длины — одно машинное слово (кодон), т.е. 64 вида команд.
Примечание: до попадания в процессор, поток (РНК) проходит пре-обработку (сплайсинг), при которой убираются лишние команды.
Процессор управляет молекулярным компьютером посредством создания белков, которые делают всю физическую работу: от построения новых структур и изменения формы и движения до запуска новых программ (т. е. команд считывания новых РНК).
Архитектура процессора: 64 командный, скорость выполнения: зависит от шины данных (скорости доставки молекул).
Assembler: какие команды?
Команд 64, из них:
Кодируют информацию по сборке: 61 (однако их действия дублируются)
Управляющие: 3 (условная остановка:UAG, UGA, обязательная остановка UAA),
Зарезервировано: примерно 41 можно использовать не по назначению, если немного изменить процессор (см. неканонические кодоны).
Модульная структура кода
Выше был рассмотрен код в виде «ассемблера», а теперь рассмотрим в виде языка сверх-высокого уровня. Выяснилось, что каждый ген отвечает за какую-то конкретную функцию, или набор функций.
У многоклеточных организмов есть гены, отвечающие за построение конкретных систем у живых организмов, таких как глаза, лапы и т. д. Есть гены, отвечающие за построение сегментов: голова, туловище, хвост.
Изменение в генах, отвечающих за внутреннее строение глаза повлияет лишь на его внутренне строение, а изменение гена, отвечающего за расположение глаза приведёт к тому, что глаза будут у организма, но расти они будут из других мест. Если убрать ген, отвечающий за расположение глаз, то они не вырастут.
Примечательно то, что эти «блоки» (гены) взаимозаменяемы у большинства живых организмов. Так, учёные провели опыт: у мушек-дрозофилл удалили ген, отвечающий за расположение глаз — новые мушки появились безглазыми. В следующее поколение мушек вставили ген, отвечающий за положение глаз, который взяли у мышей, и у мушек появились глаза, мушиные а не мышиные.
Похоже многие гены одинаковые для большинства живых организмов, и главное — взаимозаменяемы!
Что такое генная инженерия
Учёные уже научились выделять гены из одних живых организмов, и вставлять их в другие, получая новые организмы. Этот процесс называется генная инженерия. На сколько я знаю, сейчас функции генов выявляют методом проб и ошибок: повреждают ген, смотрят что изменилось, или смотрят на «мутировавшую» особь, и сверяют её гены с эталонной (чем-то похоже на взламывание программ в отладчике).
Когда поймут, за что отвечают гены у многих организмов, когда научатся не только копировать уже готовые гены, а создавать совершенно новые, тогда не потребуется создавать каких-либо механических нанороботов — они уже будут в виде биологически запрограммированных клеток.
В заключение
Первый «ДНК компилятор» сделали в 2010 году группа учёных, которой руководил доктор Крейг Вентер.
Так же успешно была сохранена, а затем прочитана абстрактная информация в ДНК (файлы, размером примерно 600 килобайт, и это не ограничение) специалистами из Кембриджского университета. Но об этом вы можете прочитать в других статьях.
Источники и ссылки:
Википедия: все термины смотрим там. Однако доверяй да проверяй — слишком много явно неадекватных числовых значений, например, скорость копирования в данной статье оценена с очень большой погрешностью из-за недостатка информации.
Документальные видео и фильмы:
«Создание синтетической жизни» 2010 — редактирование ДНК кода на компьютере, чтение и запись в живые клетки, при этом были выжившие клетки (группа доктора Крейга Вентера).
«BBC: Клетка» 2009, «BBC: Эволюция жизни» — в некоторых сериях показан опыт с дрозофилами, которые наглядно показывают, как гены отвечают за расположение частей тела.
«Внутренняя жизнь клетки» видео 8 минут на youtub — без лишних слов показано выполнение «навигационной программы»…
Автор: godAlex