首页 > 最新文献

Journal of Computer Languages最新文献

英文 中文
A methodology for refactoring ORM-based monolithic web applications into microservices 一种将基于ORM的单片web应用程序重构为微服务的方法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101205
Francisco Freitas , André Ferreira , Jácome Cunha

In the last few years we have been seeing a drastic change in the way software is developed. Large-scale software projects are being assembled by a flexible composition of many (small) components possibly written in different programming languages and deployed anywhere in the cloud — the so-called microservices-based applications.

The dramatic growth in popularity of microservices-based applications has pushed several companies to apply major refactorings to their software systems. However, this is a challenging task that may take several months or even years.

We propose a methodology to automatically evolve monolithic web applications that use object-relational mapping into microservices-based ones. Our methodology receives the source code and a microservices proposal and refactors the original code to create each microservice. Our methodology creates an API for each method call to classes that are in other services. The database entities are also refactored to be included in the corresponding service. The evaluation performed in 120 applications shows that our tool can successfully refactor about 72% of them. The execution of the unit tests in both versions of the applications yield exactly the same results.

在过去的几年里,我们看到软件开发方式发生了巨大的变化。大规模软件项目由许多(小)组件组成,这些组件可能用不同的编程语言编写,并部署在云中的任何地方,即所谓的基于微服务的应用程序。基于微服务的应用程序的受欢迎程度急剧增长,促使几家公司对其软件系统进行重大重构。然而,这是一项具有挑战性的任务,可能需要几个月甚至几年的时间。我们提出了一种方法来自动将使用对象关系映射的单片web应用程序进化为基于微服务的应用程序。我们的方法接收源代码和微服务提案,并重构原始代码以创建每个微服务。我们的方法为其他服务中的类的每个方法调用创建一个API。数据库实体也被重构为包含在相应的服务中。对120个应用程序进行的评估表明,我们的工具可以成功重构其中约72%的应用程序。在两个版本的应用程序中执行单元测试会产生完全相同的结果。
{"title":"A methodology for refactoring ORM-based monolithic web applications into microservices","authors":"Francisco Freitas ,&nbsp;André Ferreira ,&nbsp;Jácome Cunha","doi":"10.1016/j.cola.2023.101205","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101205","url":null,"abstract":"<div><p>In the last few years we have been seeing a drastic change in the way software is developed. Large-scale software projects are being assembled by a flexible composition of many (small) components possibly written in different programming languages and deployed anywhere in the cloud — the so-called microservices-based applications.</p><p>The dramatic growth in popularity of microservices-based applications has pushed several companies to apply major refactorings to their software systems. However, this is a challenging task that may take several months or even years.</p><p>We propose a methodology to automatically evolve monolithic web applications that use object-relational mapping into microservices-based ones. Our methodology receives the source code and a microservices proposal and refactors the original code to create each microservice. Our methodology creates an API for each method call to classes that are in other services. The database entities are also refactored to be included in the corresponding service. The evaluation performed in 120 applications shows that our tool can successfully refactor about 72% of them. The execution of the unit tests in both versions of the applications yield exactly the same results.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101205"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187257","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
API comparison knowledge extraction via prompt-tuned language model API比较知识的快速语言模型提取
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101200
Yangrui Yang, Yaping Zhu, Sisi Chen, Pengpeng Jian

Application Programming Interfaces (APIs) are frequent in software engineering domain texts, such as API references and Stack Overflow. These APIs and the comparison knowledge between them are not only important for solving programming issues (e.g., question answering), but they are also organized into structured knowledge to support many software engineering tasks (e.g., API misuse detection). As a result, extracting API comparison knowledge (API entities and semantic relations) from texts is essential. Existing rule-based and sequence labeling-based approaches must manually enumerate all linguistic patterns or label a large amount of data. Therefore, they involve a significant labor overhead and are exacerbated by morphological and common-word ambiguity. In contrast to matching or labeling API entities and relations, we formulates heterogeneous API extraction and API relation extraction tasks as a sequence-to-sequence generation task. It proposes APICKnow, an API entity-relation joint extraction model based on the large language model. To improve our model’s performance and quick learning ability, we adopt the prompt learning method to stimulate APICKnow to recognize API entities and relations. We systematically evaluate APICKnow on a set of sentences from Stack Overflow. The experimental results show that APICKnow can outperform the state-of-the-art baselines, and APICKnow has a quick learning ability and strong generalization ability.

应用程序编程接口(API)经常出现在软件工程领域的文本中,如API引用和堆栈溢出。这些API和它们之间的比较知识不仅对于解决编程问题(例如,问题回答)很重要,而且它们还被组织成结构化知识,以支持许多软件工程任务(例如,API误用检测)。因此,从文本中提取API比较知识(API实体和语义关系)是必不可少的。现有的基于规则和序列标记的方法必须手动枚举所有语言模式或标记大量数据。因此,它们涉及大量的人工开销,并且由于形态和常用词的歧义而加剧。与匹配或标记API实体和关系相反,我们将异构的API提取和API关系提取任务定义为序列到序列生成任务。提出了基于大型语言模型的API实体关系联合提取模型APICKnow。为了提高模型的性能和快速学习能力,我们采用即时学习方法来刺激APICKnow识别API实体和关系。我们在Stack Overflow的一组句子上系统地评估APICKnow。实验结果表明,APICKnow可以优于最先进的基线,并且具有快速的学习能力和较强的泛化能力。
{"title":"API comparison knowledge extraction via prompt-tuned language model","authors":"Yangrui Yang,&nbsp;Yaping Zhu,&nbsp;Sisi Chen,&nbsp;Pengpeng Jian","doi":"10.1016/j.cola.2023.101200","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101200","url":null,"abstract":"<div><p>Application Programming Interfaces (APIs) are frequent in software engineering domain texts, such as API references and Stack Overflow. These APIs and the comparison knowledge between them are not only important for solving programming issues (e.g., question answering), but they are also organized into structured knowledge to support many software engineering tasks (e.g., API misuse detection). As a result, extracting API comparison knowledge (API entities and semantic relations) from texts is essential. Existing rule-based and sequence labeling-based approaches must manually enumerate all linguistic patterns or label a large amount of data. Therefore, they involve a significant labor overhead and are exacerbated by morphological and common-word ambiguity. In contrast to matching or labeling API entities and relations, we formulates heterogeneous API extraction and API relation extraction tasks as a sequence-to-sequence generation task. It proposes APICKnow, an API entity-relation joint extraction model based on the large language model. To improve our model’s performance and quick learning ability, we adopt the prompt learning method to stimulate APICKnow to recognize API entities and relations. We systematically evaluate APICKnow on a set of sentences from Stack Overflow. The experimental results show that APICKnow can outperform the state-of-the-art baselines, and APICKnow has a quick learning ability and strong generalization ability.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101200"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187290","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
React example viability for efficient API learning (REVEAL): A tool to help programmers utilize incompatible code examples in React.js 高效API学习的React示例可行性(REVEAL):帮助程序员利用React.js中不兼容代码示例的工具
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101201
John Allen, Caitlin Kelleher

Programmers typically learn APIs on-the-fly through web examples. Incompatibilities and omissions in copied example code can create barriers for these learners. We present an analysis of example usage barriers programmers faced in a previous study of React.js novices. We show that a small set of errors prevented programmers from using most found code examples. In response, we built REVEAL to detect and repair the common errors we identified in copied code. We describe the formative evaluation of REVEAL and show that REVEAL users were more likely to successfully integrate code examples than participants in the previous study.

程序员通常通过网络示例动态学习API。复制的示例代码中的不兼容和遗漏可能会给这些学习者带来障碍。我们分析了程序员在之前对React.js新手的研究中面临的示例使用障碍。我们展示了一小部分错误使程序员无法使用大多数已找到的代码示例。作为回应,我们构建了REVEAL来检测和修复我们在复制代码中发现的常见错误。我们描述了REVEAL的形成性评估,并表明REVEAL用户比之前研究中的参与者更有可能成功集成代码示例。
{"title":"React example viability for efficient API learning (REVEAL): A tool to help programmers utilize incompatible code examples in React.js","authors":"John Allen,&nbsp;Caitlin Kelleher","doi":"10.1016/j.cola.2023.101201","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101201","url":null,"abstract":"<div><p>Programmers typically learn APIs on-the-fly through web examples. Incompatibilities and omissions in copied example code can create barriers for these learners. We present an analysis of example usage barriers programmers faced in a previous study of React.js novices. We show that a small set of errors prevented programmers from using most found code examples. In response, we built REVEAL to detect and repair the common errors we identified in copied code. We describe the formative evaluation of REVEAL and show that REVEAL users were more likely to successfully integrate code examples than participants in the previous study.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101201"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187258","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
A systematic literature review on automatic website generation 关于网站自动生成的系统文献综述
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101202
Thisaranie Kaluarachchi, Manjusri Wickramasinghe

Since machine learning became a prominent feature in the modern-day computing landscape, the urge to automate processes has increased. One such process of particular interest has been the automatic generation of websites based on user intention. Though the requirement of such automatic generation is a modern-day need, the quality of the automatic generation still provides a unique set of challenges. As such, to analyze these unique challenges and viable opportunities in automatic website generation, this survey systematically reviews research on the topics of automatic website generation. The analysis initially segments state-of-the-art into three categories based on the dominant strategy used for automatic generation. These strategies are examples-based, mock-up-driven, and artificial intelligence-driven automatic website generation. When considering the example-based strategy, the emphasis is on analyzing how manual design aspects of a professionally developed website are incorporated into generation models and the challenges that arise. Similarly, transformation methods from website visual design into functional GUI code are investigated for the mock-up-driven strategy with a particular reference to the six underlying conversion mechanisms. Finally, artificial intelligence website builders are analyzed based on their ability to build customizable websites to user preferences. Based on this systematic review of 47 research works on the three dominant strategies, this survey outlines unique challenges and future research endeavors that researchers would encounter when developing models that generate websites automatically and provides insights to researchers on selecting a website generation strategy based on user intention appropriately.

自从机器学习成为现代计算领域的一个突出特征以来,自动化过程的呼声越来越高。一个特别感兴趣的过程是基于用户意图自动生成网站。尽管这种自动发电的需求是现代的需求,但自动发电的质量仍然提供了一系列独特的挑战。因此,为了分析网站自动生成中的这些独特挑战和可行机会,本调查系统地回顾了网站自动生成主题的研究。该分析最初根据用于自动生成的主要策略将最先进技术分为三类。这些策略是基于示例、模型驱动和人工智能驱动的自动网站生成。在考虑基于示例的策略时,重点是分析如何将专业开发的网站的手动设计方面纳入生成模型以及出现的挑战。类似地,针对实体模型驱动的策略,研究了从网站视觉设计到功能GUI代码的转换方法,并特别参考了六种底层转换机制。最后,分析了人工智能网站建设者根据用户偏好构建可定制网站的能力。基于对这三种主要策略的47项研究工作的系统回顾,本调查概述了研究人员在开发自动生成网站的模型时会遇到的独特挑战和未来的研究努力,并为研究人员提供了根据用户意愿适当选择网站生成策略的见解。
{"title":"A systematic literature review on automatic website generation","authors":"Thisaranie Kaluarachchi,&nbsp;Manjusri Wickramasinghe","doi":"10.1016/j.cola.2023.101202","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101202","url":null,"abstract":"<div><p>Since machine learning became a prominent feature in the modern-day computing landscape, the urge to automate processes has increased. One such process of particular interest has been the automatic generation of websites based on user intention. Though the requirement of such automatic generation is a modern-day need, the quality of the automatic generation still provides a unique set of challenges. As such, to analyze these unique challenges and viable opportunities in automatic website generation, this survey systematically reviews research on the topics of automatic website generation. The analysis initially segments state-of-the-art into three categories based on the dominant strategy used for automatic generation. These strategies are examples-based, mock-up-driven, and artificial intelligence-driven automatic website generation. When considering the example-based strategy, the emphasis is on analyzing how manual design aspects of a professionally developed website are incorporated into generation models and the challenges that arise. Similarly, transformation methods from website visual design into functional GUI code are investigated for the mock-up-driven strategy with a particular reference to the six underlying conversion mechanisms. Finally, artificial intelligence website builders are analyzed based on their ability to build customizable websites to user preferences. Based on this systematic review of 47 research works on the three dominant strategies, this survey outlines unique challenges and future research endeavors that researchers would encounter when developing models that generate websites automatically and provides insights to researchers on selecting a website generation strategy based on user intention appropriately.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101202"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187291","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
A visual notation for succinct program traces 简洁程序跟踪的可视化表示法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101199
Divya Bajaj , Martin Erwig , Danila Fedorin

Program traces are a widely used representation for explaining the dynamic behavior of programs. They help to make sense of computations and also support the location and elimination of bugs. Unfortunately, program traces can grow quite big very quickly, even for small programs, which compromises their usefulness.

In this paper we present a visual notation for program traces that supports their concise representation. We explain the design decisions of the notation and compare it in detail with several alternatives. An important part of the trace representation is its flexibility and adaptability, which allows users to transform traces by applying filters that capture common abstractions for trace representations.

We also present an evaluation of the trace notation and filters on a set of standard examples. The results show that our representation can reduce the overall size of traces by at least 79%, which suggests that our notation is an effective improvement over the use of plain traces in the explanation of dynamic program behavior.

程序跟踪是一种广泛使用的表示方法,用于解释程序的动态行为。它们有助于理解计算,也支持定位和消除错误。不幸的是,即使对于小程序来说,程序跟踪也会很快变得很大,这会损害它们的有用性。在本文中,我们为程序跟踪提供了一种可视化的表示法,它支持它们的简洁表示。我们解释了符号的设计决策,并将其与几种替代方案进行了详细比较。跟踪表示的一个重要部分是它的灵活性和适应性,它允许用户通过应用过滤器来转换跟踪,这些过滤器捕获跟踪表示的常见抽象。我们还对一组标准示例的跟踪表示法和过滤器进行了评估。结果表明,我们的表示可以将跟踪的总体大小减少至少79%,这表明在解释动态程序行为时,我们的记法是对使用普通跟踪的有效改进。
{"title":"A visual notation for succinct program traces","authors":"Divya Bajaj ,&nbsp;Martin Erwig ,&nbsp;Danila Fedorin","doi":"10.1016/j.cola.2023.101199","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101199","url":null,"abstract":"<div><p>Program traces are a widely used representation for explaining the dynamic behavior of programs. They help to make sense of computations and also support the location and elimination of bugs. Unfortunately, program traces can grow quite big very quickly, even for small programs, which compromises their usefulness.</p><p>In this paper we present a visual notation for program traces that supports their concise representation. We explain the design decisions of the notation and compare it in detail with several alternatives. An important part of the trace representation is its flexibility and adaptability, which allows users to transform traces by applying filters that capture common abstractions for trace representations.</p><p>We also present an evaluation of the trace notation and filters on a set of standard examples. The results show that our representation can reduce the overall size of traces by at least 79%, which suggests that our notation is an effective improvement over the use of plain traces in the explanation of dynamic program behavior.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101199"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187252","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Handling complex representations in visual modeling tools for MDSD/DSM by means of code generator languages 通过代码生成器语言处理MDSD/DSM可视化建模工具中的复杂表示
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101208
Verislav Djukić , Aleksandar Popović

Constructing languages and tools for modeling is an intellectual effort that addresses challenges related to linguistic theory. It requires a high level of creativity and understanding between software engineers and language and domain experts. It is important to consider the context of language application, or the main goal of the work, at the beginning of the language construction process. A new language is not created instantaneously, but rather through a process of iteratively refining the definition of its elements in interaction with the real-world context in which it will be applied. From a pragmatic standpoint, the best way to ensure the correctness of a language’s semantics is to verify it using a reference implementation, although different approaches may be used to describe the semantics of the language. In this paper, we share our experience in developing new and extending the existing functionalities of tools for visual domain-specific modeling to simplify reference implementation. We demonstrate how the code generator language, with minor extensions, can be used for it. Visual modeling tools in MDSD and DSM pay more attention to the graphical representation of objects, and less to relations, roles, and properties. In our platform, objects, roles, and relations are all derived from the same base class, which allows us to distinguish between fifteen different model representation types, ranging from view on the model topology to complex 3D views.

构建语言和建模工具是一项智力工作,旨在应对与语言学理论相关的挑战。它要求软件工程师、语言和领域专家之间具有高度的创造力和理解力。在语言构建过程的开始,考虑语言应用的背景或工作的主要目标是很重要的。一种新语言不是即时创建的,而是通过与应用它的真实世界环境交互,迭代地完善其元素的定义。从语用学的角度来看,确保语言语义正确性的最佳方法是使用引用实现来验证它,尽管可以使用不同的方法来描述语言的语义。在本文中,我们分享了我们在开发新的和扩展现有功能的工具方面的经验,这些工具用于特定于视觉领域的建模,以简化参考实现。我们展示了如何使用带有少量扩展的代码生成器语言。MDSD和DSM中的可视化建模工具更多地关注对象的图形表示,而较少关注关系、角色和属性。在我们的平台中,对象、角色和关系都源自同一个基类,这使我们能够区分15种不同的模型表示类型,从模型拓扑上的视图到复杂的三维视图。
{"title":"Handling complex representations in visual modeling tools for MDSD/DSM by means of code generator languages","authors":"Verislav Djukić ,&nbsp;Aleksandar Popović","doi":"10.1016/j.cola.2023.101208","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101208","url":null,"abstract":"<div><p>Constructing languages and tools for modeling is an intellectual effort that addresses challenges related to linguistic theory. It requires a high level of creativity and understanding between software engineers and language and domain experts. It is important to consider the context of language application, or the main goal of the work, at the beginning of the language construction process. A new language is not created instantaneously, but rather through a process of iteratively refining the definition of its elements in interaction with the real-world context in which it will be applied. From a pragmatic standpoint, the best way to ensure the correctness of a language’s semantics is to verify it using a reference implementation, although different approaches may be used to describe the semantics of the language. In this paper, we share our experience in developing new and extending the existing functionalities of tools for visual domain-specific modeling to simplify reference implementation. We demonstrate how the code generator language, with minor extensions, can be used for it. Visual modeling tools in MDSD and DSM pay more attention to the graphical representation of objects, and less to relations, roles, and properties. In our platform, objects, roles, and relations are all derived from the same base class, which allows us to distinguish between fifteen different model representation types, ranging from view on the model topology to complex 3D views.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101208"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187288","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Lexical-based partial redundancy elimination: An optimal algorithm with improved efficiency 基于词法的部分冗余消除:一种提高效率的优化算法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101204
Reshma Roy, Vineeth Paleri

Partial redundancy elimination is a well-known optimization in compilers that eliminates the recomputation of equivalent expressions appearing on a path in a program. Morel and Renvoise, in their seminal paper, showed that it is a powerful optimization that subsumes two traditional optimizations, i.e., Common Subexpression Elimination and Loop Invariant Code Motion. Morel and Renvoise’s algorithm is not computationally optimal because partially redundant computations may remain even after the optimization. Later, Knoop et al. came up with an algorithm that is computationally and lifetime optimal. The algorithm by Knoop et al. takes four unidirectional data flow analyses to perform the transformation. Here, we propose a new algorithm for partial redundancy elimination, both computationally and lifetime optimal. The proposed algorithm is more efficient than other best-known algorithms since it takes only three unidirectional data flow analyses. We demonstrate the efficiency of the proposed algorithm by implementing it using the LLVM Compiler Infrastructure and comparing the time taken by the algorithm with other selected best-known algorithms. The proposed algorithm reported here is based on lexically equivalent expressions. However, we believe that the ideas in the proposed algorithm can find their use in the value-based approach.

部分冗余消除是编译器中一种众所周知的优化,它消除了对程序中路径上出现的等效表达式的重新计算。Morel和Renvoise在他们的开创性论文中表明,这是一种强大的优化,包含了两种传统的优化,即公共子表达式消除和循环不变代码运动。Morel和Renvoise的算法在计算上不是最优的,因为即使在优化之后也可能保留部分冗余计算。后来,Knoop等人提出了一种计算和寿命最优的算法。Knoop等人的算法采用四个单向数据流分析来执行转换。在这里,我们提出了一种新的部分冗余消除算法,它在计算和寿命上都是最优的。所提出的算法比其他最著名的算法更有效,因为它只需要三次单向数据流分析。我们通过使用LLVM编译器基础结构来实现所提出的算法,并将该算法所花费的时间与其他选定的最著名的算法进行比较,从而证明了该算法的有效性。本文提出的算法是基于词汇等价表达式的。然而,我们相信所提出的算法中的思想可以在基于价值的方法中得到应用。
{"title":"Lexical-based partial redundancy elimination: An optimal algorithm with improved efficiency","authors":"Reshma Roy,&nbsp;Vineeth Paleri","doi":"10.1016/j.cola.2023.101204","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101204","url":null,"abstract":"<div><p>Partial redundancy elimination is a well-known optimization in compilers that eliminates the recomputation of equivalent expressions appearing on a path in a program. Morel and Renvoise, in their seminal paper, showed that it is a powerful optimization that subsumes two traditional optimizations, i.e., Common Subexpression Elimination and Loop Invariant Code Motion. Morel and Renvoise’s algorithm is not computationally optimal because partially redundant computations may remain even after the optimization. Later, Knoop et al. came up with an algorithm that is computationally and lifetime optimal. The algorithm by Knoop et al. takes four unidirectional data flow analyses to perform the transformation. Here, we propose a new algorithm for partial redundancy elimination, both computationally and lifetime optimal. The proposed algorithm is more efficient than other best-known algorithms since it takes only three unidirectional data flow analyses. We demonstrate the efficiency of the proposed algorithm by implementing it using the LLVM Compiler Infrastructure and comparing the time taken by the algorithm with other selected best-known algorithms. The proposed algorithm reported here is based on lexically equivalent expressions. However, we believe that the ideas in the proposed algorithm can find their use in the value-based approach.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101204"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187260","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
Aesthetics and comprehension of curved 3D graphs in Virtual Reality 虚拟现实中曲面三维图形的美学与理解
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101198
Adam Drogemuller, Andrew Cunningham, James Walsh, James Baumeister, Ross T. Smith, Bruce H. Thomas

Studies and evaluations of 3D graph aesthetics beyond the desktop currently remain sparse, despite recent advancements and applications with the emergence of Immersive Analytics. This paper explores curvature aesthetics for the edges within a 3D graph visualisation and presents preliminary implementations to a Lombardi-inspired rendering for an edge. Additionally, we evaluate three approaches to curvature through two studies to compare against straight-lines as a baseline. The two studies focused on observing user preference and performance when navigating a curved graph without and with topological-based tasks in Virtual Reality (VR). We found that curved edges without specified orientations tended to perform worse in performance and preference compared to Lombardi-inspired implementations of edges. Pupillary response and the participant’s approaches to navigation were also observed to be indicative of the edge’s respective performance for topological-based tasks.

尽管最近随着沉浸式分析的出现取得了进步和应用,但目前对桌面以外的3D图形美学的研究和评估仍然很少。本文探讨了3D图形可视化中边缘的曲率美学,并介绍了受Lombardi启发的边缘渲染的初步实现。此外,我们通过两项研究评估了三种曲率方法,以比较作为基线的直线。这两项研究的重点是在虚拟现实(VR)中,在没有和有基于拓扑的任务的情况下导航曲线图时,观察用户的偏好和性能。我们发现,与Lombardi启发的边缘实现相比,没有指定方向的弯曲边缘往往在性能和偏好方面表现较差。瞳孔反应和参与者的导航方法也被观察到表明了边缘在基于拓扑的任务中的各自表现。
{"title":"Aesthetics and comprehension of curved 3D graphs in Virtual Reality","authors":"Adam Drogemuller,&nbsp;Andrew Cunningham,&nbsp;James Walsh,&nbsp;James Baumeister,&nbsp;Ross T. Smith,&nbsp;Bruce H. Thomas","doi":"10.1016/j.cola.2023.101198","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101198","url":null,"abstract":"<div><p>Studies and evaluations of 3D graph aesthetics beyond the desktop currently remain sparse, despite recent advancements and applications with the emergence of <em>Immersive Analytics</em>. This paper explores curvature aesthetics for the edges within a 3D graph visualisation and presents preliminary implementations to a Lombardi-inspired rendering for an edge. Additionally, we evaluate three approaches to curvature through two studies to compare against straight-lines as a baseline. The two studies focused on observing user preference and performance when navigating a curved graph without and with topological-based tasks in Virtual Reality (VR). We found that curved edges without specified orientations tended to perform worse in performance and preference compared to Lombardi-inspired implementations of edges. Pupillary response and the participant’s approaches to navigation were also observed to be indicative of the edge’s respective performance for topological-based tasks.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101198"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187253","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 0
An approach to build JSON-based Domain Specific Languages solutions for web applications 一种为web应用程序构建基于JSON的领域特定语言解决方案的方法
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101203
Enrique Chavarriaga , Francisco Jurado , Francy D. Rodríguez

Because of their level of abstraction, Domain-Specific Languages (DSLs) enable building applications that ease software implementation. In the context of web applications, we can find a lot of technologies and programming languages for server-side applications that provide fast, robust, and flexible solutions, whereas those for client-side applications are limited, and mostly restricted to directly use JavaScript, HTML5, CSS3, JSON and XML. This article presents a novel approach to creating DSL-based web applications using JSON grammar (JSON-DSL) for both, the server and client side. The approach includes an evaluation engine, a programming model and an integrated web development environment that support it. The evaluation engine allows the execution of the elements created with the programming model. For its part, the programming model allows the definition and specification of JSON-DSLs, the implementation of JavaScript components, the use of JavaScript templates provided by the engine, the use of link connectors to heterogeneous information sources, and the integration with other widgets, web components and JavaScript frameworks. To validate the strength and capacity of our approach, we have developed four case studies that use the integrated web development environment to apply the programming model and check the results within the evaluation engine.

由于其抽象级别,领域特定语言(DSL)能够构建简化软件实现的应用程序。在web应用程序的上下文中,我们可以找到许多用于服务器端应用程序的技术和编程语言,这些技术和语言提供快速、健壮和灵活的解决方案,而用于客户端应用程序的那些技术和语言是有限的,并且大多被限制为直接使用JavaScript、HTML5、CSS3、JSON和XML。本文提出了一种新的方法,可以使用JSON语法(JSON-DSL)为服务器端和客户端创建基于DSL的web应用程序。该方法包括评估引擎、编程模型和支持它的集成web开发环境。评估引擎允许执行使用编程模型创建的元素。就编程模型而言,它允许定义和规范JSON DSL,实现JavaScript组件,使用引擎提供的JavaScript模板,使用到异构信息源的链接连接器,以及与其他小部件、web组件和JavaScript框架的集成。为了验证我们的方法的强度和能力,我们开发了四个案例研究,使用集成的web开发环境来应用编程模型并在评估引擎中检查结果。
{"title":"An approach to build JSON-based Domain Specific Languages solutions for web applications","authors":"Enrique Chavarriaga ,&nbsp;Francisco Jurado ,&nbsp;Francy D. Rodríguez","doi":"10.1016/j.cola.2023.101203","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101203","url":null,"abstract":"<div><p>Because of their level of abstraction, Domain-Specific Languages (DSLs) enable building applications that ease software implementation. In the context of web applications, we can find a lot of technologies and programming languages for server-side applications that provide fast, robust, and flexible solutions, whereas those for client-side applications are limited, and mostly restricted to directly use JavaScript, HTML5, CSS3, JSON and XML. This article presents a novel approach to creating DSL-based web applications using JSON grammar (JSON-DSL) for both, the server and client side. The approach includes an evaluation engine, a programming model and an integrated web development environment that support it. The evaluation engine allows the execution of the elements created with the programming model. For its part, the programming model allows the definition and specification of JSON-DSLs, the implementation of JavaScript components, the use of JavaScript templates provided by the engine, the use of link connectors to heterogeneous information sources, and the integration with other widgets, web components and JavaScript frameworks. To validate the strength and capacity of our approach, we have developed four case studies that use the integrated web development environment to apply the programming model and check the results within the evaluation engine.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101203"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187259","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 2
Quantitative program sketching using decision tree-based lifted analysis 使用基于决策树的提升分析的定量程序绘制
IF 2.2 3区 计算机科学 Q3 COMPUTER SCIENCE, SOFTWARE ENGINEERING Pub Date : 2023-06-01 DOI: 10.1016/j.cola.2023.101206
Aleksandar S. Dimovski

We present a novel approach for resolving numerical program sketches under Boolean and quantitative objectives. The input is a program sketch, which represents a partial program with missing numerical parameters (holes). The aim is to automatically synthesize values for the parameters, such that the resulting complete program satisfies: a Boolean (qualitative) specification given in the form of assertions; and a quantitative specification that estimates the number of execution steps to termination and which the synthesizer is expected to optimize.

To address the above quantitative sketching problem, we encode a program sketch as a program family (a.k.a. Software Product Line) and use the specifically designed lifted analysis algorithms based on abstract interpretation for efficiently analyzing program families with numerical features. The elements of the lifted analysis domain are decision trees, in which decision nodes are labeled with linear constraints defined over numerical features and leaf nodes belong to an existing single-program analysis domain. First, we transform a program sketch into a program family, such that numerical holes correspond to numerical features and all possible sketch realizations correspond to variants in the program family. Then, we use a combination of forward (numerical) and backward (quantitative termination) lifted analysis of program families to find the variants (family members) that satisfy all assertions, and moreover are optimal with respect to the given quantitative objective. Such obtained variants represent the “correct & optimal” realizations of the given program sketch.

We present a prototype implementation of our approach within the FamilySketcher tool for resolving C sketches with numerical data types. We have evaluated our approach on a set of numerical benchmarks, and experimental results confirm the effectiveness of our approach. In some cases, our approach provides speedups against the well-known sketching tool Sketch and resolves some numerical benchmarks that Sketch cannot handle.

我们提出了一种在布尔和定量目标下求解数值程序草图的新方法。输入是程序草图,表示缺少数值参数(孔)的部分程序。其目的是自动合成参数的值,使生成的完整程序满足:以断言形式给出的布尔(定性)规范;以及量化规范,其估计到终止的执行步骤的数量并且期望合成器优化该数量。为了解决上述定量草图问题,我们将程序草图编码为程序族(也称为软件产品线),并使用专门设计的基于抽象解释的提升分析算法来有效分析具有数字特征的程序族。提升分析域的元素是决策树,其中决策节点用在数值特征上定义的线性约束进行标记,叶节点属于现有的单个程序分析域。首先,我们将程序草图转换为程序族,使得数值孔对应于数值特征,并且所有可能的草图实现对应于程序族中的变体。然后,我们使用程序族的前向(数值)和后向(定量终止)提升分析的组合来找到满足所有断言的变体(族成员),并且对于给定的定量目标是最优的。这样获得的变体代表了给定程序草图的“正确和最佳”实现。我们在FamilySketcher工具中展示了我们的方法的原型实现,用于解析具有数字数据类型的C草图。我们在一组数值基准上评估了我们的方法,实验结果证实了我们方法的有效性。在某些情况下,我们的方法与著名的绘制工具Sketch相比提供了加速,并解决了Sketch无法处理的一些数字基准。
{"title":"Quantitative program sketching using decision tree-based lifted analysis","authors":"Aleksandar S. Dimovski","doi":"10.1016/j.cola.2023.101206","DOIUrl":"https://doi.org/10.1016/j.cola.2023.101206","url":null,"abstract":"<div><p>We present a novel approach for resolving numerical program sketches under Boolean and quantitative objectives. The input is a program sketch, which represents a partial program with missing numerical parameters (holes). The aim is to automatically synthesize values for the parameters, such that the resulting complete program satisfies: a <em>Boolean (qualitative) specification</em> given in the form of assertions; and a <em>quantitative specification</em> that estimates the number of execution steps to termination and which the synthesizer is expected to optimize.</p><p>To address the above quantitative sketching problem, we encode a program sketch as a program family (a.k.a. Software Product Line) and use the specifically designed lifted analysis algorithms based on abstract interpretation for efficiently analyzing program families with numerical features. The elements of the lifted analysis domain are <em>decision trees</em>, in which decision nodes are labeled with linear constraints defined over numerical features and leaf nodes belong to an existing single-program analysis domain. First, we transform a program sketch into a program family, such that numerical holes correspond to numerical features and all possible sketch realizations correspond to variants in the program family. Then, we use a combination of forward (numerical) and backward (quantitative termination) lifted analysis of program families to find the variants (family members) that satisfy all assertions, and moreover are optimal with respect to the given quantitative objective. Such obtained variants represent the “correct &amp; optimal” realizations of the given program sketch.</p><p>We present a prototype implementation of our approach within the <span>FamilySketcher</span>\u0000<!--> <!-->tool for resolving C sketches with numerical data types. We have evaluated our approach on a set of numerical benchmarks, and experimental results confirm the effectiveness of our approach. In some cases, our approach provides speedups against the well-known sketching tool <span>Sketch</span>\u0000<!--> <!-->and resolves some numerical benchmarks that <span>Sketch</span>\u0000<!--> <!-->cannot handle.</p></div>","PeriodicalId":48552,"journal":{"name":"Journal of Computer Languages","volume":"75 ","pages":"Article 101206"},"PeriodicalIF":2.2,"publicationDate":"2023-06-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"50187261","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":3,"RegionCategory":"计算机科学","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 4
期刊
Journal of Computer Languages
全部 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学术文献互助群
群 号:604180095
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1