TY - GEN
T1 - Small-step live programming by example
AU - Ferdowsifard, Kasra
AU - Ordookhanians, Allen
AU - Peleg, Hila
AU - Lerner, Sorin
AU - Polikarpova, Nadia
N1 - Publisher Copyright: © 2020 Owner/Author.
PY - 2020/10/20
Y1 - 2020/10/20
N2 - Live programming is a paradigm in which the programming environment continually displays runtime values. Program synthesis is a technique that can generate programs or program snippets from examples. \deltextThis paper presents a new programming paradigm called Synthesis-Aided Live Programming that combines these two prior ideas in a synergistic way. When using Synthesis-Aided Live Programming, programmers can change the runtime values displayed by the live \addtextPrevious works that combine the two have taken a holistic approach to the way examples describe the behavior of functions and programs. This paper presents a new programming paradigm called Small-Step Live Programming by Example that lets the user apply Programming by Example locally. When using Small-Step Live Programming by Example, programmers can change the runtime values displayed by the live visualization to generate local program snippets. % Live programming and program % synthesis work perfectly together because the live programming environment % reifies values, which makes it easy for programmers to provide the examples % needed by the synthesizer. We implemented this new paradigm in a tool called \toolname, and performed a user study on $13$ programmers. Our study finds that Small-Step Live Programming by Example with \toolname helps users solve harder problems faster, and that for certain types of queries, users prefer it to searching the web. Additionally, we identify the \usersynthgap, in which users' mental models of the tool do not match its ability, and needs to be taken into account in the design of future synthesis tools.
AB - Live programming is a paradigm in which the programming environment continually displays runtime values. Program synthesis is a technique that can generate programs or program snippets from examples. \deltextThis paper presents a new programming paradigm called Synthesis-Aided Live Programming that combines these two prior ideas in a synergistic way. When using Synthesis-Aided Live Programming, programmers can change the runtime values displayed by the live \addtextPrevious works that combine the two have taken a holistic approach to the way examples describe the behavior of functions and programs. This paper presents a new programming paradigm called Small-Step Live Programming by Example that lets the user apply Programming by Example locally. When using Small-Step Live Programming by Example, programmers can change the runtime values displayed by the live visualization to generate local program snippets. % Live programming and program % synthesis work perfectly together because the live programming environment % reifies values, which makes it easy for programmers to provide the examples % needed by the synthesizer. We implemented this new paradigm in a tool called \toolname, and performed a user study on $13$ programmers. Our study finds that Small-Step Live Programming by Example with \toolname helps users solve harder problems faster, and that for certain types of queries, users prefer it to searching the web. Additionally, we identify the \usersynthgap, in which users' mental models of the tool do not match its ability, and needs to be taken into account in the design of future synthesis tools.
KW - Live programming
KW - Program synthesis
UR - http://www.scopus.com/inward/record.url?scp=85096962158&partnerID=8YFLogxK
U2 - 10.1145/3379337.3415869
DO - 10.1145/3379337.3415869
M3 - منشور من مؤتمر
T3 - UIST 2020 - Proceedings of the 33rd Annual ACM Symposium on User Interface Software and Technology
SP - 614
EP - 626
BT - UIST 2020 - Proceedings of the 33rd Annual ACM Symposium on User Interface Software and Technology
T2 - 33rd Annual ACM Symposium on User Interface Software and Technology, UIST 2020
Y2 - 20 October 2020 through 23 October 2020
ER -