3 ms·
We don't really understand the "hardware" enough to create a legit programming language for life yet. We're basically reverse engineering biology and that's pr
by nickthemagicman 11y ago
We don't really understand the "hardware" enough to create a legit programming language for life yet.
We're basically reverse engineering biology and that's pretty hard.
Believe it or not DNA/RNA knowledge is just the tip of the iceberg in how life works.
There's so many other factors that influence DNA expression like DNA folding/compaction, enzyme up/down regulation, the genes environment, all in a vary complex interacting system that creates life as we know it.
If you want to skip the DNA and jump straight to proteins and just start assembling amino acids then you run into an NP hard problem that the most advanced supercomputers and GPU clusters can't decipher.
So that's a brief summary into the challenges that are faced.
If we ever do reverse engineer life I think we would become what historic literature classifies as "Gods".
- megalodon 11y agoYep, and most interactions are non-deterministic. I think we can safely say it won't happen in our lifetime. On the bright side, we have a lot to learn and learning is life :)
- Balgair 11y agoYellow Fluorescent Proteins are a great example of this. Very loosely speaking, there is this open ended barrel structure that 'hides' the fluorescent part in the center. The fluorescent part in the center will glow yellow when you hit it with blue-shifted light (Stoke's Shift). You send light in, and you get less energetic light out. What makes the florescent part glow yellow in color is an interaction between neighboring molecules. How do those parts interact, like the real guts of the interaction? Quantum Mechanics. Resonance energy transfer and all that jazz, oh you know, elementary graduate level quantum classes (/sarcasm). So when we say that the process is non-deterministic, maybe that is not quite right. Some of the processes are deterministic, in the sense that quantum mechanics is deterministic in the sense of probability density functions. Which is to say, who knows. Yeah, molecular biology is right on the edge of being total random noise and actually making things happen. Where any one part of a spaghetti mess of interactions falls on that edge in a given temperature, ph, or salinity level, well, we could use more funding.
- toufka 11y agoYou're sure in for a surprise then.
- dekhn 11y agoActually, protein design is fairly routine now. We used Exacycle, an idle-cycle computer at Google, to show that given reasonable amounts of computer time, design of proteins is a straightforward process. You don't need advanced supercomputers or even GPUs to solve this problem- just classic clusters- although GPUs (not supercomputers) speed up the rate significantly. The important reason why this works is that while "protein folding is an NP-hard problem" is technically true for computer scientists, the more important fact is "we have approximations to the NP-hard problem that are good enough to finish in hours if you have a 600Kcores working on it".
- bitL 11y agoSure, it's tough. But nevertheless, I am interested if there are at least some efforts I can look into? Like what you see in robotics, using pneumatic tubes attached to endoskeleton simulating biarticulate muscles allowing us to study kinematics of human body by some approximation (and being useful for orthopaedics), I am curious if there are some domain-specific languages for individual biological processes. I understand having a language covering all processes is an insane level of difficulty, but some initial localized approximations of languages should be possible and useful as well. Obviously, we all know F@H and other physical simulations, but I am not aware of something generative, language-style like (besides L-systems). What I want to see instead of scientific hypothesis->experiment->observing result->conclusion if we could instead think: "What do I need to do in order for this system to behave this way?" given some building blocks, like when we are creating an algorithm. So instead we can try to figure out some basic blocks, test hypotheses that these blocks are actually effective and figure out interactions that work (even if only probabilistically). Initially we will all laugh at results as being "stupid", but over time we can get to cover pretty complex systems (like going from wireframe 3D graphics to photo-realistic rendering).