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...
ver más
¿Tienes un proyecto y buscas un partner? Gracias a nuestro motor inteligente podemos recomendarte los mejores socios y ponerte en contacto con ellos. Te lo explicamos en este video
Proyectos interesantes
VERLAN
Verification and Language Theory
176K€
Cerrado
PAW
Automated Program Analysis for Advanced Web Applications
2M€
Cerrado
EXPLOSYN
Exploratory Program Synthesis
2M€
Cerrado
Fecha límite de participación
Sin fecha límite de participación.
Descripción del proyecto
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.