It is said that all inventions of mankind were “noticed” by nature, or at least have natural analogues; for example, an airplane in nature has an analogue - a bird. Is there an analogue of a computer and computer programs?
This is a biological cell, which will be considered in this post
from the point of view of a programmer, like a molecular computer . You will learn that many modern methods and algorithms for information processing did not appear in the 1980s, but many millions of years earlier.

Information carrier
The data is stored on a molecular information carrier - on a single molecule (DNA, DNA in the form of a ring in prokaryotes), and divided into clusters (genes). Data is stored as a 4-bit code (physically represented as 4 nucleotides: adenine, thymine, cytosine, guanine). High fault tolerance and data integrity is carried out using RAID 1 technology (DNA is a double helix, the nucleotides in both spirals are connected in pairs A = T, C = T). The data integrity checks are regularly checked (with the help of the DNA ligase protein), and the damage found is restored, of course, with the duplicate remaining.
Replication of such a database is carried out by a special service (protein complex called replica) by the method of physical separation of information carriers, immediately creating a full backup copy of one of the carriers, as well as checking the integrity of information and restoring damage during separation. Creating a backup for a replica is delayed to save resources (see
DNA replication ). At the end of the replication process, both copies of the data contain backup copies that comply with the RAID 1 specification.
The carrier also supports the recording of information (
reverse transcription ), but the recording is rarely used in practice, usually difficult to eradicate viruses (
retroviruses ).
Media options: Memory size: scalable, replication speed:> 1 Gb / s
(not accurate) , read / write speed: ??? Mb / s / ??? Mb / s
')
Ram
Since this is a molecular computer, the amount of RAM determines the number of freely accessible molecules that are not used to store data. In the
allocation of memory in the "RAM" are taken free molecules and lined up in a thread in the sequence encoding information.
With the
release of memory filamentous molecules are separated, adding to the volume of free molecules.
Reading data from storage media
At the beginning of reading data from the carrier (
DNA transcription ) in the “RAM”, the search for the necessary place on the carrier (
binding sites ) is performed. Then the reading continues until the end of the file (
presumably the AAAA sequence). The resulting filamentous molecule (RNA or mRNA) is sent for processing.
Reading processes can take place in parallel.
Event triggering
The launch of the reading process is carried out by events (under the influence of
special proteins ). When an event arrives, or a group of events, the service information begins to be read from the desired portion of data on the carrier (DNA), which may contain references to other sites that will be read for execution (transcription initiation is a complex process depending on the DNA sequence and on the presence or absence various protein factors).
CPU
There are many processors in the computer that execute code stored on thread-like molecules (RNA), so we can say that this type of computer supports multithreading both literally and figuratively.
The word "stream", in the computer which, was wrong once was translated from English. In fact, the literal translation of the thread will be - the thread!Machine word is 3-digit, but 4-digit. All commands of fixed length are one machine word (
codon ), i.e. 64 kinds of teams.
Note: before getting into the processor, the stream (RNA) undergoes pre-processing (
splicing ), which removes extra commands.
The processor controls the molecular computer by creating proteins that do all the physical work: from building new structures and changing shape and movement to launching new programs (that is, reading new RNA commands).
Processor architecture: 64 command, execution speed: depends on the data bus (molecule delivery speed).
Assembler: which teams?
There are 64 teams, including:
Encode assembly information: 61 (however, their actions are duplicated)
Managers: 3 (conditional stop: UAG, UGA, mandatory stop UAA),
Reserved: approximately 41 can be used for other purposes, if the processor is slightly modified (see
non-canonical codons ).
Modular code structure
The above code was considered in the form of an “assembler”, and now we will consider it in the form of a super-high-level language. It turned out that each gene is responsible for some specific function or set of functions.
Multicellular organisms have genes that are responsible for building specific systems in living organisms, such as eyes, paws, etc. There are genes that are responsible for building segments: the head, the body, the tail.
A change in the genes responsible for the internal structure of the eye will only affect its internal structure, and a change in the gene responsible for the location of the eye will cause the body to have eyes, but they will grow from other places. If you remove the gene responsible for the location of the eyes, they will not grow.
It is noteworthy that these "blocks" (genes) are interchangeable in most living organisms. So, the scientists conducted an experiment: the gene responsible for eye placement was removed from the fruit flies, the new flies appeared eyeless. In the next generation of flies, a gene was inserted that is responsible for the position of the eyes, which were taken from the mice, and the flies appeared in the flies, the mushin and not the mouse.
It looks like many genes are the same for most living organisms, and most importantly - interchangeable!

What is genetic engineering
Scientists have already learned to isolate genes from some living organisms, and insert them into others, getting new organisms. This process is called genetic engineering. As far as I know, now the functions of genes are detected by trial and error: they damage a gene, look at what has changed, or look at a "mutant" individual, and compare its genes with a reference one (something like cracking programs in a debugger).
When they understand what genes are responsible for in many organisms, when they learn not only to copy already prepared genes, but to create completely new ones, then there will be no need to create any mechanical nanorobots - they will already be in the form of biologically programmed cells.
Finally
The first "DNA compiler" was made in 2010 by a group of scientists led by Dr. Craig Venter.
It was also successfully saved, and then read abstract information in DNA (files, approximately 600 kilobytes in size, and this is not a limitation) by specialists from the University of Cambridge. But you can read about it in other articles.
Sources and references:Wikipedia: we look at all the terms there. However, trust and verify - there are too many clearly inadequate numerical values, for example, the copy speed in this article is estimated with a very large error due to lack of information.
Documentary videos and movies:"Creating a synthetic life" 2010 - editing DNA code on a computer, reading and writing to living cells, while there were surviving cells (group of Dr. Craig Venter).
“BBC: Cell” 2009, “BBC: Evolution of Life” - in some series, an experiment with fruit flies is shown, which clearly shows how genes are responsible for the location of body parts.
The “inner life of the cell” video 8 minutes on youtub - the execution of the “navigation program” is shown without further ado ...
UPD : This article is distributed under a Creative Commons CC-BY-NC license from February 15, 2014.