LooPy: interactive program synthesis with control structures

LooPy: interactive program synthesis with control structures
复制标题

LooPy:具有控制结构的交互式程序合成

DOI:
10.1145/3485530
复制
发表时间:
2021
影响因子:
--
通讯作者:
Polikarpova, Nadia
Polikarpova, Nadia
中科院分区:
--
文献类型:
--
作者:
Ferdowsifard, Kasra;Barke, Shraddha;Peleg, Hila;Lerner, Sorin;Polikarpova, Nadia

文献摘要

参考文献

被引文献

相似文献

程序综合,特别是示例编程(PBE)的一个远景是集成到开发环境中的交互式程序员助手。为了使程序合成在交互式使用中实用,small - step Live PBE的前期工作建议将合成的范围限制为小代码片段,并允许用户为这些代码片段提供本地规范。然而,这种范例在存在循环的情况下不能很好地工作。我们介绍了LooPy,一个集成到实时编程环境中的合成器,它扩展了Small-Step live PBE以在循环中工作,并扩展了它以合成更大的代码片段,同时保持了足够快的交互使用速度。为了允许用户在各种循环迭代中有效地提供示例,即使在循环体不完整的情况下,LooPy使用了实时执行,这是一种利用程序员作为oracle来跳过循环的不完整部分的技术。为了能够以交互速度合成循环体,LooPy引入了中间状态图(intermediate State Graph),这是一种新的数据结构,它紧凑地表示由多个赋值语句和条件组成的大量代码片段。我们使用竞争性编程和以前的合成器的基准对LooPy进行了经验评估,并表明它可以以交互速度解决各种各样的合成任务。我们还进行了一个小的定性用户研究,表明LooPy的块级规范对程序员来说很容易提供。
One vision for program synthesis, and specifically for programming by example (PBE), is an interactive programmer's assistant, integrated into the development environment. To make program synthesis practical for interactive use, prior work on Small-Step Live PBE has proposed to limit the scope of synthesis to small code snippets, and enable the users to provide local specifications for those snippets. This paradigm, however, does not work well in the presence of loops. We present LooPy, a synthesizer integrated into a live programming environment, which extends Small-Step Live PBE to work inside loops and scales it up to synthesize larger code snippets, while remaining fast enough for interactive use. To allow users to effectively provide examples at various loop iterations, even when the loop body is incomplete, LooPy makes use oflive execution, a technique that leverages the programmer as an oracle to step over incomplete parts of the loop. To enable synthesis of loop bodies at interactive speeds, LooPy introducesIntermediate State Graph, a new data structure, which compactly represents a large space of code snippets composed of multiple assignment statements and conditionals. We evaluate LooPy empirically using benchmarks from competitive programming and previous synthesizers, and show that it can solve a wide variety of synthesis tasks at interactive speeds. We also perform a small qualitative user study which shows that LooPy'sblock-levelspecifications are easy for programmers to provide.
完美是优秀的敌人:尽力而为的程序综合(神器)
DOI: 10.4230/darts.6.2.16
发表时间: 2020
期刊: 2016 IEEE 32nd International Conference on Data Engineering (ICDE)
影响因子: --
作者:
Hila Peleg;N. Polikarpova
通讯作者: N. Polikarpova
DOI: 10.1145/3296979.3192382
发表时间: 2017-11
影响因子: --
作者:
Yu Feng;R. Martins;O. Bastani;Işıl Dillig
通讯作者: Yu Feng;R. Martins;O. Bastani;Işıl Dillig
DOI: 10.1145/3360594
发表时间: 2019-10-01
影响因子: 1.8
作者:
Bavishi, Rohan;Lemieux, Caroline;Stoica, Ion
通讯作者: Stoica, Ion
为交互式综合提供工具支持
DOI: 10.1145/2814228.2814235
发表时间: 2015
期刊: 2015 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software (Onward!)
影响因子: --
作者:
Shaon Barman;Rastislav Bodík;S. Chandra;Emina Torlak;A. Bhattacharya;D. Culler
通讯作者: D. Culler
投影盒:用于现场编程的动态可重构可视化
DOI: --
发表时间: 2020
期刊: International Conference on Human Factors in Computing Systems
影响因子: --
作者:
Sorin Lerner
通讯作者: Sorin Lerner