Posted by David Deutsch on the TCS List on Wed, 18th Dec., 2002
Computer programmers have a word for it: “executed”. A program is being executed when the computer's program counter is at some address within the program. But there are a myriad caveats: is it the program being executed, or a subroutine, or just one instruction? What about a suspended program? What about interpreted languages – there is no hard and fast distinction between ‘program’ and other data. And so on.
Biologists have a word for it: “expressed”. A gene is being expressed when it is being translated into a protein. By extension, one may also say it is being expressed when that protein catalyses some chemical reaction or otherwise helps cause some attribute (phenotype) of the organism. By further extension one may say the gene is being expressed when the attribute in question is having the physical effect which it evolved to have. Again, these are not precise or exhaustive definitions. There are a myriad subtleties in the definitions of all the terms involved – gene, attribute, cause, phenotype etc.
Although these terms cannot be precisely defined, and although it is impossible to understand them well prior to understanding the respective theories well, they are nevertheless meaningful and important. One has to understand – and conceive of the biosphere in terms of – what it means for genes to be expressed, in order to understand biology. One has to understand, and think in terms of, what it means for a program to be executed, in order to understand computer programming. Fortunately, understanding them is no big deal. Anyone who is interested in learning those subjects learns what “expressed” and “executed” mean without conscious effort. No sweating over the nuances of a definition is ever involved. What one does is start with any commonsense, flawed conception of “expressed” or “executed”, and then one refines that conception in parallel with learning the theory.