Something to be aware of as a computer person coming into biology: Biology only _looks_ like it has logical constructs, abstraction layers, and general computational frameworks. When you start working with it, you'll find everything is messier than you expected and everything interacts with everything at every level. There are no abstractions, there are no actual boundaries, and your outputs are subject to evolutionary pressures even when sitting in a flask. Many an engineer has washed aground on the rocky shores of biological indeterminism - it's not a machine, no matter how much it kind of looks like one when you squint at it.
The I think about it is like this: Code is read and maintained by humans, so it is under selection pressure to be comprehensible by human minds.
Reality has no such constraint. If the biological processes of some animal lead to inscrutable irreducibly complex "spaghetti code" but the animal is slightly more likely to produce offspring... the complexity wins. The natural world doesn't care whether or not we can understand it.
(There is, of course, a natural selection pressure going the other direction. Brains that understand the natural world do seem to often be generally more likely to produce offspring, so there's evolutionary pressure for minds to understand the world, but not for the world to be understood by minds.)
I would argue that the evolutionary pressure only applies to a limited level of understanding of the physical world. Think how many kids people like Stephen Hawkings have and how many poorly educated people have.
On the other hand I would argue that evolutionary pressure works differently for modern humans in the 20th century and beyond than it did for the majority of human evolution.
Sure uneducated people now often have more kids due to less contraception options/knowledge and as old age insurance. But then again rich people have more kids than middle class because of well more money and everything that comes with it.
In any case all of this is anecdotal and emotion based because there is not much good data on this. Or maybe there is?
Do they? I am pretty sure that the vast majority of the human population is poor and not just "I can't afford an iPhone poor" but "I have no food on the table" poverty. The rich are but a tiny minority. In terms of reproduction, poor people win easily. Last time I check, rich people are more likely to be highly educated compare to anyone else and education is a predictor of reproduction rate (more education and less reproduction and less education and more reproduction).
The evolutionary pressure is a root here, but the problem isn't readability, it's the lack of abstraction.
The central dogma is DNA -> RNA -> protein, except that: 1. RNA can fold into a functional molecule 2. RNA can be spliced differently to make several different proteins 3. RNA can bind with proteins to create other functional units 4. The availability of amino acids and TRNA units within the cell affects the speed at which a protein is translated from RNA, which can affect its structure, which affects its function 5. The codon language is not guaranteed identical between organisms, which means the same RNA sequence can encode for different amino acid sequences in different organisms
And that's just in the transcription/translation machinery. That's what I mean when I say there's no abstraction: biology is a physical system, which means molecular & atomic interactions influence every level of every process.
In some way, neural networks and newer ML models seem to be going in this direction. We are starting to get faster/better results with black boxes than with if-else style code
Yes! Optimal designs may not be "elegant" from the human perspective. Reminds me of these complex computer generated airframe designs https://www.bbc.com/future/article/20181129-the-ai-transform....
I always find this kind of phrasing problematic due to its implicit anthrophomorphic metaphors.
Whether spaguetti code or not, I think that people often just assume that we have the capacity to understand it give the period of time between now and when humans disappear (because of evolution, a meteorite, climate change or human intervention). I am highly skeptical. Maybe, whatever species emerges after us, might have a better chance but to them we might be no different than a homo erectus is to us homo sapients.
I think the opposite is actually true for code that lives in long-running projects that change hands relatively often. It seems like the safest state for code to be in is actually to be incomprehensible, so it's too "scary" for any developer to refactor. All the comprehensible code can meanwhile be safely moved around until it's eventually incomprehensible as well.
Speaking from complete naivete about biology, I wonder if there's a similar game going on with viruses and cell machinery. If the cell's processes are too "legible", then presumably they're easier for a virus to evolve to hijack.
I would argue that it is only messy because we are looking at the wrong level of abstraction with an incorrect computational model. At the end of the day, if it has inputs and produces outputs, it is a computing device (i.e. a computer).
Seems like an overly broad definition. A pizza oven has inputs and outputs but you would probably struggle to find someone willing to call it a computer.
Does it? A button is not equivalent to an input anymore than pulling down a level that initiates a process that culminates in the lighting of a candle.
You put pizzas in and get pizzas out.
Just because you placed an object x inside an object y does not make y a computer -_- Computing is about data
We're using the definition you gave.
I said input though not "anything"
As a biologist who moved into software engineering I love working with actual machines.
You can think of a design, build it and have it work as you expect. You can’t do that in biology.
The reason is that we “understand” how computers work. Our understanding of biology is nowhere near that level. A high percentage of established knowledge is wrong or so incomplete that it’s not useful for designing new systems. This is hard for engineers or even scientists from physics and chemistry to accept.
I think another reason is that biological systems are _fantastically_ complicated - for example, we're finding that the spatial distribution of molecules within the cell affect enzymatic processes in ways that may have implications for alzheimer's and dementia. For another, there's various bacterial communities where, if you want to trace the enzymatic pathway for a particular product, you're jumping between species in the community, and not just once - that particular product is the result of multiple distinct enzymatic pathways in multiple different organisms (and whatever else exists in the environment outside the cell).
I've been a software engineer for 20 years now, I don't underestimate the complexity of computer systems or software - I think the number of people in the world who could really accurately describe every part of every system involved in showing you this note to you is maybe ten - but we've got nothing on biological systems.
I agree that biology is fantastically complicated.
When I say we “understand” everything that matters about a computer; I don’t mean one person understands. I mean each important part is understood by at least one person. Together humanity understands everything important about a computer.
Wondering if there would be an "easier" way to express something in biology/evolution, then the evolution would (already) compressed it like that.
Maybe by definition: current existing things in evolution are not "more compressable" (for us) without losing meaning? (Their meaning could be estimated though through -leaky- abstractions?)
So, basically like the legacy code base at any large enterprise :D
Years ago, someone here on HN compared evolution of the DNA to the evolution of large-scale code bases. This really stuck with me. One example that was brought up was: There is no single region in the DNA that's responsible for the human eye. More generally: The mapping between phenotype and genotype tends to be fuzzy and the individual role and impact of genes is often unclear. Now in a somewhat similar way, in large code bases the mapping between features and code can also become fuzzy, and the role of a single line of code can be surprising. There can be side effects and a ton of implicit/hidden dependencies across the code base, maybe even spooky action at a distance. As a result, product features will no longer be confined to individual code files or modules. Rather, their exact logic will spread out all across the code base, and a single line of code can affect many features at once.
Computers only look like they have windows, digital signals and logic gates. It's all just pixels, noisy voltages and imperfect silicon.
Sure, but because of the transistor’s nonlinearity (cutoff and saturation regions, for mosfet at least), we get digital logic. Digital logic means that errors don’t accumulate, and that prevents complexity from infecting everything in the computer. We can put neat little abstraction boxes around parts of the SoC, and then do the same with our software.
Digital computers are only noisy compared to the simplest processes, like a low rate transmission line. Compared to biological or chemical processes, a digital computer is just ludicrously low-noise, because noise doesn’t propagate unless there is a major fault.
Sounds like many a codebases I've worked on haha
The assumption that biological systems can be easily programmed or engineered has led to a lot of wasted Silicon Valley capital, misguided movements like "biohacking" and outright fraud, ranging from bogus supplements to devices promising better physical or mental health (search for "quwave defender" on Amazon or Google for one particularly noxious example).
So just like my codebase then
Yep -- there was a thread a while about whether a biologist could reverse-engineer a radio, and I made the comment that electronics are designed to keep the various functions nicely decoupled, while biological systems aren't/don't, because they optimize for something else, leading them to bleed state across the entire system:
https://news.ycombinator.com/item?id=32048972
(Also links to previous discussions on this theme.)
Biology being my first love I think what really leads non-biology based scientists, engineers, designers, artists, and people generallyastray is that they can’t liberate their mind from their top down all seeing perspective.
Teleological matter are the machines you get when the vast majority of the form cannot be designed.