Push is a programming language intended primarily for
use in evolutionary computation systems (such as
genetic programming systems), as the language in which
evolving programs are expressed. Push has an unusually
simple syntax, which facilitates the development (or
evolution) of mutation and recombination operators that
generate and manipulate programs. Despite this simple
syntax, Push provides more expressive power than most
other program representations that are used for program
evolution. Push programs can process multiple data
types (without the syntax restrictions that usually
accompany this capability), and they can express and
make use of arbitrary control structures (e.g.
recursive subroutines and macros) through the explicit
manipulation of their own code (via a 'CODE' data
type). This allows Push to support the automatic
evolution of modular program architectures in a
particularly simple way, even when it Push is employed
in an otherwise ordinary genetic programming system
(such as PushGP, which is a 'generic' GP system except
that it evolves Push programs rather than Lisp-style
program trees). Push can also support entirely new
evolutionary computation paradigms such as
'autoconstructive evolution,' in which genetic
operators and other components of the evolutionary
system themselves evolve (as in the Pushpop and
SwarmEvolve2 systems).
%0 Report
%1 Spector:push3tr
%A Spector, Lee
%A Perry, Chris
%A Klein, Jon
%A Keijzer, Maarten
%C USA
%D 2004
%K algorithms, genetic programming
%N HC-CSTR-2004-02
%T Push 3.0 Programming Language Description
%U http://www.hampshire.edu/cms_PDF/HC-CSTR-2004-02.pdf
%X Push is a programming language intended primarily for
use in evolutionary computation systems (such as
genetic programming systems), as the language in which
evolving programs are expressed. Push has an unusually
simple syntax, which facilitates the development (or
evolution) of mutation and recombination operators that
generate and manipulate programs. Despite this simple
syntax, Push provides more expressive power than most
other program representations that are used for program
evolution. Push programs can process multiple data
types (without the syntax restrictions that usually
accompany this capability), and they can express and
make use of arbitrary control structures (e.g.
recursive subroutines and macros) through the explicit
manipulation of their own code (via a 'CODE' data
type). This allows Push to support the automatic
evolution of modular program architectures in a
particularly simple way, even when it Push is employed
in an otherwise ordinary genetic programming system
(such as PushGP, which is a 'generic' GP system except
that it evolves Push programs rather than Lisp-style
program trees). Push can also support entirely new
evolutionary computation paradigms such as
'autoconstructive evolution,' in which genetic
operators and other components of the evolutionary
system themselves evolve (as in the Pushpop and
SwarmEvolve2 systems).
@techreport{Spector:push3tr,
abstract = {Push is a programming language intended primarily for
use in evolutionary computation systems (such as
genetic programming systems), as the language in which
evolving programs are expressed. Push has an unusually
simple syntax, which facilitates the development (or
evolution) of mutation and recombination operators that
generate and manipulate programs. Despite this simple
syntax, Push provides more expressive power than most
other program representations that are used for program
evolution. Push programs can process multiple data
types (without the syntax restrictions that usually
accompany this capability), and they can express and
make use of arbitrary control structures (e.g.
recursive subroutines and macros) through the explicit
manipulation of their own code (via a 'CODE' data
type). This allows Push to support the automatic
evolution of modular program architectures in a
particularly simple way, even when it Push is employed
in an otherwise ordinary genetic programming system
(such as PushGP, which is a 'generic' GP system except
that it evolves Push programs rather than Lisp-style
program trees). Push can also support entirely new
evolutionary computation paradigms such as
'autoconstructive evolution,' in which genetic
operators and other components of the evolutionary
system themselves evolve (as in the Pushpop and
SwarmEvolve2 systems).},
added-at = {2008-06-19T17:46:40.000+0200},
address = {USA},
author = {Spector, Lee and Perry, Chris and Klein, Jon and Keijzer, Maarten},
biburl = {https://www.bibsonomy.org/bibtex/22a7cf7d043bed8c89e4b1cae4f2e3930/brazovayeye},
institution = {School of Cognitive Science, Hampshire College},
interhash = {f1e2e18eb71718fe6b6e671b043023b6},
intrahash = {2a7cf7d043bed8c89e4b1cae4f2e3930},
keywords = {algorithms, genetic programming},
month = {10 September},
notes = {referenced by \cite{1068292}
Successor to the Push 2.0 Programming Language
Description, from which it borrows large chunks of
text.},
number = {HC-CSTR-2004-02},
size = {26 pages},
timestamp = {2008-06-19T17:52:10.000+0200},
title = {Push 3.0 Programming Language Description},
url = {http://www.hampshire.edu/cms_PDF/HC-CSTR-2004-02.pdf},
year = 2004
}