Towards a New Generation of Program Synthesis Approaches