Many people believe that DNA is a blueprint for our bodies. That if we could read DNA correctly, we could output something like an architect's drawing, that our cells faithfully follow in order to produce the completed body. This description of DNA is typical of what I learned in school:
Every cell in your body has the same "blueprint" or the same DNA. Like the blueprints of a house tell the builders how to construct a house, the DNA "blueprint" tells the cell how to build the organism. Yet, how can a heart be so different from a brain if all the cells contain the same instructions? Although much work remains in genetics, it has become apparent that a cell has the ability to turn off most genes and only work with the genes necessary to do a job. We also know that a lot of DNA apparently is nonsense and codes for nothing.While the blueprint analogy is helpful, it misrepresents how things really work. Unlike buildings, there is no architect or general contractor in an embryo. There is no cell or group of cells that understands what the body should look like, or what it looks like currently. Cells base their behavior entirely on their local environment, not on any sort of understanding of their larger role in the body. DNA is not a blueprint - it is more like an instruction booklet, and the environment tells the cell which "page" of the booklet to turn to.
For example, the very first cell (or zygote) is in a very unique environment. There is a "page" in the booklet of DNA that gets turned to when a cell isn't connected to any other cells, and is surrounded by the chemicals found in a womb. That page says that it should divide. The next cell has its DNA turned to the page for what to do when it's connected to one zygote-like cell, etc.
The key is that each cell uses its local, unique environment to decide how to act. Its actions then help to create the local environment for the cells around it, telling them how to act. In this way, information cascades through the medium of the environment, and each cell can do what it's supposed to, without only a local understanding of its environment.
If we go back to our finger example, DNA might have instructions that are something like "keep producing skin and bone cells while the ratio of chemical x is above y", where chemical x is produced by your knuckles, for example. When the ratio of the chemical is below the threshold, your fingers stop growing. The specifics of this example are most likely incorrect, but the principle is right - individual cells know nothing except their local environment, and genetic instructions must be based on that.
Many machines are based on this same principle. For example, a thermostat could theoretically be built which measures the volume of a room, and using mathematics figures out the amount of hot air necessary to heat a room of that size, and then pumps in the air.
That would, of course, be silly. Instead, a thermostat measures the temperature of the room, and continues to pump hot air until the room is warm enough. It directly modifies the environment, and then measures the environment to determine whether or not to continue modifications. Information about room size is not necessary, information about how much air has already been pumped is not necessary, even information about the temperature in the room isn't necessary. The only information a thermostat needs is whether or not the room is warmer or cooler than a given temperature. By directly querying the environment, thermostats move from a incredibly complex calculation to a binary decision without any loss of function.
These two examples hint at the incredible ways that environments can be used to interact with systems. They can:
- Simplify systems - in both examples, systems are simplified drastically by directly affecting the environment in order to communicate with the system. Instead of cells storing their location in the body, or which part of the DNA they should code for, their instructions simply tell them how to react in various environments. That is a much simpler, and less error-prone way of doing things.
- Store information - In a sense, the temperature of a room is storing how much hot air has been pumped into it from a heater. This is information that would be important to a self-contained thermostat system, but it isn't needed because the environment contains the necessary information.
- Build complexity - Because all of the components in the system are using their local environment as both input and output, they can build things that are more complex than they are. Cells, economies, and societies all rely on local actors making decisions based on local information, where outputs from one actor become inputs for another. This type of interconnectedness allows for complexity and efficiency that is far beyond what any of the actors could have designed and built from the top-down.
- Increase adaptability - Each component in the system is interdependent. Because one component's actions are based on the output of another component, if the output changes, the effects are cascading. The breadth of the cascade is also a function of the interdependence. Some changes will only affect the local environment, while others can change the entire system.
- Allow stateless interactions - Thermostats don't need to know anything about how long the heater has been on, or how long it has been since it last turned off. They are stateless because their decision about whether or not to turn on the heat is not based on the past. Each decision is completely independent. Similarly, a cell doesn't know whether it has divided 1 time or 1,000 times. A neuron doesn't know whether it has fired 5 times in the last minute, or 50 times.
- Allow certain variables to be abstracted - A thermostat that tried to calculate how much hot air was needed would need to keep track of whether a door to the room was opened (thus increasing the amount of hot air needed), or whether there were warm bodies in the room (thus reducing the amount of hot air needed). By measuring only the temperature, a simple thermostat acts as though it took all of those variables into consideration, without actually knowing them.