The Three Pillars of Machine Programming Justin Gottschlich Armando Solar-Lezama Nesime Tatbul Intel Labs, USA MIT, USA Intel Labs and MIT, USA
[email protected] [email protected] [email protected] Michael Carbin Martin Rinard Regina Barzilay MIT, USA MIT, USA MIT, USA
[email protected] [email protected] [email protected] Saman Amarasinghe Joshua B. Tenenbaum Tim Mattson MIT, USA MIT, USA Intel Labs, USA
[email protected] [email protected] [email protected] Abstract In this position paper, we describe our vision of the future of machine programming through a categorical examination of three pillars of research. Those pillars are: (i) intention, (ii) in- vention, and (iii) adaptation. Intention emphasizes advance- ments in the human-to-computer and computer-to-machine- learning interfaces. Invention emphasizes the creation or refinement of algorithms or core hardware and software building blocks through machine learning (ML). Adaptation emphasizes advances in the use of ML-based constructs to autonomously evolve software. Keywords program synthesis, machine programming, soft- ware development, software maintenance, intention, inven- tion, adaptation Figure 1. The Three Pillars of Machine Programming: Inten- 1 Introduction tion, Invention, and Adaptation. Each pillar in the diagram Programming is a cognitively demanding task that requires includes a few example sub-domains generally related to extensive knowledge, experience and a large degree of cre- them. ativity, and is notoriously difficult to automate. Machine learning (ML) has the capacity to reshape the way soft- ware is developed. At some level, this has already begun, it adapts to changes in the program’s goals, errors in the as machine-learned components progressively replace com- program, and the features in new computer platforms.