"So you can think of the protein-coding genes as being sort of the toolbox of subroutines which is pretty much common to all mammals -- mice and men have the same number, roughly speaking, of protein-coding genes and that's always been a bit of a blow to self-esteem of humanity. But the point is that that was just the subroutines that are called into being; the program that's calling them into action is the rest [of the genome] which had previously been written off as junk."
This makes sense to me (as a programmer :). But I wonder if someone managed to figure out the language in which the "caller" code is written. How does it say: call subroutine at position X, then if (condition), call subroutine at position Y, etc... I was not able to find any info on this.
Genes are transcribed by a polymerase, and a couple of factors determine if the polymerase can be "recruited" there. Here are a couple of those factors:
1) Is the site accessible? That part of the genome needs to be "open chromatin" for it to be transcribed. Next question of course is what makes some chromatin open some closed..
2) Histone signals: DNA spools around wheel-like things called histones. Histones get marked in a variety of ways to indicate "status" of that part of the genome. Some of them are pro-transcription.
3) Polymerase is usually recruited there by DNA-binding proteins called "transcription factors". These proteins bind to the regulatory / "promoter" region upstream of a protein-coding gene. There are over a thousand different transcription factors, each with a specific "motif" they recognize.
The global state is detected in various ways (receptors on the cellular mebrane etc.), which triggers these transcription factors, which then go bind DNA near the genes, to activate a new subroutine.
Here's a paper: http://www.pnas.org/content/107/20/9186 Title: "Comparing genomes to computer operating systems in terms of the topology and evolution of their regulatory control networks"
To explain it to a programmer, it's better to avoid the terminology and specifics, but focus only on functional relations - e.g. type of cell at point (x,y) is a FUNCTION of types (or something) of cells (x-1,y), (x+1, y) and maybe something else. I can't find it anywhere.
BTW, I am not a believer in cellular automation stuff a la Wolfram, just trying to frame the question in a way I could understand.
(just in case you don't want to reply here, my fake email address is in my profile)
It is a lot more like a cellular automaton than anything else. From minute gradient differences inside the fertilized egg, recursively structure spreads out in very much a cellular automata like fashion. Cells respond to the bio-mechanical stress around them and to the signals they bathe in, to decide cellular fate, and in turn release new signals..
It's a very different paradigm of computation than the one we think of. Each cell is like a docker instance, containing the full source code. Perhaps these links explain a bit:
https://www.youtube.com/watch?v=RQ6vkDr_Dec https://www.youtube.com/watch?v=3mCgHK-X6lE https://www.youtube.com/watch?v=EaZOdrU1Du0
Honestly, I have a PhD, doing human genomics, and to me Dawkins is a popular science writer. I don't know anyone in the field of genomics who is an actual working scientist who believes in the 95% number.
Note that the Encode Project defines functional as being transcribed, which is not a widely accepted definition of functional. The whole idea of "function" itself brings a lot of subjective notions into play.
As I said in the parent, I also think "junk dna" is a terrible term. What I prefer stating is, in agreement with Ohno/Kimura's theory of neutral selection, the vast majority of our genome is not under positive or negative selection - i.e. mutations occurring there are neither detrimental, nor helpful, for fitness.
If you look at allele ratios of variants across the genome, the vast majority show evidence of neutral drift.