Programming with Millions of Examples
Start date: Mar 1, 2014,
End date: Feb 28, 2019
"The goal of this proposal is to make programming easier and more productive. We propose to develop novel program synthesis techniques, generating procedural code from declarative specifications.Existing techniques apply synthesis at such a fine grain that they can never hope to generate code of the richness and complexity required by application-level programmers. In contrast, we aim to develop synthesis algorithms that leverage the collective programming knowledge captured in millions of open-source projects.By using existing code fragments as components for synthesis, we enable synthesis to work at a higher-level of abstraction and synthesize realistic programs. Our approach represents a conceptual leap as it reduces the problem of generating code to the problem of checking whether existing code (or a combination of existing code fragments) is an appropriate solution. In some cases, this reduces the problem of synthesis to a problem of semantic code search. In other cases, it reduces the problem of synthesis over fine-grained components to synthesis as composition of coarse-grained components. The key problems are how to specify the desired behavior, how to find useful code fragments in the vast existing body of software, and the how to use synthesis to modify and assemble these fragments to form a program.Our approach combines insights and techniques from research on program analysis, program synthesis, software engineering, and machine learning. The outcome of the project will be new research directions."
Get Access to the 1st Network for European Cooperation