# Could abiogenesis occur within software environments?

Within software environments there is a variety of malware such as viruses, trojans, bots and so forth. This malware is created by human programmers to accomplish specific purposes (e.g. steal personal information, pointless terrorism, etc). However, given the right circumstances, is it not possible that analogues of biological ecosystems might arise which use self-replicating computer code in lieu of biological molecules?

• Could you describe what you're trying to accomplish? As a programmer I want to say both "Yes" and "No" with equal vehemence. I need more information before I can reply with any certainty. Generally speaking I could imagine a "smart" virus trying to exploit new vulnerabilities in a system, and an equally "smart" anti-virus creating new ways in which to shut said virus down. But that sort of code would be years - if not decaded - ahead of what we have right now. – AndreiROM Jul 25 '16 at 18:55
• There are many, many computer programs and algorithms that replicate some natural process in a digital sense. However, without further information, I don't know if these apply to what you want. – knowads Jul 25 '16 at 19:13

It's certainly possible. We see some intentional variants on abiogenesis occurring in some select areas. For example, consider the game Core Wars where two programs are put in the same memory space, and the first to stop executing loses. There are "evolution hills" where the warriors that compete must be generated by computer algorithms such as genetic algorithms or simulated annealing.

One of the big challenges for abiogenesis is that the instruction space for our computers is very picky. Redcode, the language used in Core Wars, was intentionally designed to minimize the number of invalid opcodes. With too many invalid opcodes, the probability of a program simply killing itself off is too great. Modern processor instruction sets are optimized for speed, not to be friendly to evolved programs.

One other challenge is the lack of parallelism in modern computing. In the real world evolution of life, billions upon billions of interactions could be occurring in parallel, vastly increasing the probability of something exciting happening. In computers, more than a thousand simultaneous threads of execution is relatively rare, calling for either GPU style work (which is not conducive to abiogenesis... that environment is even more tricky to use) or massive computing clusters like Blue-Genes.

You also have to consider that this has to happen without someone simply pulling the plug. When things go wrong, the first thing IT tells you to do is power cycle. And thus you do, making yourself complicit in cyber murder of your new infant digital lifeform.

Biological organisms compete for food and energy (for example, plants compete for access to the sun, animals compete for plant food and other animals as food, etc). They are driven by the need to reproduce and gain these resources. Every bacteria on earth "wants" food (of some kind) and to reproduce. What would be the fundamental "motivation" of software code? Code itself does not need to "eat". It can instantly be replicated an infinite number of times. Code can last forever without changing given a sufficient storage medium. Really, the only thing I could think of that would drive an "ecosystem" for self-replicating code would be hardware. You would compete for hardware space, try to replicate yourself across multiple servers, and erase competitors who took up too much room perhaps. Maybe the need to preserve one's code would drive "software organisms" to "fight" over data center habitat? Of course, all you would have to do is get yourself loaded onto a DVD and stored somewhere and you'd be sure there would be a backup copy somewhere for a very long time.

I don't quite see how an "ecosystem" could evolve since code organisms would not want anything from other code organisms except to erase them to claim whatever hardware hosted the others. As a side effect, all of this would probably make any internet/interconnected IT system almost unusable for humans.

• What about code driven by its programmer? The "organisms" could be evolving code designed to accomplish a specific task given to it by its programmer like in this question. Of course their behavior would depend enormously on their individual goal. One program might attempt to be simultaneusly executed as many times as possible, another to be copied and executed on as many different systems as possible. – Annonymus Jul 25 '16 at 19:53
• If you have a program that simply does some geometric or other operations and another program operating on the same space, emergent phenomena can easily occur. One might argue that protein molecules don't have a 'desire', but interactions give rise to systems that are naturally adaptive to their environment. This defines a new set of operations and the various ways these operations combine to develop life are not the same as the operations of the individual proteins. – Garet Claborn Jul 25 '16 at 21:23

I would say no, for the same reason that abiogenesis cannot occur now. Also, you should probably replace the bio part for your software question. (Analgogenesis sounds dirty, Noralgogenesis?)

Abiogenesis cannot occur, in nature, now because there are already all these biological organisms running around eating and emitting waste products; if anything new somehow could form, without being the by-product of something already in existence, it would get gobbled up faster than anyone could see it.

Your digital equivalent would have to happen on a machine without other software running on it to really be that kind of genesis, otherwise it's just a mutation. (evolution)

When you think of an ecosystem, remember that everything has a function, like a living organism. Resources are distributed in balanced manner. Everything that happens works together in order to support the health of the system. What does this correspond to in a computer? The operating system. The kernel - the lowest level of any OS - allocates the use of system resources, like disk space, memory, and CPU.

Operating systems are, of course, human-authored, and they typically use a cooperative scheme instead of competition. I could see (many many years down the road) a very advanced set of software on top of the OS using genetic algorithms to modify its own kernel and packages to make them more robust or efficient.

It doesn't have to be within the same computer, though. It would be plausible (again, distant future) to have malware/anti-malware tennis match occurring in which multiple systems are at war over a network. Think of cyber-warfare between major nation-states that has become autonomous.

More details and context is required for a specific answer, though.