首页 > 最新文献

Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang最新文献

英文 中文
Transformations towards clean functional code 转换为干净的功能代码
Pub Date : 2020-08-23 DOI: 10.1145/3406085.3409010
B. Poor, M. Tóth, István Bozó
The programming style has an impact on the readability and comprehensibility of the source code, and it may also affect run-time performance. This statement also holds for functional languages when the functional style is mixed with imperative design. In this paper, we present a couple of methods that can refactor imperatively styled Erlang source-code into a more functionally styled one. This can be done by transforming unnecessary calls to length, hd and tl into pattern matching or by lifting particular nested expressions. The results of our investigations indicate that these refactorings can not only shorten the length of the source code but also affect the complexity/readability. In this paper, we present some refactorings; moreover, real-life examples and data for its validation.
编程风格会影响源代码的可读性和可理解性,还可能影响运行时性能。当函数式风格与命令式设计混合使用时,这条语句也适用于函数式语言。在本文中,我们提出了两个方法,它们可以将命令式风格的Erlang源代码重构为更具有功能风格的代码。这可以通过将不必要的对length、hd和tl的调用转换为模式匹配或提升特定的嵌套表达式来实现。我们的调查结果表明,这些重构不仅缩短了源代码的长度,而且影响了代码的复杂性和可读性。在本文中,我们给出了一些重构;此外,现实生活中的例子和数据为其验证。
{"title":"Transformations towards clean functional code","authors":"B. Poor, M. Tóth, István Bozó","doi":"10.1145/3406085.3409010","DOIUrl":"https://doi.org/10.1145/3406085.3409010","url":null,"abstract":"The programming style has an impact on the readability and comprehensibility of the source code, and it may also affect run-time performance. This statement also holds for functional languages when the functional style is mixed with imperative design. In this paper, we present a couple of methods that can refactor imperatively styled Erlang source-code into a more functionally styled one. This can be done by transforming unnecessary calls to length, hd and tl into pattern matching or by lifting particular nested expressions. The results of our investigations indicate that these refactorings can not only shorten the length of the source code but also affect the complexity/readability. In this paper, we present some refactorings; moreover, real-life examples and data for its validation.","PeriodicalId":202303,"journal":{"name":"Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang","volume":"42 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123276137","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
Teaching practical realistic verification of distributed algorithms in Erlang with TLA+ 用TLA+教学Erlang分布式算法的实训验证
Pub Date : 2020-08-23 DOI: 10.1145/3406085.3409009
Peter Zeller, Annette Bieniusa, Carla Ferreira
Distributed systems are inherently complex as they need to address the interplay between features like communication, concurrency, and failure. Due to the inherent complexity of these interacting features, it is typically not possible to systematically test these kind of systems; yet, unexpected and unlikely combinations of events might cause corner cases that are hard to find. But since these systems are running typically for long durations, these events are likely to materialize eventually and must be handled correctly. Caught in such a dilemma, students are able to experience the benefits of applying verification tools to check their own algorithms and implementations. Having executable models with automatically generated executions allows them to experiment with different solutions by iteratively adapting and refining their algorithms. In this experience report, we report on our experience of teaching verification in a (hands-on) distributed systems course. We argue that broadcast algorithms provide a sweet spot in design and verification complexity. To this end, we give an implementation of these algorithms in Erlang and derive a TLA+ specification. TLA+ is a formal language for describing and reasoning about distributed and concurrent systems and provides a model checker, TLC, among other things. Our study reveals interesting parallels between the Erlang and TLA+ code, while exposing the challenges of formally modeling communication and parallelism in distributed systems. Presenting selected aspects of our course design, we aim to motivate the feasibility and need for introducing verification in close correspondence to programming tasks.
分布式系统本质上是复杂的,因为它们需要处理通信、并发性和故障等特性之间的相互作用。由于这些交互功能的内在复杂性,通常不可能系统地测试这类系统;然而,意外的和不太可能的事件组合可能会导致难以发现的极端情况。但是,由于这些系统通常要长时间运行,因此这些事件最终可能会出现,必须正确处理。陷入这样的困境,学生们能够体验到应用验证工具来检查他们自己的算法和实现的好处。具有自动生成执行的可执行模型允许他们通过迭代地调整和改进算法来试验不同的解决方案。在这份经验报告中,我们报告了我们在分布式系统课程(动手)中教学验证的经验。我们认为广播算法在设计和验证复杂性方面提供了一个最佳点。为此,我们在Erlang中给出了这些算法的实现,并推导了TLA+规范。TLA+是一种用于描述和推理分布式和并发系统的正式语言,并提供了模型检查器TLC等功能。我们的研究揭示了Erlang和TLA+代码之间有趣的相似之处,同时也揭示了在分布式系统中形式化建模通信和并行性的挑战。介绍我们课程设计的选定方面,我们的目标是激发在编程任务中引入验证的可行性和必要性。
{"title":"Teaching practical realistic verification of distributed algorithms in Erlang with TLA+","authors":"Peter Zeller, Annette Bieniusa, Carla Ferreira","doi":"10.1145/3406085.3409009","DOIUrl":"https://doi.org/10.1145/3406085.3409009","url":null,"abstract":"Distributed systems are inherently complex as they need to address the interplay between features like communication, concurrency, and failure. Due to the inherent complexity of these interacting features, it is typically not possible to systematically test these kind of systems; yet, unexpected and unlikely combinations of events might cause corner cases that are hard to find. But since these systems are running typically for long durations, these events are likely to materialize eventually and must be handled correctly. Caught in such a dilemma, students are able to experience the benefits of applying verification tools to check their own algorithms and implementations. Having executable models with automatically generated executions allows them to experiment with different solutions by iteratively adapting and refining their algorithms. In this experience report, we report on our experience of teaching verification in a (hands-on) distributed systems course. We argue that broadcast algorithms provide a sweet spot in design and verification complexity. To this end, we give an implementation of these algorithms in Erlang and derive a TLA+ specification. TLA+ is a formal language for describing and reasoning about distributed and concurrent systems and provides a model checker, TLC, among other things. Our study reveals interesting parallels between the Erlang and TLA+ code, while exposing the challenges of formally modeling communication and parallelism in distributed systems. Presenting selected aspects of our course design, we aim to motivate the feasibility and need for introducing verification in close correspondence to programming tasks.","PeriodicalId":202303,"journal":{"name":"Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang","volume":"11 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123384700","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}
引用次数: 0
Clojerl: the expressive power of Clojure on the BEAM Clojure在BEAM上的表达能力
Pub Date : 2020-08-23 DOI: 10.1145/3406085.3409012
Juan Facorro, Natalia Chechina
The development of new features and approaches in programming languages is a continuous and never-ending task, as languages are ultimately tools for expressing and solving problems. The past decade has seen a surge in languages implemented for the BEAM as part of a search to combine the fault-tolerance and scalability of the BEAM with a set of desired language features. In this paper we present Clojerl, an implementation of the Clojure language with a rich set of data processing capabilities and the expressive power of Lisp for the BEAM. The main design principles of Clojerl are to provide (1) seamless interoperability with the BEAM to enable frictionless interaction with other BEAM languages and (2) portability with Clojure to enable existing Clojure code to run on the BEAM with little or no modifications. We evaluate Clojerl by running a set of experiments that analyse the performance of eight most widely used expressions. While the results of complex expressions show that Clojerl requires further optimisations, Clojerl significantly outperforms Clojure in a set of basic expressions, confirming that Clojerl has the potential to provide a competitive performance while offering a rich set of programming language features.
编程语言中新特性和新方法的开发是一个持续的、永无止境的任务,因为语言最终是表达和解决问题的工具。在过去的十年中,为BEAM实现的语言激增,这是将BEAM的容错性和可伸缩性与一组所需的语言特性结合起来的搜索的一部分。在本文中,我们介绍了clojell,它是Clojure语言的一个实现,具有丰富的数据处理能力和Lisp对BEAM的表达能力。Clojerl的主要设计原则是提供(1)与BEAM的无缝互操作性,以实现与其他BEAM语言的无摩擦交互;(2)与Clojure的可移植性,使现有的Clojure代码可以在BEAM上运行,而无需进行很少的修改。我们通过运行一组实验来评估Clojerl,这些实验分析了8种最广泛使用的表达方式的表现。虽然复杂表达式的结果表明Clojerl需要进一步优化,但Clojerl在一组基本表达式上的表现明显优于Clojure,这证实了Clojerl在提供丰富的编程语言特性的同时,有潜力提供具有竞争力的性能。
{"title":"Clojerl: the expressive power of Clojure on the BEAM","authors":"Juan Facorro, Natalia Chechina","doi":"10.1145/3406085.3409012","DOIUrl":"https://doi.org/10.1145/3406085.3409012","url":null,"abstract":"The development of new features and approaches in programming languages is a continuous and never-ending task, as languages are ultimately tools for expressing and solving problems. The past decade has seen a surge in languages implemented for the BEAM as part of a search to combine the fault-tolerance and scalability of the BEAM with a set of desired language features. In this paper we present Clojerl, an implementation of the Clojure language with a rich set of data processing capabilities and the expressive power of Lisp for the BEAM. The main design principles of Clojerl are to provide (1) seamless interoperability with the BEAM to enable frictionless interaction with other BEAM languages and (2) portability with Clojure to enable existing Clojure code to run on the BEAM with little or no modifications. We evaluate Clojerl by running a set of experiments that analyse the performance of eight most widely used expressions. While the results of complex expressions show that Clojerl requires further optimisations, Clojerl significantly outperforms Clojure in a set of basic expressions, confirming that Clojerl has the potential to provide a competitive performance while offering a rich set of programming language features.","PeriodicalId":202303,"journal":{"name":"Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang","volume":"450 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132847609","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}
引用次数: 0
Secure design and verification of Erlang systems Erlang系统的安全设计与验证
Pub Date : 2020-08-23 DOI: 10.1145/3406085.3409011
Viktória Fördős
Security is a critical part of software development, companies have the utmost responsibility to protect their customers data against any threat. Secure design is a key enabler, since it cultivates security awareness in software projects from day zero. In this paper it is shown how to apply the principles of secure design to Erlang software projects. An Erlang specific method to identify trust zones is presented. The high risk vulnerabilities of the Erlang ecosystem are reviewed and grouped together using the CIA triad model. A dataflow based static analysis together with a prototype to verify security posture of a trust zone are introduced and evaluated using Riak Core as a case study.
安全是软件开发的一个关键部分,公司有最大的责任保护他们的客户数据免受任何威胁。安全设计是一个关键的促成因素,因为它从第一天开始就在软件项目中培养安全意识。本文介绍了如何将安全设计原则应用到Erlang软件项目中。提出了一种特定于Erlang的识别信任区域的方法。使用CIA三元模型对Erlang生态系统的高风险漏洞进行了审查和分组。介绍了一种基于数据流的静态分析和验证信任区域安全状态的原型,并以Riak Core为例进行了评估。
{"title":"Secure design and verification of Erlang systems","authors":"Viktória Fördős","doi":"10.1145/3406085.3409011","DOIUrl":"https://doi.org/10.1145/3406085.3409011","url":null,"abstract":"Security is a critical part of software development, companies have the utmost responsibility to protect their customers data against any threat. Secure design is a key enabler, since it cultivates security awareness in software projects from day zero. In this paper it is shown how to apply the principles of secure design to Erlang software projects. An Erlang specific method to identify trust zones is presented. The high risk vulnerabilities of the Erlang ecosystem are reviewed and grouped together using the CIA triad model. A dataflow based static analysis together with a prototype to verify security posture of a trust zone are introduced and evaluated using Riak Core as a case study.","PeriodicalId":202303,"journal":{"name":"Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang","volume":"15 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-23","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132635106","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}
引用次数: 2
Machine-checked natural semantics for Core Erlang: exceptions and side effects Core Erlang的机器检查的自然语义:异常和副作用
Pub Date : 2020-08-19 DOI: 10.1145/3406085.3409008
Péter Bereczky, Dániel Horpácsi, S. Thompson
This research is part of a wider project that aims to investigate and reason about the correctness of scheme-based source code transformations of Erlang programs. In order to formally reason about the definition of a programming language and the software built using it, we need a mathematically rigorous description of that language. In this paper, we present an extended natural semantics for Core Erlang based on our previous formalisation implemented with the Coq Proof Assistant. This extension includes the concepts of exceptions and side effects, moreover, some modifications and updates are also discussed. Then we describe theorems about the properties of this formalisation (e.g. determinism), formal expression evaluation and equivalence examples. These equivalences can be interpreted as simple local refactorings.
这项研究是一个更广泛的项目的一部分,该项目旨在调查和推断Erlang程序基于模式的源代码转换的正确性。为了正式地对编程语言的定义和使用它构建的软件进行推理,我们需要对该语言进行数学上严格的描述。在本文中,我们基于之前使用Coq Proof Assistant实现的形式化,为Core Erlang提供了一个扩展的自然语义。此扩展包括异常和副作用的概念,此外,还讨论了一些修改和更新。然后我们描述了关于这种形式化性质的定理(例如决定论),形式化表达式评估和等价示例。这些等价可以解释为简单的局部重构。
{"title":"Machine-checked natural semantics for Core Erlang: exceptions and side effects","authors":"Péter Bereczky, Dániel Horpácsi, S. Thompson","doi":"10.1145/3406085.3409008","DOIUrl":"https://doi.org/10.1145/3406085.3409008","url":null,"abstract":"This research is part of a wider project that aims to investigate and reason about the correctness of scheme-based source code transformations of Erlang programs. In order to formally reason about the definition of a programming language and the software built using it, we need a mathematically rigorous description of that language. In this paper, we present an extended natural semantics for Core Erlang based on our previous formalisation implemented with the Coq Proof Assistant. This extension includes the concepts of exceptions and side effects, moreover, some modifications and updates are also discussed. Then we describe theorems about the properties of this formalisation (e.g. determinism), formal expression evaluation and equivalence examples. These equivalences can be interpreted as simple local refactorings.","PeriodicalId":202303,"journal":{"name":"Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang","volume":"139 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-08-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125946429","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
期刊
Proceedings of the 19th ACM SIGPLAN International Workshop on Erlang
全部 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