This extended abstract aims at provoking a wide discussion around code synthesis and its importance in creating the next generation of self-improving software systems. As a starting point for the discussion, a machine-to-machine self-improving framework is presented. The framework aims at improving system's performance by integrating two modules: i) a self-improving online module, and ii) a code synthesiser offline module. The online module learns, at runtime, as it handles the system's inputs, how to best compose the system from a pallet of available software components and a user-defined high level goal. The offline code synthesiser generates new components based on the perceived system's input, executing environment and the system's goal provided by the online module. The code synthesiser then provides better component options for the online module to integrate with the system to improve its performance. This abstract describes the framework, focusing on its main challenges.
[1]
Sebastian Nowozin,et al.
DeepCoder: Learning to Write Programs
,
2016,
ICLR.
[2]
Barry Porter,et al.
Losing Control: The Case for Emergent Software Systems Using Autonomous Assembly, Perception, and Learning
,
2016,
2016 IEEE 10th International Conference on Self-Adaptive and Self-Organizing Systems (SASO).
[3]
Barry Porter,et al.
REX: A Development Platform and Online Learning Approach for Runtime Emergent Software Systems
,
2016,
OSDI.
[4]
Amer Diwan,et al.
Performance Analysis of Cloud Applications
,
2018,
NSDI.
[5]
Barry Porter,et al.
Experiments in genetic divergence for emergent systems
,
2018,
GI@ICSE.
[6]
Westley Weimer,et al.
Neutrality and epistasis in program space
,
2018,
GI@ICSE.
[7]
Barry Porter,et al.
Defining Emergent Software Using Continuous Self-Assembly, Perception, and Learning
,
2017,
ACM Trans. Auton. Adapt. Syst..