abstract = "Genetic programming (GP) is a stochastic, iterative
generate-and-test approach to synthesizing programs
from tests, i.e. examples of the desired input-output
mapping. The number of passed tests, or the total error
in continuous domains, is a natural objective measure
of a program's performance and a common yardstick when
experimentally comparing algorithms. In GP, it is also
by default used to guide the evolutionary search
process. An assumption that an objective function
should also be an efficient search driver is common for
all metaheuristics, such as the evolutionary algorithms
which GP is a member of. Programs are complex
combinatorial structures that exhibit even more complex
input-output behaviour, and in this chapter we discuss
why this complexity cannot be effectively reflected by
a single scalar objective. In consequence, GP
algorithms are systemically under informed about the
characteristics of programs they operate on, and pay
for this with unsatisfactory performance and limited
scalability. This chapter advocates behavioural program
synthesis, where programs are characterised by
informative execution traces that enable multifaceted
evaluation and substantially change the roles of
components in an evolutionary infrastructure. We
provide a unified perspective on past work in this
area, discuss the consequences of the behavioral
viewpoint, outlining the future avenues for program
synthesis and the wider application areas that lie
beyond.",