The cycle of observation, hypothesis formulation, experimentation, and falsification, which has driven scientific and technical progress since the scientific revolution, is lately becoming automated in all its separate components. Data gathering is conducted by high-throughput machinery. Models are automatically synthesized, at least in part, from data. Experiments are selected to maximize knowledge acquisition. Laboratory protocols are (or will be) run under reproducible and auditable software control. Models and protocols still need to be integrated so that that their relationships can be formally and automatically analyzed. Eventually, the whole scientific cycle should become “programmable”, including programming the biological and physical entities that are part of the cycle. In this context, we want to program not just computers and software, but also organisms and matter.
Chemical reactions have been widely used to describe natural phenomena, but increasingly we are capable to use them to prescribe physical interaction, e.g. in DNA computing. Thus, chemical reaction networks can be used as programs that can be physically realized to produce and control molecular arrangements. Because of their relative simplicity and familiarity, and more subtly because of their computational power, they are quickly becoming a paradigmatic “programming language” for bioengineering. We discuss what can be programmed with chemical reactions, and how these programs can be physically realized.