程序设计语言实验室两篇论文被OOPSLA'23接收
时间:2023年02月25日 00:00 来源:作者:
软件工程领域顶级会议OOPSLA’23近日公布论文录用名单,程序设计语言研究室两篇论文《Improving Oracle-Guided Inductive Synthesis by Efficient Question Selection》,《Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects》被该会议录用。
标题:Improving Oracle-Guided Inductive Synthesis by Efficient Question Selection
作者:吉如一、孔朝哲、熊英飞*、胡振江
摘要:
预言制导的程序合成 (OGIS) 是一个将程序合成技术应用到实际场景的框架,目前已经得到了广泛应用。而询问选择问题旨在通过在通过选择适当的询问来减少 OGIS 迭代的轮数。理论上,如果一个询问选择器可以高效地找到合适的询问,那么它就可以一般性地提升 OGIS 求解器的性能,无论是在交互式问题还是在非交互式问题上。然而,已有的询问选择方法都远远不够高效。为了找到合适的询问,它们将询问选择问题转化为一个十分困难的优化问题,因此往往需要花费很长的时间用于求解。
在这项工作中,我们提出了一个新颖的询问选择器 LearnSy,它可以高效地找到合适的询问从而首次达成了对 OGIS 求解器的一般性提升。我们注意到,以前工作所关注的优化问题的主要难点在于复杂的程序语义,因此,我们尝试引入简单的随机过程来拟合这些复杂的语义,从而使高效的询问选择变为可能。与此同时,我们也给出了我们的方法在近似精度上的一些理论保障。
我们的实验结果表明,在交互式的程序合成任务上,LearnSy 在减少交互轮数方面可以在更加通用的情况下,取得与已有的询问选择器类似的效果;而在非交互的程序合成任务上,LearnSy 可以将已有 OGIS 求解器的时间开销减少至多 43%。
标题:Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects
作者:张星、郭冠琛、何啸、胡振江
摘要:
许多双向编程语言,主要是函数式语言和关系式语言,都被设计为支持编写正向和反向运行的程序。尽管如此,对实践中比较流行的面向对象语言的双向化研究却很少。本实验室论文《Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects》提出了第一个双向的面向对象语言,它支持对对象的编程和直接操作。具体来说,该论文仔细地扩展了一种核心的面向对象语言,该语言具有标准的前向计算语义,对类的继承层次和引用具有后向更新语义。该论文正式证明,如果输出被一致地改变,双向计算语义就满足了往返属性。为了验证方法的实用性,作者开发了一个叫做BiOOP的工具,用于通过双向GUI设计生成HTML文档。通过重现Java Swing教程中的十个经典的面向对象的应用程序和GitHub上的一个大型项目来评估BiOOP在HTML网页开发中的表现力和有效性。实验结果显示,直接操作编程对产生HTML网页的面向对象程序的响应时间对开发者来说是可以接受的。