Software that comes to life (post at CAS-Group Blog) : Is this possible ?
This is a difficult one. I will just give some questions and thoughts.
First : what is life ? In wikipedia there are a lot of definitions and it is not a clear-cut matter.
Rocks are not, people are, but are viruses alive ? Are computor viruses alive ?
Are genes alive ? Are memes alive ?
The only thing the last four can do is to get reproduced. Is this sufficient to be alive ?
In order to have evolution, you need change : reproduction errors (=mutations) or crossing over (=recombinations). A computor virus reproduces but does it change more or less at random (mutation), just like a organic virus ?
When I hear someone telling a joke, and I hear that same joke a year later, often it has changed somewhat. Conclusion : it has reproduced and mutated. Are jokes alive ?
That leads me to the contradiction in the title : “software that comes to life”. Means : first it was not alive, later on it was. It has evolved from dead to alive ! But to evolve, should it not had to be alive from the beginning ?
You can ask the same question about ourselves : one day dead matter must have made the transition to living matter. But for the last dead instance (call it Z) to evolve to something alive, it should have been alive already, otherwise it could not have evolved. The same goes for “Y”, the parent of Z and than for “X”, the parent of Y … Paradox !
So rather I should ask : is it possible to create living software ?
Minimalistic : I think yes. Computer viruses reproduce and some of them change (mutate) during the copying process in order to survive the danger of anti-virus softwares. They are already there.
Maximalistic : I also think yes.
For me maximalistically means : minimalistic plus some functionality that is useful, or at least can be selected for by people (positive selection in contrast to the negative selection of antivirus software : does this make sense ?).
A lot of softwares already have these properties. What they are lacking is the random mutations that can beneficial to them of detrimental. The open source softwares (linux etc…) come a bit in that direction because anyone can change them in whatever (random ? ) way.
But they are still algorithmic softwares. There is only one layer : the instructions.
The richness of real life is that the behaviour is a layer on top of the algorithms. The behaviour is a probabilistic functioning as a result of a huge amount of interregulating basic algorithms.
Unless we are able to make such software (for example based on concepts like artificial neural networks) that can learn to do some functionality, real living software will remain science fiction.
One step in that direction is the work by Ben Goertzel, head of Novamente (article on BBC News) who works on software that learns in virtual worlds like second life.