Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    text
    copied!<p>Have you heard of <a href="http://adam.ierymenko.name/nanopond.shtml" rel="noreferrer">nanopond</a>? The concept is similar to yours. Every pixel is given a randomly generated string that is run through a compiler. Usually, this doesn't produce any valid program. However, every once in a while, a randomly generated string will somehow be formatted just perfectly to be able to reproduce itself into a neighboring pixel. Soon, it becomes a battle for which program can reproduce better than the other.</p> <p>What you are talking about is a genetic algorithm, yes, but maximizing one thing and one thing alone: The ability to reproduce.</p> <p>This is the essential origin to <em>all</em> naturally-occurring negentropic phenomenon: a randomly formed complex entity has the ability to reproduce.</p> <p>Classical genetic algorithms impose <strong>artificial reproduction criteria</strong> -- the program that does a job the best is artificially chosen to reproduce.</p> <p>What you are implying is a sort of computational <strong>natural selection</strong>. That is, programs will evolve based on their ability to <strong>reproduce themselves</strong>, and nothing more.</p> <p>Will this create something useful? Perhaps not. Unless you, maybe, gave your programs access to the internet or some other external API that they can randomly access, and maybe spread over the internet.</p> <p>Unfortunately, your described system still has somewhat artificial reproduction criteria: the ability to compile.</p> <p>Because ability to compile = ability to reproduce, you have artificially set your programs to evolve towards compiling.</p> <p>Compiling what? It doesn't matter, because any program that compiles is as likely to reproduce as the last. Let's say you somehow generated a program that would output the Fibonacci Sequence. Or a program that could beat a chess Grandmaster. Cool! Unfortunately, would it be reproduced? Would it be special?</p> <p>Not at all; it'd be treated as "fit" for reproduction as the program <code>print('k')</code></p> <p>I suggest perhaps operating a framework of randomly-running strings of programs that have access to API's that can:</p> <ul> <li>Read/write to hard drive, and all of a sudden, you have programs that can write random strings as programs, themselves.</li> <li>Delete/modify other files on the hard drive; this allows maybe programs to compete with each other. Your API could be designed so that a file could only be deleted if the "strength" (arbitrary value...perhaps character length) of the program is stronger than the file.</li> <li>Run other scripts on the hard drive...perhaps even ones that they write themselves</li> <li>Access to the internet; to a web server? The ability to write/attach/send/read e-mails?</li> </ul> <p>I think a program that writes programs that can reproduce themselves could produce better results than a program which writes programs that can compile.</p> <p>Unless you only want the latter; then maybe you could maximize program length. But the possibility of something interesting happening? Not that much; any program that "compiles" with a certain length would be just as likely as "reproducing".</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload