|
What is a living cell and DNA from a digital computing perspective?
The cell is a system that receives input materials, uses them in certain ways and produces one or more different useful outputs and waste.
The cell is a closed system containing highly organized and integrated subsystems that operate in a complete and complex synchrony. These
subsystems are discrete molecular machines closely integrated and equipped with monitoring and loop back connections. One can think of the
cell as a super modern car factory, where everything is performed by robots, the raw materials are delivered to the input gates of the factory
and the finished cars and waste are taken away from the output gates. All work, including repairing of broken robots and machines is done in
the factory by other robots and machines. Nothing except raw materials enters into the cell and nothing except ready production and waste exits.
The DNA is both storing information and the information itself that controls the operation of all robots in the cell and entire organism.
Since the cell is a completely computerized factory and the computing model inside the cell is digital – the same as in a modern computer, only
much more sophisticated and tuned we shall examine creation of a digital computing system from the moment it was conceived to the moment it is
fully operational and then will multiply that to see what is necessary to have an operational fully automated factory. In this way we shall see
what was necessary in order to produce a working cell, although in a short article like this we will be able to only scratch the surface of a
mountain of complexity.
A digital computing system consists from at least two hardware parts – memory and processor plus one or more software parts – that is one or
more programs. Such a computer system would be quite useless, as it is closed and any useful work that it might have done will be firstly limited
to a pure computation and secondly the results will be inaccessible, locked in the memory since the system is closed. Before we add elements to
that system so that we make it a little more useful, we will have a little more detailed look at the memory and processor.
The memory is storage of information. Depending on the type of information memory can be of different types, and have different types of attachment
to the processor as well as different ways of being accessed. Memory is a passive element, but it contains the assembly instructions that control the
operation of the active element – the processor.
The processor is the active element of a digital computer system. It reads assembly instructions from the memory, interprets them and consequently
executes them. The results of their execution can be different types including such that it may need to be stored in memory for later use. Every processor
understands only limited sets of assembly instructions for which it was designed and created. Each instruction that a processor understands is hardware
programmed in it as a set of digital circuits that perform that particular operation. For example the designers of a certain processor might have decided
for whatever reasons that instruction 10000110-b will represent addition and instruction 10000111-b subtraction. The designers of another processor might
have decided that instruction recorded as 01110110001000111001011101010110-b will represent addition and instruction 01010100011000111000001001100011-b
will represent subtraction. The difference between these two processors is not only the actual data that represents the instruction but also its range.
Bigger instruction size means a wider range of possible instructions, usually bigger data word, wider bus connecting the processor and memory,
wider word of the memory and faster relative operation. The first two instructions above are 8 bit while the second two are 32 bit wide, where both
processors are using binary logic. The designers of a third processor might have decided that their processor will use quaternary logic thus being relatively
much faster, but far more difficult to produce. For a quaternary logic processor an instruction might look like 0123-q or 12301102133-q and so forth.
The memory that is attached to the processor must be compatible with the processor in every possible way. It must have been designed for that
processor – it must be able to hold compatible data in word size and dimensions. It must be attached compatibly - that is the width of the address
and data buses, the voltage levels, the impedance of the input/output circuits, the frequency characteristics, and other properties e.g. physical
characteristics must be absolutely compatible. Next but also vitally important is that the memory must be of sufficient size in order to hold all
necessary software items and data. Other characteristics of the memory are whether it is read only memory or random access memory; for how long data
can be held without being corrupted.
Summarizing what is necessary for a compilation of simplest digital computing system:
- formulate objectives – decide the scope of the system, what will be expected from it, including:
- complexity of problems to be solved,
- performance requirements
considering what are the available resources and technologies, is that possible.
- decide what numeric system will be used
- design what micro-operations will be performed by the processor
- design the circuits that will perform the micro-operations
- design all subsystems of the processor, including read/write operations, input/output operations, interrupts, hold, reset, back loops, address bus, data busses, etc, etc, etc
- design memory with compatible electrical characteristics, physical characteristics, address bus, data bus, data type, synchronization, etc, etc, etc
- produce processor
- produce memory both types ROM and RAM
- create a complete hardware system
- design a program using the instructions previously defined
- write the program and somehow transfer it into the ROM memory
- launch the system
- Test the system, if there is a fault then find the source of the fault – is it a problem in the processor, the memory,
the surrounding elements or the program. Go to the appropriate point above, fix the problem, continue with next point.
By now it must have become ABSOLUTTELY clear that before writing a program one must have constructed the entire computing system that will accommodate,
interpret and execute that program. The software is separate from the machinery and is dependent on it. The machinery must first exist and then the
software can be designed and written.
This concept is a fundamental principal of all information/processing system. This fundamental principal applies takes precedence over all disciplines
that are using information processing systems, including living biological cells.
In evolutionary terms, evolutionists must explain how the system (the cell) including the DNA as memory placeholder, (but excluding the DNA as information)
assembled itself (without assembly instructions to control the molecular machines to create and replicate the entire cell including DNA as placeholder), and
then how the DNA as information (the assembly instructions appeared).
Evolutionists grew the idea for mutation as a force required to help natural selection. From a computer design engineer the proposal that mutation can be
useful in that sense is remarkably naive and is truly hilarious. By definition evolution enhances the organism, it adds information. The mutation as
explained by evolutionists is when an error occurs and information in DNA is changed. Change of DNA as in static state cannot add new information; it
can only replace an existing instruction. In a computer program that would mean to change the value of an address with another value e.g. 10000110-b with
10000111-b. If the two values happen to be unimportant data e.g. part of the name of a menu item then there will be a little dissatisfaction but the system
will continue to work. However if the value that was replaced was a constant data used in computation or an instruction then the program will stop operating
correctly and its results will be harmful. The same applies for mutations that may occur while the program was copied. If a byte was omitted to be copied
then that is obviously a serious problem; in the best case the program will malfunction, in the worst but most likely case it will pass illegal instruction
to the processor and as a result the processor will either hang or throw an exception and terminate the illegal program. If an instruction was copied incorrectly
then this is the same case as with a static change of instruction or data. If a new instruction or data was injected in the program while it was copied then either
the result will be the same as missing an instruction, or the data segment of the program will be moved, thus creating a complete mess during execution which will
most probably end in an access violation, or in the best case the algorithm of the program will change and some undefined error in the program operation will be
present. To have a useful mutation a very precise intervention must be done, first one MUST secure space for the new data with EXACT size, and then the new enriching
code must be injected at the precise place of the program. A number of other changes must be undertaken in order to ensure the integrity of the program. For example
all jumps and branches of the program which pass over the change must be recalculated and replaced with a valid new offset. This is on its own is a very serious
exercise which requires transformation of the entire program, however this is not all. Because the size of the jump has increased it is possible that some jumps
will be no longer possible, so the change does not only involve changing the data for the jump instruction but also changing the actual jump instruction.
Changing the jump instruction in this context however means change of the program size, as smaller size instruction is replaced with bigger size instruction,
but that means that some jumps will be again invalidated, so everything must be done again. To summarize injecting a little information "mutation" in the
program code means that the program must be re-assembled as many times as conditional/unconditional jumps are in the program plus one (worst case). After
doing all this, we might still end up with useless program, because the program logic might expect a particular jump (the physical) instruction at a
particular place, which we just replaced, so the program logic is corrupted, and it won't work. The same issues that make any mutation of a program harmful
apply to DNA. Only a dilettante may suggest that mutation of highly specified code could produce useful change. In the best case the change will produce
little harm. In the usual case the results will be devastating, that is death for the system unless someone restores the order.
We will continue our discussion for creation of a complete fully automated factory to further see the fallacy of the idea for self organized living matter. Let’s
assume that the simple computing system consisted only from processor and memory is now created and operates properly. The next thing that is necessary is to
add abilities to it, so that it is able to control certain things such as motors, pumps, etc. To do that the processor must have been designed with abilities to
use peripheral circuits. These circuits are addressable in a similar way to the memory. They also must be compatible with the processor in the same way as the
memory. The range of peripheral elements that can be attached is significant; they can be timers, frequency generators, digital to analog converters and so
forth. Since the parts of the robots that need to be controlled such as motors, pumps, heaters, coolers, and other external devices have high power inputs while
the computing device and its peripheral outputs are low power elements we now need to design circuit that will allow the low power output of the computer system
to control the high power elements of the robots. We need to design power amplifiers and synchronize their inputs with the outputs of the computer system and
their outputs with the inputs of the power elements. Failure to synchronize these circuits will result in destroying the computing system, which in turn will
generate high level signals on the peripheral outputs of the computer system, which will be amplified and passed to the power elements. As a result some or them
may get damaged and/or damage other mechanical systems connected to those power elements.
We need to rework our processor and give it some output capabilities, so we go back to the creation algorithm above and start from beginning. Once we have
done this we need to create the digital peripheral circuits, the mixed peripheral circuits and number of power synchronizers. This is not easy at all –
suppose you have an iPod, and you need to make it to play so loud as to make a concert on a Olympic size stadium - all you have is raw materials and you,
you have to do it yourself. Imagine you really have to do this ... make a concert for 120 000 raving people with your iPod... Once we have all elements
we need we again have to go back to our creation algorithm above to assemble everything in a working system.
So far so good but having output peripherals is only necessary and not enough in order to control any robot, it is also necessary that some input is
delivered to the computing system. These inputs tell to the computing system what is the position, state, etc of the robot working element, other power
elements state and others. We now must further enhance our computing system to accommodate this requirement for input. The next thing that needs to be
done is to develop sensors, which are placed respectively to gather information and supply it to the computing system. The output from sensors is usually
not directly usable by any computing system and need to be converted to compatible digital type of data that is usable. Therefore we must also design
circuits that convert the sensors output to digital signals. These circuits must have input compatible to the particular sensor output and their output
must be compatible with the computing system power characteristics. If these (as well as the output) circuits are incompatible or malfunction the results
will be devastating for the entire robot.
Let us assume that we have designed and developed sensors, circuits converting their analogue output signal to digital, peripheral circuits that are required
to attach the sensors digital signal to the computing system and finally we have extended the processor to be able to accept that input information. Although we
expanded our computing system beyond recognition it is still not fit to be used for control of a single robot. What will happen if some sensor reports a critical
condition that requires immediate attention but the program that is currently executing is engaged with a slow process unrelated to the signaling sensor? We need
now to go back and add even more functionality to our processor that will allow it to handle interrupts. An interrupt is a special signal that goes into the
processor to inform it that something needs immediate attention and the processor must immediately execute some specially designed program that handles the reason
for the incoming interrupt. This interrupt handling program, will be written later according to what will be handled by the particular source, to which the
interrupt port will be connected. After we add this new feature to our computing system and processor we are ready with the hardware part of it.
The next task is to write the software. Creating a program is more complex that simply writing it. Suppose that the computer system that we design will be used
to control a transportation robot. We would like to have this robot to use the optimal trajectory in order to be as efficient as possible. If the system that we
design will control an oven where some materials will be prepared we will want similarly to control the oven in an optimal path. The same principal applies to
all systems that we will control. In order to be able to control any system optimally (and in some cases even just to control it) we have to model the system;
this means to describe it in a mathematical way, and transfer the model into a program. In order to do that we must be not only experts in mathematics but also
we must know the properties and laws of the physical world. (Remember that we actually examine a cell, i.e. we must fully understand the world and its properties
on an atomic level). After we create a model we can transfer it to a program using the assembly instructions of the particular processor that we will be using.
Here is an example of a small assembly program for demonstration:
107 j2
2216 [04] 18CE2004 108 ldy #style_front
221A [02] 8658 109 ldaa #$58
221C [04] B700DC 110 staa supervisor_function_request
221F [02] 4F 111 clra
2220 [04] 33 112 pulb
2221 [03] 37 113 pshb
2222 [04] 183A 114 aby
2224 [05] 18E600 115 ldab 00,y
2227 [06] BD8400 116 jsr Supervisor
222A [03] 2403 117 bcc j3
222C [03] 7E2270 118 jmp error
119
120 j3:
222F [03] CE6000 121 ldx #$6000
2232 [03] CCC700 122 ldd #$C700
2235 [05] ED00 123 std 00,x
2237 [03] CC6000 124 ldd #$6000
223A [05] ED02 125 std 02,x
223C [02] 8680 126 ldaa #$80
223E [04] 33 127 pulb
223F [02] C117 128 cmpb #$17
2241 [03] 2720 129 beq quit
2243 [03] 37 130 pshb
2244 [05] ED04 131 std 04,x
2246 [02] C600 132 ldab #$00
2248 [04] E706 133 stab 06,x
224A [04] 18CE2534 134 ldy #$2534
224E [02] 8680 135 ldaa #$80
2250 [02] C65D 136 ldab #$5D
2252 [04] F700DC 137 stab supervisor_function_request
2255 [06] BD8400 138 jsr Supervisor
The actual machine code:
:10221000F700DCBD840018CE20048658B700DC4FE0
:102220003337183A18E600BD840024037E2270CEAE
:102230006000CCC700ED00CC6000ED02868033C1A9
:1022400017272037ED04C600E70618CE2534868010
:10225000C65DF700DCBD84008654B700DCBD840099
:102260007E21DA8654B700DCBDF900FE7FF03539F7
:10227000338645C603F700DCBD84003936861FB7B8
Looking into this very, very, ..., very tiny program it must be clear that a suggestion that a random mutation could enrich it is
not naïve, it is plain nonsense. Any change of this code will result in a broken algorithm or invalid instruction. Now consider that
the DNA of a human is about 3 billion symbols.
Creating the software program and storing it in the memory of the computing system concludes its development. This was a very brief
overview about creation of a single computer that controls a single robot in the fully automated factory that we are building.
For every operation in the fully automated factory we will have to construct one or more robots and/or machines that will perform
that operation. Consider how many operations are needed to create a car from raw materials. The fact is that this fully automated
factory will be presenting the entire industry from paper manufacturing, woodwork, leather and cloths to metal works, electrical
machinery and so forth – everything that is used in a car. Remember, in our factory only raw material enters and only ready production
and waste exits. Every single operation in each of these sub-factories will be performed by a separate specialized robot(s), which we
have to design and manufacture too. Then we will have to construct the factories and so forth.
Let us now assume that we have constructed all robots for our fully automated car factory. We have made a detailed design for each
operation in our factory including all sub-factories and we made a specialized robot according to that design for each operation. Now
we need to get all robots, machines and sub-factories to work in synchronous manner. We need to make a central computer that controls
the entire system, the sub-factories, the robots and so forth. Of course each sub factory will have to have its own central computer,
and may have its own sub-factories. We will have to make a production plan how our factory will work and enforce that plan.
To make things even more obvious consider that if the processor of one robot breaks up it must not only be replaced, but the same
processor also must be produced within the factory. In other words in our factory for cars we have another plant for processors, memory,
power elements, electric motors, hydraulic pumps, pistons, rubber, fibers, electrodes, and so forth, and, so forth, and so forth everything
that is used in the factory, there must be even power station inside – only thing that enters the factory are raw materials.
The fully automated factory cannot fix itself before it is fully functional. It is not possible to build a half factory, which immediately
starts itself and completes the whole factory. The system is operational only after it has been compete, and then launched. Further if the
system is damaged and the damage is too big it will not be able to self-fix, therefore an assumption that the system was created gradually
is simply absent of logic and understanding of design.
A cell is exactly like the fully automated factory that we described, the difference is that it is much smaller, much more elegant, much
more sophisticated and the robots and machines are as big as molecules because they are actually molecules.
The next thing to consider is that in an organism such as human there are millions of different cells – brain cell, muscle cell,
skin sell, bone, etc each of which is a different fully automated factory like the one we described.
It should be clear why for a design engineer the concept for evolving matter without the direction of an inteligent agent i.e. Creator
is gibberish, plain garbage without scientific value.
Miroslav B. Bonchev August, 2006 England
The video below is an interesting clip from an Exploration Films production.
|