Sunday, February 03, 2008

Idea for a programming experiment

This is something that I thought of after I wrote about PZ Myer's article in Seed.

I mentioned in that post, that sometimes virus programmers will create self-mutating programs in order to evade detection by the anti-virus software. Since us security folks tend to nip these nasty little programs in the bud, they don't get a chance to propagate. What if they were allowed to propagate in a controlled environment? Perhaps, over millions of iterations of random mutations a useful program can emerge.

Can computer programs evolve from something simple to something more complex without the presence of a designer or coders? If true, this could prove useful in cutting down on the man hours of programming. I seriously doubt we'll end up with something like SkyNet from the Terminator movies, but it could generate something interesting to study.

What I propose is to create a self-mutating program in a controlled environment. Let the program spawn mutated variations of itself then test those mutations for usefulness. The mutations should be random additions and alterations of program code. Selected pieces of functional code can be also patched together at random. A selector program will then perform automated test on the resulting programs to see if they are worthy of propagation. Those that meet the worthiness test are allowed to propagate and mutate again. This can go on for however long the controlled environment can support the process and resulting programs.

I don't have the facilities to create such a controlled environment, but I suspect some colleges or universities do. It should be something a graduate Computer Science student could do as a class project.

No comments:

Post a Comment