Recently I have noticed the striking similarity between the basics of molecular biology and programming. Not only me, of course.
After the discovery of the DNA (and related RNA) structure, molecular biology has been a hot topic in 60s and 70s. So were AI and Lisp.
Grossly oversimplifying, proteins are data-structures, while enzimes are procedures (free of side-effects), both are made out of some base aminoacids, chained together by various bonds. They form sequential and even look-up table-like structures (DNA code-sequence to aminoacid look-up). And that is enough to sustain all the life.
The classic Lisp has been grounded on almost the same insights. The same list structures are data representations and some of these structures are procedures, but there is not much difference. Code could be treated as data, even modified or generated. And everything is type-tagged (has a recognizable marker), everything was a "first class", and there was a notion of many distinct environments (closures) - and that was good enough.
I think it is not a random consequence, I think it is a play of intuition that there is some small good-enough set of features to program everything, a biological equivalent of the Turing Machine.
Well, proteins *are* data-structures and enzimes *are* procedures (without side-effects).
What runs them? Well, Brahman.)