Exploring the Learnability of Program Synthesizers by Novice Programmers

Exploring the Learnability of Program Synthesizers by Novice Programmers
复制标题

DOI:
10.1145/3526113.3545659
复制
发表时间:
2022-10
期刊:
Proceedings of the 35th Annual ACM Symposium on User Interface Software and Technology
影响因子:
--
通讯作者:
Dhanya Jayagopal;Justin Lubin;Sarah E. Chasins
Dhanya Jayagopal;Justin Lubin;Sarah E. Chasins
中科院分区:
其他
文献类型:
--
作者:
Dhanya Jayagopal;Justin Lubin;Sarah E. Chasins

文献摘要

相似文献

现代程序合成器越来越多地通过自动生成代码来实现减轻编程负担的承诺,但很少有研究涉及我们如何使这种系统对所有人都是可学习的。在这项工作中,我们问:哪些方面的程序合成器有助于和减损他们的学习新手程序员?我们进行了一个主题分析的22个观察新手程序员,在此期间,新手与现有的程序合成器,然后参加了半结构化的采访。我们的研究结果揭示了合成器设计空间中的特定点如何影响新手程序员对这些工具的可学习性,包括合成器所需的规范类型,调用合成和接收反馈的方法以及规范的大小。我们还描述了常见的误解是什么构成有意义的进展和有用的规格的合成器,以及参与者的共同行为和使用这些工具的策略。从这个分析中,我们提供了一组设计机会,通知未来的程序合成器,努力学习的新手程序员的设计。这项工作是理解我们如何使程序合成器更容易被新手学习的第一步,这开辟了在教育环境中使用程序合成器以及面向新手程序员的开发工具的可能性。
Modern program synthesizers are increasingly delivering on their promise of lightening the burden of programming by automatically generating code, but little research has addressed how we can make such systems learnable to all. In this work, we ask: What aspects of program synthesizers contribute to and detract from their learnability by novice programmers? We conducted a thematic analysis of 22 observations of novice programmers, during which novices worked with existing program synthesizers, then participated in semi-structured interviews. Our findings shed light on how their specific points in the synthesizer design space affect these tools’ learnability by novice programmers, including the type of specification the synthesizer requires, the method of invoking synthesis and receiving feedback, and the size of the specification. We also describe common misconceptions about what constitutes meaningful progress and useful specifications for the synthesizers, as well as participants’ common behaviors and strategies for using these tools. From this analysis, we offer a set of design opportunities to inform the design of future program synthesizers that strive to be learnable by novice programmers. This work serves as a first step toward understanding how we can make program synthesizers more learnable by novices, which opens up the possibility of using program synthesizers in educational settings as well as developer tooling oriented toward novice programmers.