Hacker News new | ask | show | jobs
by silentplummet 3840 days ago
When we use a computer programming language, we are directing an abstract machine to interpret and manipulate data to get a result that we want. We have all the knowledge we need about the machine because we conceived and designed it ourselves.

DNA is like a programming language for a biological computer, a living cell. However, we don't know nearly everything there is to know about a living cell. We can't predict its mechanisms. There is no debugger. The compiler didn't come with an instruction manual. The code bootstraps itself into its own machine and runs in an environment we can't predict. And the syntax has been obfuscated and optimized by a genetic algorithm that's been running in parallel on quintillions of cores for a billion years.

Because the code executes on an unknown machine in an unpredictable physical environment, many features we might expect to see in a programming language are missing. This might be what he meant by "shallow".

3 comments

>DNA is like a programming language for a biological computer, a living cell. However, we don't know nearly everything there is to know about a living cell. We can't predict its mechanisms. There is no debugger. The compiler didn't come with an instruction manual. The code bootstraps itself into its own machine and runs in an environment we can't predict. And the syntax has been obfuscated and optimized by a genetic algorithm that's been running in parallel on quintillions of cores for a billion years.

And, just to finish off, the machine is stochastically nondeterministic.

I mostly meant that there is tons of encapsulation in computer programming. Like one could be a full-stack engineer that could go from soldering a transistor (or designing an IC from scratch, to writing a web app that uses web sockets that sit on top of HTTP which is on top of TCP/IP sockets, which is served ruby sitting on top of linux which is virtualized by Amazon AWS which is managed by a hypervisor sitting on top of a cluster of computers, all talking to each other via TCP/IP..... etc.), and there are so many layers 'deep' to that cake.

And this is a personal feeling, but there is less encapsulation, in biology. There are less 'categories' of things that build on top of each other that you have to learn, but those categories are immense and the knowledge in each of those is incomplete. I suppose you could say the knowledge in some of programming is 'incomplete' by virtue of closed-source encapsulation (trust us, this hardware works like you think it does), but that is somewhat artificial.

Thanks for that explanation. Do you really think the stack is smaller in biology? Biology has been optimized over three billion years - if we've already invented more layers than there are in biology then are we not overthinking it?

This is what I came up with in a hurry for biology:

  ...elements
  atoms
  chemicals
  nucleic acids
  genetic circuitry
  peptides
  proteins
  multiprotein complexes
  microcompartments
  organelles
  cells
  clusters of differentiation
  organs
  organisms
  communities...
Care to fill in or improve the list?
> Because the code executes on an unknown machine in an unpredictable physical environment, many features we might expect to see in a programming language are missing. This might be what he meant by "shallow".

Without knowing how much more there is to know about biology, how can we expect to see certain features or not? What about tasks that are supremely efficient in biology but resource intensive "in silico"? I'm having a hard time fathoming biology as shallow in any way. The fact that it's bootstrapped and live, that you don't get to restart the computer or cut the flow of information makes it all the less shallow to me, unless I'm misunderstanding how that word was used.