3 ms·
If I'm understanding you correctly, you're assuming that "software evolution" refers to random mutations in the software's core source code? If so, I might be
by whack 10y ago
If I'm understanding you correctly, you're assuming that "software evolution" refers to random mutations in the software's core source code?
If so, I might be inclined to agree with you on that narrow point, but software/AI programs can still evolve in other major ways. Assuming an AI that operates on the basis of Neural Networks for example, it could evolve its number of layers, the size of each layer, its sensitivity to new information, and other such parameters.
It's not clear if the concept of predator-prey makes any sense in the context of software programs, but invader-defender and virus-host relationships could certainly exist in a advanced software ecosystem, similar to in nature.
The premise of the essay seems a little too far-fetched for me to seriously worry about it, but it does seem like a great premise for a sci-fi novel.
- mnemonicsloth 10y agoIf you insert a random nucleotide into a DNA sequence, the protein you get is usually very similar to the old one. But if you insert a random branch instruction into the object code of a working program, the results are somewhat different. The problem with software evolution is that the adjacent points in program representation space -- whether it's source space or binary , neural network parameters or whatever -- are not viable individuals that can participate in an evolving population. They code for junk -- stillborn offspring. This isn't terribly surprising. The apparatus that powers living systems and makes DNA sequence space so nice took almost a billion years to evolve. Building a such a system in silico, one that is both that flexible and that forgiving, is not likely to happen anytime soon. But you're right. I'd totally read the sci-fi novel.
- eldondev 10y ago> But if you insert a random branch instruction into the object code of a working program, the results are somewhat different. Maybe, maybe not. I've observed lots of dead code in my time developing, where inserting random instructions would have no impact whatsoever. Inserting random instructions into a give program may have negative side effects, it may not. But (without having read your reference, though I might, or the linked article here), most of the source and object code that exists is highly specified and functionally dense. These are the ways we code when we want something very optimized and not broadly adaptive. Essentially you could say that almost all of the code we are writing is rain man style code. Good at some few sets of things in specific conditions. I think it is possible that there will exist (although perhaps not written in the same way) code where less of the genome is lethal, and there is more "wiggle room" for code to expand and change as a system. The stillborn offspring we might encounter if todays systems were "genetically evolved" are the equivalent of disseminated haploid genetic material. I think the conditions for conception (if you'll ride with me on my beaten metaphor) are not so far off as you may think, even if they are very different in terms of compilation/process execution/parallelism. While much of the code we write still mirrors the serial logic we often apply in the sciences, it is neither a foregone conclusion that software will continue exclusively in that way, nor a lack of capabilities of modern infrastructure to achieve parallelism comparable to some biological systems.
- joshmarlow 10y agoThe novel "StarFish" by Peter Watts (and it's sequel) plays with this notion a bit actually.