Bidirectional Object-Oriented Programming: Towards Programmatic and Direct Manipulation of Objects
Xing Zhang, Guanchen Guo, Xiao He, Zhenjiang Hu
摘要
Many bidirectional programming languages, which are mainly functional and relational, have been designed to support writing programs that run in both forward and backward directions. Nevertheless, there is little study on the bidirectionalization of object-oriented languages that are more popular in practice. This paper presents the first bidirectional object-oriented language that supports programmatic and direct manipulation of objects. Specifically, we carefully extend a core object-oriented language, which has a standard forward evaluation semantics, with backward updating semantics for class inheritance hierarchies and references. We formally prove that the bidirectional evaluation semantics satisfies the round-tripping properties if the output is altered consistently. To validate the utility of our approach, we have developed a tool called BiOOP for generating HTML documents through bidirectional GUI design. We evaluate the expressiveness and effectiveness of BiOOP for HTML webpage development by reproducing ten classic object-oriented applications from a Java Swing tutorial and one large project from GitHub. The experimental results show the response time of direct manipulation programming on object-oriented programs that produce HTML webpages is acceptable for developers.
问问这篇 Paper
问问你的智能体。
Lune 读过与它相关的顶会 Paper,每个回答都会注明依据哪几篇。
引用它的顶会 Paper3
- Fusing Direct Manipulations into Functional ProgramsXing Zhang, Ruifeng Xie, Guanchen Guo, Xiao He 等POPL 2024 · 被引用 5 次
- Fast Direct Manipulation Programming with Patch-Reconciliation CorrespondenceParker Ziegler, Justin Lubin, Sarah E. ChasinsPLDI 2025 · 被引用 1 次
- Direct Manipulation and Natural Language Programming, Together at Last?Parker Ziegler, David Minh-Duy Cao, Justin Lubin, Sarah E. ChasinsOOPSLA 2026
相关 Paper
- Synbit: synthesizing bidirectional programs using unidirectional sketchesMasaomi Yamaguchi, Kazutaka Matsuda, Cristina David, Meng WangOOPSLA 2021 · 被引用 6 次
- Towards Bidirectional Live Programming for Incomplete ProgramsXing Zhang, Zhenjiang HuICSE 2022 · 被引用 8 次
- Handling bidirectional control flowYizhou Zhang, Guido Salvaneschi, Andrew C. MyersOOPSLA 2020 · 被引用 12 次
- Verifying Functional Correctness Properties at the Level of Java BytecodeMarco Paganoni, Carlo A. FuriaFM 2023 · 被引用 9 次
- Decomposition diversity with symmetric data and codataDavid Binder, Julian Jabs, Ingo Skupin, Klaus OstermannPOPL 2020 · 被引用 2 次
