There are two classes of problems with the concept of neural codes. Initially, while working on my critique of the neural coding metaphor, I focused mostly on the epistemic problem (the first two parts of the paper). The epistemic problem is that when we say that Y is a neural code for X and that Y is metaphorically decoded by the brain, we imply that Y is informative about X by simple virtue of being in lawful relation with X. But this is a kind of information that is only available to an external observer who can see both X and Y, knows the two domains and the correspondence. If not X but X’ caused the neural activity Y, the organism would never know from just observing Y. Therefore Y cannot be a primary representation of X for the organism. Of course it could be a secondary representation of X, if the organism could observe that Y is in lawful relation with Z, a primary representation of X. But then we need to account for the existence of that primary representation, which cannot be based on an encoding. A number of other authors have made similar criticisms, in particular Mark Bickhard.
The epistemic problem is, I would say, the “easy problem” of neural codes. Addressing it gives rise to alternative notions of information based on internal relations, such as O’Regan’s sensorimotor contingencies, Gibson’s invariance structure, and my subjective physics.
But there is a deeper, more fundamental problem. It has to do with substance vs. process metaphysics and the way time is conceived (or in this case, disregarded). I address it in the third part of the neural coding essay, and in my response to commentaries (especially the third part). To explain it, I will compare the neural code with the genetic code. There are some problematic aspects with the idea of a “genetic code”, but in its most unproblematic form, there is a lawful correspondence between triplets of nucleotides and amino acids, which we can call a code. Nucleotides and amino acids are two types of substances, that is, some stable entities (molecules). Nucleotides are transformed into amino acids by some process that unfolds through time (translation). A process is not a substance; it may involve some substance, for sure (e.g. enzymes), but it is the activity that defines the process. The code refers to some lawful relation between two types of substances, disregarding the process.
With this analysis in mind, “neural codes” now look very peculiar. The neural end of the code is not a substance at all. It is a particular measurement of the activity of neurons done at a particular time, for example the number of spikes during a particular time window. We then consider that this number is the output of some process, some kind of stable entity that can be further manipulated and transformed by some other processes. Of course this is exactly what it is for the experimenter, who manipulates those measurements, makes calculations etc. But from the organism’s perspective this view is very puzzling: the activity of neurons is the process, not the result of a process (what other process?). Neurons do not produce stable entities like amino acids which can participate in various processes. A spike is not a stable entity, it is a timed event in the process of neural interaction (like, say, the binding of an enzyme on RNA), and measurements like spike counts are simply “snapshots” of that process. It is not coherent to treat signatures of processes as if they were substances.