Self-Replicating Computer Programs

calhoun137
The Startup
5 min readMar 24, 2020

--

This is the first article in a series based on my original work on the theory of self-reproducing machines. In this article I lay out a new programming paradigm based on self replicating programs which I call bio-programming, explore the computational efficiency of these types of systems, and show how they can be used to solve some example problems more efficiently than other methods

Introduction

The first computer virus was invented by John Von Neumann in the basement of the Institute for Advanced Study soon after the first modern computer was built. This virus was “self-replicating”, and the reason Von-Neumann created the virus was not for any malicious purpose, but rather as part of his research on the theory of self-reproducing machines, which he did not complete before he died and was left unfinished. This theory represents the unaccomplished work of his life, and I have recently discovered a number of new results in this subject, and will be sharing my discoveries in a series of articles of which this is the first.

Although the theory of self-replicating programs has existed since the earliest days of computers, these types of systems remain mostly unexplored except in some esoteric parts of mathematics and computer science, such as the theory of cellular automata. The exponential growth of these types of programs enables a new type of exponential computational power which is on the level of the human nervous system, whereas traditional programs have a “linear” efficiency analogous to the human brain.

It’s possible to make an exponential gain in efficiency by using the method of self-replicating programs. I am calling this subject bio-programming, and in this article will lay out the new types of problems and challenges it presents.

Self-Replicating Programs

A self-replication program, or “bio-program” for short, is a type of Object which self-replicates during a given interval. The simplest example can be written in javascript as follows

BioObject = function() {
setInterval(function() {
console.log('replicating!')
new BioObject()
}, 1000)
}
new BioObject();

This is simply a bio-program which does nothing other than self-replicate. Try opening web-inspector and copy/pasting this code into the javascript console. You will see how the exponential growth of the number of BioObjects is very different from a standard object oriented programming paradigm.

The basic idea is that when a BioObject is instantiated, it will self-replicate at an interval of once per second (1000 ms), the total number of BioObjects will increase extremely rapidly, we will explore a more practical application of this program shortly, but first let’s consider the philosophical implications of this type of approach.

The Human Nervous System and the Brain

It’s clear that there are certain types of problems which are well suited for a standard imperative, object-oriented, or function programming approach. The choice to use bio-programs is not always the best tool for the job, but there are a wide class of problems for which bio-programs will be much more efficient than other approaches, for obvious reasons.

The guiding principle behind this approach is that whereas Turing Machines are like the human brain, Bio Programs are analogous to the human nervous system. The nature of my new results has to do with new insights into the computational power of the human nervous system and how it relates to macroscopic phenomenon. My approach involves heavily combining ideas which come from physics with ideas that come from biology and an understanding of the human nervous system. Examples of these types of approaches in computer science include: neural networks, genetic algorithms, and malicious viruses/worms.

These new results in the theory of self-reproducing machines also have applications in pure mathematics, computer science, artificial intelligence, weather prediction, terraforming, mining, galactic exploration, nanotechnology, medicine, public health, and cyber-security.

Example: Instantiating a lot of variables quickly

Let’s consider the toy problem of trying to write a program which instantiates 100,000,000 variables with different names to a value of 1 as efficiently as possible. Here is the javascript code for this example, see if you can write a program which beats it in the benchmarks. Warning: this might crash your browser tab.

num = 0;BioObject = function() {
setInterval(function() {
console.log('replicating!')
num++;
window['b' + num.toString()] = 1;

new BioObject()
}, 1)
}
new BioObject()

Bio-Programs

A bio-program is capable of performing many different types of functions, and the previous example is extremely simple. In order to understand how to generalize this method and make more progress, its helpful to look to the human nervous system, especially the nature of cell reproduction and activation of proteins in the DNA which give newly formed cells specific properties, tasks, and functionality.

In other words, a bio-program is one which upon replication, receives input and is instantiated in such a way that it takes on a specific function. By analyzing the entire system of all the bio-objects, its possible to use global properties of these types of systems to control their evolution. This is the basis of the method of genetic algorithms, which is an example of a method that is part of the subject of self-reproducing machines.

It’s clear then where to turn for guidance on any question about how to optimally design such a system, we must turn to nature, evolution, and the human nervous system. This provides a new approach and opens up new avenues for exploration in science which may be capable of solving previously unsolvable problems, and even creates new fields of research which currently do not exist.

Electronic Architecture

The underlying architecture of a computer is based on the theory of Turing Machines. The types of circuit boards used in modern computers are not optimally designed for running bio-programs, but nevertheless its easy to demonstrate their superiority for solving a wide class of problems even using these architectures. In the next article I will outline a new type of computer which I am calling a bio-computer for which traditional computers which currently exist are actually a special case.

tl;dr

The human nervous system has a massive computational power that results from the fact that the cells in our bodies self-replicate. By understanding the nature of the human nervous system, it’s possible to solve an extremely wide range of problems which were previously intractable.

--

--