Push: a stack language designed for genetic programming
related: http://onsingularity.com/item/2874
9 votes  by akkartik    8 comments   
(Sign in to add comments)


Comments

airobo    1 votes   Monday, January 21, 2008 at 8:10 PM
Edit: Looks a lot like Lisp. Why do most AI languages have a hard-to-read syntax?
[Reply]
akkartik    1 votes   Tuesday, January 22, 2008 at 9:39 AM
It's intended for automatic manipulation without causing syntax errors, not for humans to spend time in.

And it looks like lisp because it's implemented in lisp.
[Reply]
airobo    1 votes   Tuesday, January 22, 2008 at 1:10 PM
> not for humans to spend time in

I think you meant: not for regular everyday applications? Which is understandable. But, surely, the syntax could've been more intuitive with a little bit of syntax sugar. Example: "5+6" is easier to read than "5 6 +" and I bet would attract more programmers to use the language. Unless there is a reason for the syntax that I'm not aware of.
[Reply]
akkartik    1 votes   Tuesday, January 22, 2008 at 6:29 PM
:) No, I meant it's meant for computer programs to read, rewrite and evolve, not humans.

"Push is.. intended primarily for use in evolutionary computation systems (such as genetic programming systems), as the language in which evolving programs are expressed."

http://hampshire.edu/lspector/push3-description.html#Overview
[Reply]
julianmorrison    1 votes   Tuesday, January 22, 2008 at 5:31 PM
That's a beautiful language, and I like the way they've made it type-safe by generalizing from Forth's two stacks to n stacks. The code and exec stacks are clever too, although they would make it hard to implement efficiently in compiled code.
[Reply]
wal    1 votes   Tuesday, January 22, 2008 at 8:30 PM
This is really interesting. I just read akkarti's comment and the section about random code generation and then it hit me. First I thought it was a language for writing genetic algorithms. But actually you don't write programs with with Push, you simply randomly generate them (the randomizer can be written any language of your choice) and then create some sort of an evolutionary environment where some of the randomly generated programs survive and others die depending on preset tests. Repeat the cycle a few tens of thousands of generations until a program that does the task you want evolves. But that's going to a program that's impossible to debug ;)
[Reply]
akkartik    1 votes   Tuesday, January 22, 2008 at 8:42 PM
Yeah.

A key lesson from my AI textbook: finding the right representation is half the problem.
[Reply]
zkam83    1 votes   Thursday, January 24, 2008 at 1:14 PM
I think computers will take over programmers jobs earlier than we think. With a language like that and the powerful tools of automated testing, most programmers will not stand a chance.
[Reply]
Back to:
On Singularity


Join the discussion. Sign up and add your comments.