Hacker News new | ask | show | jobs
by TeMPOraL 2214 days ago
As a programmer with a side interest in molecular biology, my take is this:

Yes, protein synthesis via RNA translation, as explained in high-school biology, does look like reading Assembly opcodes with 3-pairs-long window, with some opcodes being redundant (translating to the same protein). But then you learn (probably not in school) that they're not redundant at all; some organisms (like bacteria) actually translate RNA with different offsets of the read window, so the same RNA string will code for different proteins simultaneously. Sure, we did things like these back in the heyday of the industry, but that's just the tip of the iceberg.

Then you discover things like epigenetics, or that protein functions are determined by how they fold (something we can't simulate just yet), or that horizontal gene transfer (direct exchange of genetic material between cells, instead of through reproduction) is not only a thing, it's a very important (if not the primary) way by which bacteria evolve. You zoom into how electron transport chains work in chloroplasts (i.e. how cells power themselves by light), and you see a series of complexes that are tuned in dimensions to enable quantum tunneling of the electrons. And now think of how all of these is like a bag of sand - everything is there next to each other, bumping against each other all the time, and not only it works this way, a lot of things in the cells depend on that random walk to work.

In the end, I think our programming experience is useful for viewing some of the biology in terms of high-level systems and their interplay. On the mathy side, perhaps the fundamentals of information theory can inform some aspects of biological research. But beyond that, these things are just different. It's like you took a piece of code, run it through an optimizing compiler, and then through a magical demoscene compressor that makes the code self-modifying, re-encodes opcodes on top of each other by exploiting misaligned reads, makes the binary use PC register as arithmetic input everywhere, and ensure lock-free parallelism by abusing delays from cache misses as synchronization mechanism. And then you give that to someone else to reverse-engineer. That's like 1% as difficult as the stuff biologists have to deal with.