首页 > 最新文献

Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering最新文献

英文 中文
Storm: a language platform for interacting and extensible languages (tool demo) Storm:用于交互和扩展语言的语言平台(工具演示)
Filip Strömbäck
The ability to extend programming languages with domain-specific concepts is becoming an essential technology for developing complex software. However, many domain-specific languages are implemented in a way that interact poorly with the host language. There are a number of tools that aim to improve the situation by simplifying the creation of domain-specific languages, and allow easier interactions between the host language and the domain-specific language. However, many of these tools are limited to a single host language, and rarely allow extending the language used for language creation. To improve the situation, we created the language platform Storm, which aims to make the creation and usage of multiple extensible languages easy and seamless. This is accomplished by means of a shared, standardized namespace and in-process code generation, which gives Storm a high degree of extensibility, making it possible to extend or replace the built-in languages at will.
使用领域特定概念扩展编程语言的能力正在成为开发复杂软件的一项基本技术。然而,许多特定于领域的语言以一种与宿主语言交互不良的方式实现。有许多工具旨在通过简化特定于领域的语言的创建来改善这种情况,并允许宿主语言和特定于领域的语言之间更容易的交互。然而,这些工具中的许多都仅限于单一宿主语言,并且很少允许扩展用于语言创建的语言。为了改善这种情况,我们创建了语言平台Storm,旨在使多种可扩展语言的创建和使用变得简单而无缝。这是通过共享的、标准化的命名空间和进程内代码生成来实现的,这使得Storm具有高度的可扩展性,可以随意扩展或替换内置语言。
{"title":"Storm: a language platform for interacting and extensible languages (tool demo)","authors":"Filip Strömbäck","doi":"10.1145/3276604.3276982","DOIUrl":"https://doi.org/10.1145/3276604.3276982","url":null,"abstract":"The ability to extend programming languages with domain-specific concepts is becoming an essential technology for developing complex software. However, many domain-specific languages are implemented in a way that interact poorly with the host language. There are a number of tools that aim to improve the situation by simplifying the creation of domain-specific languages, and allow easier interactions between the host language and the domain-specific language. However, many of these tools are limited to a single host language, and rarely allow extending the language used for language creation. To improve the situation, we created the language platform Storm, which aims to make the creation and usage of multiple extensible languages easy and seamless. This is accomplished by means of a shared, standardized namespace and in-process code generation, which gives Storm a high degree of extensibility, making it possible to extend or replace the built-in languages at will.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131930430","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 3
Constraint-based run-time state migration for live modeling 用于实时建模的基于约束的运行时状态迁移
U. Tikhonova, J. Stoel, T. Storm, Thomas Degueule
Live modeling enables modelers to incrementally update models as they are running and get immediate feedback about the impact of their changes. Changes introduced in a model may trigger inconsistencies between the model and its run-time state (e.g., deleting the current state in a statemachine); effectively requiring to migrate the run-time state to comply with the updated model. In this paper, we introduce an approach that enables to automatically migrate such run-time state based on declarative constraints defined by the language designer. We illustrate the approach using Nextep, a meta-modeling language for defining invariants and migration constraints on run-time state models. When a model changes, Nextep employs model finding techniques, backed by a solver, to automatically infer a new run-time model that satisfies the declared constraints. We apply Nextep to define migration strategies for two DSLs, and report on its expressiveness and performance.
实时建模使建模者能够在模型运行时增量地更新模型,并获得关于其更改影响的即时反馈。模型中引入的更改可能会触发模型与其运行时状态之间的不一致(例如,删除状态机中的当前状态);有效地要求迁移运行时状态以符合更新的模型。在本文中,我们介绍了一种方法,该方法能够基于语言设计器定义的声明性约束自动迁移此类运行时状态。我们使用Nextep来说明这种方法,Nextep是一种元建模语言,用于定义运行时状态模型上的不变量和迁移约束。当模型更改时,Nextep使用由求解器支持的模型查找技术来自动推断满足声明约束的新运行时模型。我们应用nexstep来定义两个dsl的迁移策略,并报告其表达性和性能。
{"title":"Constraint-based run-time state migration for live modeling","authors":"U. Tikhonova, J. Stoel, T. Storm, Thomas Degueule","doi":"10.1145/3276604.3276611","DOIUrl":"https://doi.org/10.1145/3276604.3276611","url":null,"abstract":"Live modeling enables modelers to incrementally update models as they are running and get immediate feedback about the impact of their changes. Changes introduced in a model may trigger inconsistencies between the model and its run-time state (e.g., deleting the current state in a statemachine); effectively requiring to migrate the run-time state to comply with the updated model. In this paper, we introduce an approach that enables to automatically migrate such run-time state based on declarative constraints defined by the language designer. We illustrate the approach using Nextep, a meta-modeling language for defining invariants and migration constraints on run-time state models. When a model changes, Nextep employs model finding techniques, backed by a solver, to automatically infer a new run-time model that satisfies the declared constraints. We apply Nextep to define migration strategies for two DSLs, and report on its expressiveness and performance.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"330 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124656825","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 10
Bacatá: a language parametric notebook generator (tool demo) bacat<e:1>:一个语言参数化的笔记本生成器(工具演示)
M. V. Merino, J. Vinju, T. Storm
Interactive notebooks allow people to communicate and collaborate through a single rich document that might include live code, multimedia, computed results, and documentation, which is persisted as a whole for reproducibility. Notebooks are currently being used extensively in domains such as data science, data journalism, and machine learning. However, constructing a notebook interface for a new language requires a lot of effort. In this tool paper, we present Bacatá, a language parametric notebook generator for domain-specific languages (DSL) based on the Jupyter framework. Bacatá is designed so that language engineers may reuse existing language components (such as parsers, code generators, interpreters, etc.) as much as possible. Moreover, we explain the design of Bacatá and how DSL notebooks can be generated with minimum effort in the context of the Rascal meta programming system and language workbench.
交互式笔记本允许人们通过单个丰富的文档进行通信和协作,该文档可能包括实时代码、多媒体、计算结果和文档,这些文档作为一个整体进行持久化以实现再现性。笔记本电脑目前被广泛应用于数据科学、数据新闻和机器学习等领域。然而,为一门新语言构建一个笔记本界面需要付出很多努力。在这篇工具论文中,我们介绍了bacat,一个基于Jupyter框架的领域特定语言(DSL)的语言参数笔记本生成器。bacat的设计使语言工程师可以尽可能重用现有的语言组件(如解析器、代码生成器、解释器等)。此外,我们还解释了bacat的设计,以及如何在Rascal元编程系统和语言工作台的环境中以最小的努力生成DSL笔记本。
{"title":"Bacatá: a language parametric notebook generator (tool demo)","authors":"M. V. Merino, J. Vinju, T. Storm","doi":"10.1145/3276604.3276981","DOIUrl":"https://doi.org/10.1145/3276604.3276981","url":null,"abstract":"Interactive notebooks allow people to communicate and collaborate through a single rich document that might include live code, multimedia, computed results, and documentation, which is persisted as a whole for reproducibility. Notebooks are currently being used extensively in domains such as data science, data journalism, and machine learning. However, constructing a notebook interface for a new language requires a lot of effort. In this tool paper, we present Bacatá, a language parametric notebook generator for domain-specific languages (DSL) based on the Jupyter framework. Bacatá is designed so that language engineers may reuse existing language components (such as parsers, code generators, interpreters, etc.) as much as possible. Moreover, we explain the design of Bacatá and how DSL notebooks can be generated with minimum effort in the context of the Rascal meta programming system and language workbench.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"120 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116515098","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
Migrating custom DSL implementations to a language workbench (tool demo) 将自定义DSL实现迁移到语言工作台(工具演示)
Jasper Denkers, L. V. Gool, E. Visser
We present a tool architecture that supports migrating custom domain-specific language (DSL) implementations to a language workbench. We demonstrate an implementation of this architecture for models in the domains of defining component interfaces (IDL) and modeling system behavior (OIL) which are developed and used at a digital printer manufacturing company. Increasing complexity and the lack of DSL syntax and IDE support for existing implementations in Python based on XML syntax hindered their evolution and adoption. A reimplementation in Spoofax using modular language definition enables composition between IDL and OIL and introduces more concise DSL syntax and IDE support. The presented tool supports migrating to new implementations while being backward compatible with existing syntax and related tooling.
我们提供了一个工具体系结构,它支持将定制的领域特定语言(DSL)实现迁移到语言工作台。我们为定义组件接口(IDL)和建模系统行为(OIL)领域中的模型演示了该体系结构的实现,这些模型是在一家数字打印机制造公司开发和使用的。不断增加的复杂性以及缺乏DSL语法和IDE对基于XML语法的Python现有实现的支持阻碍了它们的发展和采用。在Spoofax中使用模块化语言定义的重新实现实现了IDL和OIL之间的组合,并引入了更简洁的DSL语法和IDE支持。所提供的工具支持迁移到新的实现,同时与现有语法和相关工具向后兼容。
{"title":"Migrating custom DSL implementations to a language workbench (tool demo)","authors":"Jasper Denkers, L. V. Gool, E. Visser","doi":"10.1145/3276604.3276608","DOIUrl":"https://doi.org/10.1145/3276604.3276608","url":null,"abstract":"We present a tool architecture that supports migrating custom domain-specific language (DSL) implementations to a language workbench. We demonstrate an implementation of this architecture for models in the domains of defining component interfaces (IDL) and modeling system behavior (OIL) which are developed and used at a digital printer manufacturing company. Increasing complexity and the lack of DSL syntax and IDE support for existing implementations in Python based on XML syntax hindered their evolution and adoption. A reimplementation in Spoofax using modular language definition enables composition between IDL and OIL and introduces more concise DSL syntax and IDE support. The presented tool supports migrating to new implementations while being backward compatible with existing syntax and related tooling.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130816062","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Continuous model validation using reference attribute grammars 使用引用属性语法的连续模型验证
Johannes Mey, René Schöne, G. Hedin, Emma Söderberg, Thomas Kühn, Niklas Fors, Jesper Öqvist, U. Assmann
Just like current software systems, models are characterised by increasing complexity and rate of change. Yet, these models only become useful if they can be continuously evaluated and validated. To achieve sufficiently low response times for large models, incremental analysis is required. Reference Attribute Grammars (RAGs) offer mechanisms to perform an incremental analysis efficiently using dynamic dependency tracking. However, not all features used in conceptual modelling are directly available in RAGs. In particular, support for non-containment model relations is only available through manual implementation. We present an approach to directly model uni- and bidirectional non-containment relations in RAGs and provide efficient means for navigating and editing them. This approach is evaluated using a scalable benchmark for incremental model editing and the JastAdd RAG system. Our work demonstrates the suitability of RAGs for validating complex and continuously changing models of current software systems.
就像当前的软件系统一样,模型的特点是不断增加的复杂性和变化率。然而,这些模型只有在能够持续评估和验证的情况下才有用。为了对大型模型实现足够低的响应时间,需要进行增量分析。引用属性语法(Reference Attribute Grammars, rag)提供了使用动态依赖跟踪高效执行增量分析的机制。然而,并非概念建模中使用的所有特性都可以直接在RAGs中使用。特别是,对非包容模型关系的支持只能通过手工实现。我们提出了一种在抹布中直接建模单向和双向非包容关系的方法,并提供了对它们进行导航和编辑的有效方法。使用增量模型编辑和JastAdd RAG系统的可伸缩基准来评估该方法。我们的工作证明了rag对于验证当前软件系统的复杂和不断变化的模型的适用性。
{"title":"Continuous model validation using reference attribute grammars","authors":"Johannes Mey, René Schöne, G. Hedin, Emma Söderberg, Thomas Kühn, Niklas Fors, Jesper Öqvist, U. Assmann","doi":"10.1145/3276604.3276616","DOIUrl":"https://doi.org/10.1145/3276604.3276616","url":null,"abstract":"Just like current software systems, models are characterised by increasing complexity and rate of change. Yet, these models only become useful if they can be continuously evaluated and validated. To achieve sufficiently low response times for large models, incremental analysis is required. Reference Attribute Grammars (RAGs) offer mechanisms to perform an incremental analysis efficiently using dynamic dependency tracking. However, not all features used in conceptual modelling are directly available in RAGs. In particular, support for non-containment model relations is only available through manual implementation. We present an approach to directly model uni- and bidirectional non-containment relations in RAGs and provide efficient means for navigating and editing them. This approach is evaluated using a scalable benchmark for incremental model editing and the JastAdd RAG system. Our work demonstrates the suitability of RAGs for validating complex and continuously changing models of current software systems.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131434410","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 9
Facet-oriented modelling: open objects for model-driven engineering 面向面建模:用于模型驱动工程的开放对象
J. Lara, E. Guerra, J. Kienzle, Yanis Hattab
Model-driven engineering (MDE) promotes models as the principal assets in software projects. Models are built using a modelling language whose syntax is defined by a metamodel. Hence, objects in models are typed by a metamodel class, and this typing relation is static as it is established at creation time and cannot be changed later. This way, objects in MDE are closed and fixed with respect to the type they conform to, the slots/properties they have, and the constraints they should obey. This hampers the reuse of model-related artefacts like model transformations, as well as the opportunistic or dynamic combination of metamodels. To alleviate this rigidity, we propose making model objects open so that they can acquire or drop so-called facets, each one contributing a type, slots and constraints to the object. Facets are defined by regular metamodels, hence being a lightweight extension of standard metamodelling. Facet metamodels may declare usage interfaces, and it is possible to specify laws that govern how facets are to be assigned to the instances of a metamodel. In this paper, we describe our proposal, report on an implementation, and illustrate scenarios where facets have advantages over other techniques.
模型驱动工程(MDE)提倡将模型作为软件项目中的主要资产。模型是使用建模语言构建的,其语法由元模型定义。因此,模型中的对象是由元模型类类型化的,这种类型化关系是静态的,因为它是在创建时建立的,以后不能更改。这样,MDE中的对象就其遵从的类型、它们拥有的槽/属性以及它们应该遵守的约束而言是封闭和固定的。这阻碍了模型相关工件(如模型转换)的重用,以及元模型的机会性或动态组合。为了减轻这种刚性,我们建议使模型对象开放,以便它们可以获取或删除所谓的facet,每个facet都为对象提供类型、槽和约束。facet由常规元模型定义,因此是标准元模型的轻量级扩展。Facet元模型可以声明使用接口,并且可以指定规则来管理如何将Facet分配给元模型的实例。在本文中,我们描述了我们的建议,报告了一个实现,并举例说明了facet比其他技术更有优势的场景。
{"title":"Facet-oriented modelling: open objects for model-driven engineering","authors":"J. Lara, E. Guerra, J. Kienzle, Yanis Hattab","doi":"10.1145/3276604.3276610","DOIUrl":"https://doi.org/10.1145/3276604.3276610","url":null,"abstract":"Model-driven engineering (MDE) promotes models as the principal assets in software projects. Models are built using a modelling language whose syntax is defined by a metamodel. Hence, objects in models are typed by a metamodel class, and this typing relation is static as it is established at creation time and cannot be changed later. This way, objects in MDE are closed and fixed with respect to the type they conform to, the slots/properties they have, and the constraints they should obey. This hampers the reuse of model-related artefacts like model transformations, as well as the opportunistic or dynamic combination of metamodels. To alleviate this rigidity, we propose making model objects open so that they can acquire or drop so-called facets, each one contributing a type, slots and constraints to the object. Facets are defined by regular metamodels, hence being a lightweight extension of standard metamodelling. Facet metamodels may declare usage interfaces, and it is possible to specify laws that govern how facets are to be assigned to the instances of a metamodel. In this paper, we describe our proposal, report on an implementation, and illustrate scenarios where facets have advantages over other techniques.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"88 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131617588","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 13
Analysing meta-model product lines 分析元模型产品线
E. Guerra, J. Lara, M. Chechik, Rick Salay
Model-driven engineering advocates the use of models to describe and automate many software development tasks. The syntax of modelling languages is defined by meta-models, making them essential artefacts. A combination of product line engineering methods and meta-models has been proposed to enable specification of modelling language variants, e.g., to describe a range of systems. However, there is a lack of techniques for ensuring syntactic correctness of all meta-models within a family (including their OCL constraints), and semantic correctness related to properties of individual instances of the different variants. The absence of verification methods at the product-line level can cause synthesis of ill-formed meta-models and problematic feature combinations whose effect at the instance level may go unnoticed. To attack this problem, we propose an approach to lifting both the meta-model syntax checking and the satisfiability checking of properties of individual meta-model instances, to the product-line level. We validate the approach via a prototype tool called Merlin, and report on several experiments that show the advantages of our method w.r.t. an enumerative analysis approach.
模型驱动工程提倡使用模型来描述和自动化许多软件开发任务。建模语言的语法由元模型定义,使它们成为基本的工件。产品线工程方法和元模型的结合已被提出,以实现建模语言变体的规范,例如,描述一系列系统。然而,缺乏技术来确保一个家族中所有元模型的语法正确性(包括它们的OCL约束),以及与不同变体的单个实例的属性相关的语义正确性。在产品线级别上缺乏验证方法可能会导致合成形式不良的元模型和有问题的特征组合,其在实例级别上的影响可能会被忽视。为了解决这个问题,我们提出了一种方法,将元模型语法检查和单个元模型实例属性的可满足性检查提升到产品线级别。我们通过名为Merlin的原型工具验证了该方法,并报告了几个实验,这些实验显示了我们的方法的优点,而不是枚举分析方法。
{"title":"Analysing meta-model product lines","authors":"E. Guerra, J. Lara, M. Chechik, Rick Salay","doi":"10.1145/3276604.3276609","DOIUrl":"https://doi.org/10.1145/3276604.3276609","url":null,"abstract":"Model-driven engineering advocates the use of models to describe and automate many software development tasks. The syntax of modelling languages is defined by meta-models, making them essential artefacts. A combination of product line engineering methods and meta-models has been proposed to enable specification of modelling language variants, e.g., to describe a range of systems. However, there is a lack of techniques for ensuring syntactic correctness of all meta-models within a family (including their OCL constraints), and semantic correctness related to properties of individual instances of the different variants. The absence of verification methods at the product-line level can cause synthesis of ill-formed meta-models and problematic feature combinations whose effect at the instance level may go unnoticed. To attack this problem, we propose an approach to lifting both the meta-model syntax checking and the satisfiability checking of properties of individual meta-model instances, to the product-line level. We validate the approach via a prototype tool called Merlin, and report on several experiments that show the advantages of our method w.r.t. an enumerative analysis approach.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129802997","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 5
The next 700 unit of measurement checkers 下一个700单位的测量检查
Oscar Bennich-Björkman, S. McKeever
In scientific applications, physical quantities and units of measurement are used regularly. If the inherent incompatibility between these units is not handled properly it can lead to major, sometimes catastrophic, problems. Although the risk of a miscalculation is high and the cost equally so, almost none of the major programming languages has support for physical quantities. Instead, scientific code developers often make their own tools or rely on external libraries to help them spot or prevent these mistakes. We employed a systematic approach to examine and analyse all available physical quantity open-source libraries. Approximately 3700 search results across seven repository hosting sites were condensed into a list of 82 of the most comprehensive and well-developed libraries currently available. In this group, 30 different programming languages are represented. Out of these 82 libraries, 38 have been updated within the last two years. These 38 are summarised in this paper as they are deemed the most relevant. The conclusion we draw from these results is that there is clearly too much diversity, duplicated efforts, and a lack of code sharing and harmonisation which discourages use and adoption.
在科学应用中,经常使用物理量和计量单位。如果这些单元之间固有的不兼容性处理不当,可能会导致重大的,有时是灾难性的问题。尽管错误计算的风险和代价都很高,但几乎没有一种主流编程语言支持物理量。相反,科学代码开发人员经常制作自己的工具或依赖外部库来帮助他们发现或防止这些错误。我们采用了一种系统的方法来检查和分析所有可用的物理量开源库。在七个存储库托管站点上的大约3700个搜索结果被浓缩成82个目前可用的最全面和最发达的库的列表。在这一组中,有30种不同的编程语言。在这82个图书馆中,有38个在过去两年内进行了更新。本文总结了这38个,因为它们被认为是最相关的。我们从这些结果中得出的结论是,显然存在太多的多样性,重复的努力,以及缺乏代码共享和协调,这阻碍了使用和采用。
{"title":"The next 700 unit of measurement checkers","authors":"Oscar Bennich-Björkman, S. McKeever","doi":"10.1145/3276604.3276613","DOIUrl":"https://doi.org/10.1145/3276604.3276613","url":null,"abstract":"In scientific applications, physical quantities and units of measurement are used regularly. If the inherent incompatibility between these units is not handled properly it can lead to major, sometimes catastrophic, problems. Although the risk of a miscalculation is high and the cost equally so, almost none of the major programming languages has support for physical quantities. Instead, scientific code developers often make their own tools or rely on external libraries to help them spot or prevent these mistakes. We employed a systematic approach to examine and analyse all available physical quantity open-source libraries. Approximately 3700 search results across seven repository hosting sites were condensed into a list of 82 of the most comprehensive and well-developed libraries currently available. In this group, 30 different programming languages are represented. Out of these 82 libraries, 38 have been updated within the last two years. These 38 are summarised in this paper as they are deemed the most relevant. The conclusion we draw from these results is that there is clearly too much diversity, duplicated efforts, and a lack of code sharing and harmonisation which discourages use and adoption.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"73 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122230155","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Fostering metamodels and grammars within a dedicated environment for HPC: the NabLab environment (tool demo) 在HPC专用环境中培养元模型和语法:NabLab环境(工具演示)
B. Lelandais, M. Oudot, B. Combemale
Advanced and mature language workbenches have been proposed in the past decades to develop Domain-Specific Languages (DSL) and rich associated environments. They all come in various flavors, mostly depending on the underlying technological space (e.g., grammarware or modelware). However, when the time comes to start a new DSL project, it often comes with the choice of a unique technological space which later bounds the possible expected features. In this tool paper, we introduce NabLab, a full-fledged industrial environment for scientific computing and High Performance Computing (HPC), involving several metamodels and grammars. Beyond the description of an industrial experience of the development and use of tool-supported DSLs, we report in this paper our lessons learned, and demonstrate the benefits from usefully combining metamodels and grammars in an integrated environment.
在过去的几十年里,已经提出了先进和成熟的语言工作台来开发领域特定语言(DSL)和丰富的相关环境。它们都有不同的风格,主要取决于底层技术空间(例如,语法软件或模型软件)。然而,当开始一个新的DSL项目时,通常需要选择一个独特的技术空间,该技术空间后来限制了可能期望的功能。在这篇工具论文中,我们介绍了NabLab,一个成熟的科学计算和高性能计算(HPC)工业环境,涉及几个元模型和语法。除了描述开发和使用工具支持的dsl的行业经验之外,我们还在本文中报告了我们的经验教训,并演示了在集成环境中有效地组合元模型和语法的好处。
{"title":"Fostering metamodels and grammars within a dedicated environment for HPC: the NabLab environment (tool demo)","authors":"B. Lelandais, M. Oudot, B. Combemale","doi":"10.1145/3276604.3276620","DOIUrl":"https://doi.org/10.1145/3276604.3276620","url":null,"abstract":"Advanced and mature language workbenches have been proposed in the past decades to develop Domain-Specific Languages (DSL) and rich associated environments. They all come in various flavors, mostly depending on the underlying technological space (e.g., grammarware or modelware). However, when the time comes to start a new DSL project, it often comes with the choice of a unique technological space which later bounds the possible expected features. In this tool paper, we introduce NabLab, a full-fledged industrial environment for scientific computing and High Performance Computing (HPC), involving several metamodels and grammars. Beyond the description of an industrial experience of the development and use of tool-supported DSLs, we report in this paper our lessons learned, and demonstrate the benefits from usefully combining metamodels and grammars in an integrated environment.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"41 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127771842","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 7
GLL parsing with flexible combinators 使用灵活组合子的GLL解析
L. T. V. Binsbergen, E. Scott, A. Johnstone
At SLE in 2014, Ridge presented the P3 combinator library with which parsers can be developed for left-recursive, non-deterministic and ambiguous grammars. A combinator expression in P3 yields a binarised grammar reflecting the expression's structure. The grammar is given to an underlying, generalised parsing procedure computing all derivations. In this paper we present a combinator library with a similar architecture to P3, adjusting it to avoid grammar binarisation. Avoiding binarisation has a significant positive effect on the running times of the underlying parsing procedure, which we demonstrate using real-world grammars. Binarisation is avoided by restricting the applicability of combinators, resulting in combinator expressions closely resembling BNF fragments. Usability is recovered by defining coercions that automatically convert expressions where necessary. As the underlying parsing procedure, we use a purely functional variant of generalised top-down (GLL) parsing.
在2014年的SLE上,Ridge展示了P3组合器库,可以使用该库开发左递归、不确定和模糊语法的解析器。P3中的组合子表达式生成反映该表达式结构的二值化语法。语法被赋予一个计算所有派生的基础的、通用的解析过程。在本文中,我们提出了一个与P3结构相似的组合子库,并对其进行了调整以避免语法二值化。避免二值化对底层解析过程的运行时间有显著的积极影响,我们使用现实世界的语法来演示这一点。通过限制组合子的适用性,避免了二值化,导致组合子表达式非常类似于BNF片段。通过定义强制值来恢复可用性,强制值在必要时自动转换表达式。作为底层的解析过程,我们使用了广义自顶向下(GLL)解析的纯功能变体。
{"title":"GLL parsing with flexible combinators","authors":"L. T. V. Binsbergen, E. Scott, A. Johnstone","doi":"10.1145/3276604.3276618","DOIUrl":"https://doi.org/10.1145/3276604.3276618","url":null,"abstract":"At SLE in 2014, Ridge presented the P3 combinator library with which parsers can be developed for left-recursive, non-deterministic and ambiguous grammars. A combinator expression in P3 yields a binarised grammar reflecting the expression's structure. The grammar is given to an underlying, generalised parsing procedure computing all derivations. In this paper we present a combinator library with a similar architecture to P3, adjusting it to avoid grammar binarisation. Avoiding binarisation has a significant positive effect on the running times of the underlying parsing procedure, which we demonstrate using real-world grammars. Binarisation is avoided by restricting the applicability of combinators, resulting in combinator expressions closely resembling BNF fragments. Usability is recovered by defining coercions that automatically convert expressions where necessary. As the underlying parsing procedure, we use a purely functional variant of generalised top-down (GLL) parsing.","PeriodicalId":117525,"journal":{"name":"Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-10-24","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129490572","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
期刊
Proceedings of the 11th ACM SIGPLAN International Conference on Software Language Engineering
全部 Acc. Chem. Res. ACS Applied Bio Materials ACS Appl. Electron. Mater. ACS Appl. Energy Mater. ACS Appl. Mater. Interfaces ACS Appl. Nano Mater. ACS Appl. Polym. Mater. ACS BIOMATER-SCI ENG ACS Catal. ACS Cent. Sci. ACS Chem. Biol. ACS Chemical Health & Safety ACS Chem. Neurosci. ACS Comb. Sci. ACS Earth Space Chem. ACS Energy Lett. ACS Infect. Dis. ACS Macro Lett. ACS Mater. Lett. ACS Med. Chem. Lett. ACS Nano ACS Omega ACS Photonics ACS Sens. ACS Sustainable Chem. Eng. ACS Synth. Biol. Anal. Chem. BIOCHEMISTRY-US Bioconjugate Chem. BIOMACROMOLECULES Chem. Res. Toxicol. Chem. Rev. Chem. Mater. CRYST GROWTH DES ENERG FUEL Environ. Sci. Technol. Environ. Sci. Technol. Lett. Eur. J. Inorg. Chem. IND ENG CHEM RES Inorg. Chem. J. Agric. Food. Chem. J. Chem. Eng. Data J. Chem. Educ. J. Chem. Inf. Model. J. Chem. Theory Comput. J. Med. Chem. J. Nat. Prod. J PROTEOME RES J. Am. Chem. Soc. LANGMUIR MACROMOLECULES Mol. Pharmaceutics Nano Lett. Org. Lett. ORG PROCESS RES DEV ORGANOMETALLICS J. Org. Chem. J. Phys. Chem. J. Phys. Chem. A J. Phys. Chem. B J. Phys. Chem. C J. Phys. Chem. Lett. Analyst Anal. Methods Biomater. Sci. Catal. Sci. Technol. Chem. Commun. Chem. Soc. Rev. CHEM EDUC RES PRACT CRYSTENGCOMM Dalton Trans. Energy Environ. Sci. ENVIRON SCI-NANO ENVIRON SCI-PROC IMP ENVIRON SCI-WAT RES Faraday Discuss. Food Funct. Green Chem. Inorg. Chem. Front. Integr. Biol. J. Anal. At. Spectrom. J. Mater. Chem. A J. Mater. Chem. B J. Mater. Chem. C Lab Chip Mater. Chem. Front. Mater. Horiz. MEDCHEMCOMM Metallomics Mol. Biosyst. Mol. Syst. Des. Eng. Nanoscale Nanoscale Horiz. Nat. Prod. Rep. New J. Chem. Org. Biomol. Chem. Org. Chem. Front. PHOTOCH PHOTOBIO SCI PCCP Polym. Chem.
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1