Invited Talk: Program Synthesis: Opportunities for the next Decade
Program synthesis is the contemporary answer to automatic programming. It innovates in two ways: First, it replaces batch automation with interactivity, assisting the programmer in refining the understanding of the programming problem. Second, it produces programs using search in a candidate space rather than by derivation from a specification. Searching for an acceptable program means that we can accommodate incomplete specifications, such as examples. Additionally, search makes synthesis applicable to domains that lack correct-by-construction derivation rules, such as hardware design, education, end-user programming, and systems biology.
The future of synthesis rests on four challenges, each presenting an opportunity to develop novel abstractions for “programming with search.” Larger scope: today, we synthesize small, flat programs; synthesis of large software will need constructs for modularity and stepwise refinement. New interaction modes: to solicit the specification without simply asking for more examples, we need to impose a structure on the candidate space and explore it in a dialogue. Construction: how to compile a synthesis problem to a search algorithm without building a compiler? Everything is a program: whatever can be phrased as a program can be in principle synthesized. Indeed, we will see synthesis advance from synthesis of plain programs to synthesis of compilers and languages. The latter may include DSLs, type systems, and modeling languages for biology. As such, synthesis could help mechanize the crown jewel of programming languages research — the design of abstractions — which has so far been done manually and only by experts.
My research group works on making it easier to write computer programs, mostly using program synthesis, a technique for computer-aided construction of software. Our research agenda is to develop programming languages and tools in which the human is allowed to give incomplete instructions; from these, a complete program is obtained in a dialogue with a “programmer assistant.”
Mon 18 Jan
|14:00 - 14:45|
Rastislav BodikUniversity of Washington, USA
|14:45 - 15:30|