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。这种双向转换模式的适用范围比数据同步要广泛得多。它们构成了现代软件工程的基本组成部分,其中高级模型形式的设计(通常是机械地)转换为较低级别的实现,并且通常需要从更新的实现中逆向工程修改高级模型。传统上,双向转换被编程为相反方向上的单独转换,然后组合在一起成为双向转换。但这是非常棘手的,因为程序员必须手动保证往返,甚至更棘手的维护,因为改变一个需要匹配另一个的变化。事实上,由于相反方向的转换通常遵循类似的结构,因此单独对它们进行编程构成了代码重复,这增加了维护成本和人为错误。因此,人们对特殊的双向语言越来越感兴趣,这种语言允许从单个定义派生两个转换,以保证通过构造进行往返,并消除这种重复及其引起的问题。这样做的缺点是现有的双向语言通常很难使用。虽然这可能部分是由于复杂性的内在增加,因为人们试图用更少的代码做更多的事情,但语言的设计也留下了很多需要改进的地方:它们倾向于专注于保证往返,这本身就是一项具有挑战性的任务,但忽略了可用性方面,使编程比应该的要困难得多。在EXHIBIT项目中,我们将设计易于使用的新一代双向语言。核心思想是新语言将与主流通用语言紧密集成,自然地重用现有的语言结构,库和编程模式,以最大限度地提高新框架的可用性。这项工作将基于项目团队最近的理论突破,使双向对象和主流编程单元之间的相互转换成为可能,使两种语言之间的紧密联系成为可能。我们将实施拟议的语言,并通过案例研究评估其有效性。我们期望该语言提供的上级编程实用程序将使主流程序员更容易获得双向编程及其好处,这将最终导致软件开发的更高生产力和质量。
英文摘要
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
-
依托单位:
海外基金