Jump to content

Why hasn't anyone invented a program that can write a program?


123person

Recommended Posts

The program that it writes doesn't have to be a complex one -- it would just be a starting point, then the program's creations could become increasingly more complex in the years thereafter.

It has been tried, with limited success. When you examine the problem closely, there are challenges no one has been able to solve. For example, such a program needs to know whether a new program does something useful, and if it does, is the current program a better solution or not than one that already exists.

Link to comment
Share on other sites

 

It has been tried, with limited success. When you examine the problem closely, there are challenges no one has been able to solve. For example, such a program needs to know whether a new program does something useful, and if it does, is the current program a better solution or not than one that already exists.

 

Do you guys know of any authors I could research?

Link to comment
Share on other sites

There was a space game a few years ago which would increase in complexity the longer it was played you start at level 1 and there was no limit to the number of levels. Also in a large number of online games NPC characters are generated by the game for the player to fight each NPC has it's own program to follow. Some games randomly generate NPC characters you can talk to, or who will fight with you in the game.

Edited by fiveworlds
Link to comment
Share on other sites

Here is an early example: http://en.wikipedia.org/wiki/The_Last_One_%28software%29

 

The problem is that writing code is not the hard part: the hard part is defining the problem in sufficient detail. The reason that products the The Last One fail is because you still have to define what the code has to do, in detail, in some form. And that means you end with another programming language.

 

But there are uses for automatic generation of programs. A common one in my industry is the generation of random but valid code sequences for test purposes: the idea being to generate software tests that provide good coverage.

 

Another example is the use of genetic methods to find the best algorithm for an application.

Link to comment
Share on other sites

Do you guys know of any authors I could research?

I don't know of any successes that resulted in peer reviewed published papers. Related work has been done in Self Modifying Code, you can follow the references herein. I've seen papers discussing the ideas in the news a rag. Quines are interesting. I think everyone agrees that it will take the AI singularity to achieve a program that can write significant programs.

Link to comment
Share on other sites

It has been tried, with limited success. When you examine the problem closely, there are challenges no one has been able to solve. For example, such a program needs to know whether a new program does something useful, and if it does, is the current program a better solution or not than one that already exists.

I thought it could be a process of evolution. Have random additions etc and see if there is any logic in the new bit that improves or adds to the previous bits.

Link to comment
Share on other sites

There was a space game a few years ago which would increase in complexity the longer it was played you start at level 1 and there was no limit to the number of levels. Also in a large number of online games NPC characters are generated by the game for the player to fight each NPC has it's own program to follow. Some games randomly generate NPC characters you can talk to, or who will fight with you in the game.

 

Again, and again, it has nothing to do with subject of this thread..

Learning by NPC is not implemented by self-modifying code and then execution of that code, but storing data in database. Ready code is just reading and writing database.

No limit in levels - because they're randomly generated.

Edited by Sensei
Link to comment
Share on other sites

I thought it could be a process of evolution. Have random additions etc and see if there is any logic in the new bit that improves or adds to the previous bits.

 

You see this with artificial life programs. Something needs to define the problem though.

 

here's a good example: http://rednuht.org/genetic_walkers/

 

If you want something a bit meatier to look at:

 

 

 

''''''''''''''''''''''''  Gene:  1 Begins at position  1  '''''''''''''''''''''''
 cond
 dropbool
 -24 -749 -49 *0 inc
 12 0 dup *.trefbody mod false
 else
 .shoot inc

''''''''''''''''''''''''  Gene:  1 Ends at position  16  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  2 Begins at position  17  '''''''''''''''''''''''
 start

''''''''''''''''''''''''  Gene:  2 Ends at position  17  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  3 Begins at position  18  '''''''''''''''''''''''
 start
 7 true
 236 298 282 317 mult dropbool
 240 383 *370 angle xor
 <=
 400 rnd & add store
 *.aimright sub -38 dec
 %=
 -44 inc
 ~ 48
''''''''''''''''''''''''  Gene:  3 Ends at position  46  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  4 Begins at position  47  '''''''''''''''''''''''
 start
 dec
 1282 angle %=
 *-29 -- =
 9 -36
''''''''''''''''''''''''  Gene:  4 Ends at position  56  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  5 Begins at position  57  '''''''''''''''''''''''
 start
 =
 >=
 and
 <
 dec
 inc
 2 .sx store
 pow *.focuseye ++ sub stop
''''''''''''''''''''''''  Gene:  5 Ends at position  71  '''''''''''''''''''''''
 .robage store

''''''''''''''''''''''''  Gene:  6 Begins at position  74  '''''''''''''''''''''''
 else
 | <
 -45 inc
 store
 * .timer store
 & >

''''''''''''''''''''''''  Gene:  6 Ends at position  84  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  7 Begins at position  85  '''''''''''''''''''''''
 start
 .shoot dec
 & sqr not
 ~ or

''''''''''''''''''''''''  Gene:  7 Ends at position  92  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  8 Begins at position  93  '''''''''''''''''''''''
 cond
 inc
 floor 2 -1 ^
''''''''''''''''''''''''  Gene:  8 Ends at position  98  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  9 Begins at position  99  '''''''''''''''''''''''
 cond

''''''''''''''''''''''''  Gene:  9 Ends at position  99  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  10 Begins at position  100  '''''''''''''''''''''''
 cond
 sqr ++ -219 overbool
 start
 store
 108 181
''''''''''''''''''''''''  Gene:  10 Ends at position  108  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  11 Begins at position  109  '''''''''''''''''''''''
 cond
 dec
 false
 *-222 mult 1067 overbool
 *.aimleft else
 * dropbool
 7
''''''''''''''''''''''''  Gene:  11 Ends at position  120  '''''''''''''''''''''''
''''''''''''''''''''''''  Gene:  12 Begins at position  121  '''''''''''''''''''''''
 start
 dec
 *.dn and
 << 59 * -18 16 clear mod <=
 and
 <<''''''''''''''''''''''''  Gene:  12 Ends at position  134  '''''''''''''''''''''''

 

 

 

Code not written by any human being...

 

More like molding clay than programming when you are working with it.

Link to comment
Share on other sites

I started doing something like "evolution" some years back but I was using Windows Basic (like the language of Excel macros).

I thought of an Excel workbook as an organism well at least a protein and I would get a macro to write the RNA and DNA code to get the organism to live and reproduce. That was as far as I got but I was then going to try and make it evolve but gave up for some reason.

Link to comment
Share on other sites

A program can only run until a solution has been fulfilled and then it will repeat, waiting for the next problem. Even if the computer program finds a solution an unknown problem, to foresee an outcome beyond the said solution is impossible. In other words, it must redefine itself prior to solving the problem, in anticipation of a solution that it did not yet solve, in order to prevent itself from looping.

That would require foresight into the future, which computers do not have, yet.

Link to comment
Share on other sites

Have you worked with any artificial life programs?

 

Decent ones will run just as long as you feel like letting them without entering into any kind of loop.

 

Programs adapting forcing other programs to adapt is the main key(digital version of the Red Queen Hypothesis). If the search space isn't static then a 'final' solution will never be reached.

Link to comment
Share on other sites

  • 3 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.