Kantian Naturalist is always good for provoking a thought. In a comment to a prior post he writes:
I had a minor insight yesterday: that one way of characterizing the dispute between design theorists and their critics is in terms of the question, “is the ‘code’ in ‘the genetic code’ meant literally or metaphorically?”
What I’m not sure is whether that question has a framework-neutral answer — whether one could give a fully satisfying answer to that question without presupposing either design theory or evolutionary theory.
This is an interesting comment. A debate on this topic raged on these pages for several weeks earlier this year. See here.
Summary: The genetic code is a literal code. Even prominent Darwinists admit this.
In response to the above, KN wrote in a comment:
If a code requires linguistic rules, and if linguistic rules are just how speakers hold each accountable for what they say, then the genetic code cannot be a literal code, since nucleotide sequences are not themselves speakers or agents of any kind.
So if one is going to maintain that the genetic code is a literal code, one will have to present a theory of what it is for something to be a linguistic rule without there being any speakers of the language. (Good luck with that.)
I have expanded this post to include my response to KN’s comment:
KN: “If a code requires linguistic rules . . .”
It does not. Accordingly, everything you say after this is irrelevant.
Here is the problem. We have a word “code” and you and I seem to be using it in two different ways. I am using the word broadly to refer to any code, including a linguistic code. You are using the word narrowly to refer to only a linguistic code.
If we hope to make any progress, we must arrive at a convention.
I propose using the definition set forth in Wikipedia here*
“A code is a rule for converting a piece of information . . . into another . . . form or representation (one sign into another sign) . . .”
(*as kairosfocus always says “testifying against known ideological interest.” In other words, there are no friends of ID over at Wiki, so we don’t have to worry that they may have skewed their discussion of “code” as a result of a pro-ID bias. They have a clear Darwinian/materialist bias there).
Thus, a code is the protocol (the rules if you will) by which one translates a sign into that which is signified.
Here is an example from Morse Code: Let us say the sign is “dot dash.” The thing signified by the sign is the English letter “A.” The protocol/rule connecting the “dot dash” with the letter “A” – that is the “code” – is the conventions of the Morse Code system.
You focus on language as a code, and certainly it is.
Example: Let us say the sign is “Dog.” The thing signified is the furry four-legged critter sitting in my wife’s lap right now. The protocol/rule connecting “dog” with “furry critter” is the conventions of the English language.
Summary: For every code there will be a sign. There will be that which is signified by the sign. And the “code” will the protocols/rules by which the sign is linked to the thing signified.
Notice that arbitrariness of the linking rules within codes is ubiquitous. In other words, the sign has no independent connection with that which is signified, and the sign could be something else completely if the rules of the code were different.
For example, there is nothing about “dot dash” that suggests it should stand for “A.” The connection is completely arbitrary, and “dash dash dot” could just as well stand for “A.” There is nothing about “D O G” that suggests the furry critter, and another combination of letters (say “B L I M P”) could serve just as well if English speakers agreed to start using the word “blimp” instead of the word “dog” for the furry critter. This is made even more obvious by the fact that other linguistic systems use different conventions to achieve the same result. If I point to a furry critter and say “dog” and a German points to the same critter and says “hund,” we are both correct within the conventions of the linguistic code we are employing. Thus, the word we use to refer to the furry critter (the sign) is arbitrary.
OK. We’ve established that a code is the set of rules linking a sign with that which is signified and the fact that the link is arbitrary.
How does this apply to the DNA code? In this code we have a sign (a codon) and a thing that is signified (an amino acid) and a protocol for translating one into the other. Moreover, the arrangement of signs constituting a particular instruction in the DNA code is arbitrary in the same way that the arrangement of signs for representing the furry critter is arbitrary.
For example, suppose in a particular strand of DNA the arrangement “AGC” means “add amino acid X.” There is nothing about the chemical structure of amino acid X that requires the instruction “add amino acid X” to be represented by “AGC.” If the semiotic rules of the genetic code were different, the identical result could be accomplished using, say,“UAG” or any other combination. Thus, the sign “AGC” is arbitrary to the thing signified, “add amino acid X.”

BTW, Wiki agrees that the genetic code is a literal code. The articles on codes linked above uses the genetic code as an example of a type of code and states:
Biological organisms contain genetic material that is used to control their function and development. This is DNA which contains units named genes that can produce proteins through a code (genetic code) in which a series of triplets (codons) of four possible nucleotides are translated into one of twenty possible amino acids. A sequence of codons results in a corresponding sequence of amino acids that form a protein.
Why is all of this important to ID? It is important because it shows that the DNA code is not analogous to a semiotic code. It is isometric with a semiotic code. In other words, the digital code embedded in DNA is not “like” a semiotic code, it “is” a semiotic code. This in turn is important because there is only one known source for a semiotic code where the provenance of the code is actually known instead of inferred: intelligent agency. Therefore, the presence of a semiotic code embedded within the cells of every living thing is powerful evidence of design, and the burden is on those who would deny design to demonstrate how a semiotic code could be developed though blind chance or mechanical law or both.