EXHIBIT : Expressive High-Level Languages for Bidirectional Transformations
EXHIBIT : Expressive High-Level Languages for Bidirectional Transformations
批准号:
EP/T008911/1
负责人:
Meng Wang
金额:
$54.46万
依托单位:
依托单位国家:
英国
项目类别:
Research Grant
财政年份:
2020
资助国家:
英国
项目状态:
未结题
起止时间:
2020 至 --
中文摘要
在计算机系统中,数据的副本经常以不同的格式存储。双向转换是将数据成对同步的程序:当一种格式发生更改时,会运行相应的转换以将更改合并到另一种格式中。对于被认为是正确的双向转换,它们通常被期望满足“往返”:如果A被转换成B,然后再转换回来,它将返回相同的A。这种双向转换模式不仅适用于数据同步,而且更广泛地适用于数据同步。它们构成了现代软件工程的基本部分,高级模型形式的设计(通常是机械地)转换为低级实现,人们经常需要从更新的实现对修订的高级模型进行逆向工程。传统上,双向转换被编程为相反方向上的单独转换,然后组合在一起进行双向转换。但这是非常棘手的,因为程序员必须手动保证往返,而且维护起来更加棘手,因为更改一个需要对另一个进行匹配更改。事实上,由于相反方向的转换通常遵循类似的结构,单独对它们进行编程构成了代码重复,这增加了维护成本和人为错误。因此,人们对特殊的双向语言越来越感兴趣,这种语言允许从一个定义派生两种转换,以保证通过构造实现往返,并消除这种重复及其引起的问题。这样做的缺点是,现有的双向语言通常很难使用。虽然这在一定程度上可能是因为人们试图用更少的代码做更多的事情,从而固有的复杂性增加,但语言的设计也有很多不足之处:它们往往专注于保证往返,这本身就是一项具有挑战性的任务,但忽略了可用性方面,使得用它们进行编程比应该的要困难得多。在展示项目中,我们将设计新一代易于使用的双向语言。其核心思想是,新语言将与主流通用语言紧密集成,自然地重用现有语言构造、库和编程模式,以最大限度地提高新框架的可用性。这项工作将基于项目组最近的理论突破,使双向对象和主流编程单元之间的相互转换成为可能,使这两种语言之间的紧密联系成为可能。我们将实施所建议的语言,并通过案例研究评估其有效性。我们预计,该语言提供的高级编程实用程序将使双向编程及其好处更容易为主流程序员所接受,这最终将导致软件开发的更高生产率和质量。
英文摘要
In computer systems, copies of data are very often stored in different formats. Bidirectional transformations are programs that synchronise the data pairwise: when one is changed, the appropriate transformation is run to incorporate the changes in the other format. For bidirectional transformations to be considered correct, they are generally expected to satisfy "round-tripping": if A is transformed to B, and then back, it shall give back the same A. This pattern of bidirectional transformations is much more widely applicable than just to data synchronization. They form a fundamental part of modern software engineering, where designs in the form of high-level models are (very often mechanically) transformed into lower-level implementations, and one often needs to reverse engineer a revised high-level model from an updated implementation. Traditionally, bidirectional transformations are programmed as separate transformations in opposite directions, and then combined together to be made bidirectional. But this is very tricky to get right, because the programmer has to manually guarantee round-tripping, and even trickier to maintain, because changing one requires matching changes in the other. In fact, since the transformations in the opposite directions often follow a similar structure, programming them separately constitutes code duplication, which increases maintenance cost and human error. As a result, there has been increasing interest in special bidirectional languages that allow both transformations to be derived from a single definition, to guarantee round-tripping by construction, and to remove this duplication and the problems it causes. The downside of this is that existing bidirectional languages are typically very difficult to use. While this may be partly due to an inherent increase in complexity as one tries to do more with less code, the designs of the languages also leave a lot to be desired: they tend to focus on guaranteeing round-tripping, which is a challenging task in itself, but overlook the usability aspect, making programming in them a lot harder than it should be. In the EXHIBIT project, we will design a new generation of bidirectional languages that are easy to use. The central idea is that the new languages will be closely integrated with mainstream general-purpose languages, naturally reusing existing language constructs, libraries, and programming patterns to maximise the usability of the new framework. The work will be based on the project team's recent theoretical breakthroughs that enable the interconversion between bidirectional objects and mainstream programming units, making a close connection between the two types of languages possible. We will implement the proposed languages and evaluate its effectiveness through a case study. We expect that the superior programming utility offered by the language will make bidirectional programming and its benefits more accessible to mainstream programmers, which will ultimately result in higher productivity and quality in software development.
期刊论文(10)
专著(0)
科研奖励(0)
会议论文
登录
查看更多内容
Effect Handlers for Programmable Inference
用于可编程推理的效果处理程序
DOI:
10.1145/3609026.3609729
发表时间:
2023
期刊:
影响因子:
--
作者:
[Nguyen M]
通讯作者:
Nguyen M
Embedding by Unembedding
通过取消嵌入进行嵌入
DOI:
10.1145/3607830
发表时间:
2023
期刊:
Proceedings of the ACM on Programming Languages
影响因子:
--
作者:
[Matsuda K]
通讯作者:
Matsuda K
DOI:
10.1145/3547635
发表时间:
2022-03
期刊:
Proceedings of the ACM on Programming Languages
影响因子:
--
作者:
[Minh Nguyen;Roly Perera;M. Wang;Nicolas Wu]
通讯作者:
Minh Nguyen;Roly Perera;M. Wang;Nicolas Wu
CircuitFlow: A Domain Specific Language for Dataflow Programming (with appendices)
CircuitFlow:数据流编程的领域特定语言(带附录)
DOI:
10.48550/arxiv.2111.12420
发表时间:
2021
期刊:
影响因子:
--
作者:
[Evans R]
通讯作者:
Evans R
Practical Aspects of Declarative Languages - 24th International Symposium, PADL 2022, Philadelphia, PA, USA, January 17-18, 2022, Proceedings
陈述性语言的实用方面 - 第 24 届国际研讨会,PADL 2022,美国宾夕法尼亚州费城,2022 年 1 月 17-18 日,会议记录
DOI:
10.1007/978-3-030-94479-7_6
发表时间:
2022
期刊:
影响因子:
--
作者:
[Evans R]
通讯作者:
Evans R
共 8 条
Collaborative Research: NSF-BSF: Mainstream deammonification by ion exchange and bioregeneration via partial nitritation/anammox
-
批准号:2000761
-
项目类别:Standard Grant
-
资助金额:$23.06万
-
财政年份:2020
-
负责人:Meng Wang
-
依托单位:
CPS:Medium:Collaborative Research: High-Fidelity High-Resolution and Secure Monitoring and Control of Future Grids: a synergy of AI, data science, and hardware security
-
批准号:1932196
-
项目类别:Standard Grant
-
资助金额:$45.0万
-
财政年份:2019
-
负责人:Meng Wang
-
依托单位:
Exploiting Low-dimensional Structures in Data Management of High-dimensional Synchrophasor Measurements for Power System Monitoring
-
批准号:1508875
-
项目类别:Standard Grant
-
资助金额:$40.0万
-
财政年份:2015
-
负责人:Meng Wang
-
依托单位:
海外基金