首页 > 最新文献

Found. Trends Program. Lang.最新文献

英文 中文
Refinement Types: A Tutorial 细化类型:教程
Pub Date : 2020-10-15 DOI: 10.1561/9781680838855
Ranjit Jhala, Niki Vazou
Refinement types enrich a language's type system with logical predicates that circumscribe the set of values described by the type, thereby providing software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code. In this article, we distill the ideas developed in the substantial literature on refinement types into a unified tutorial that explains the key ingredients of modern refinement type systems. In particular, we show how to implement a refinement type checker via a progression of languages that incrementally add features to the language or type system.
细化类型通过限定类型所描述的值集的逻辑谓词丰富了语言的类型系统,从而为软件开发人员提供了一个可调的旋钮,告知类型系统应该在其代码中检查哪些不变量和正确性属性。在本文中,我们将精细化类型的大量文献中的思想提炼成一个统一的教程,解释现代精细化类型系统的关键成分。特别是,我们将展示如何通过一系列语言来实现细化类型检查器,这些语言会逐步向语言或类型系统添加特性。
{"title":"Refinement Types: A Tutorial","authors":"Ranjit Jhala, Niki Vazou","doi":"10.1561/9781680838855","DOIUrl":"https://doi.org/10.1561/9781680838855","url":null,"abstract":"Refinement types enrich a language's type system with logical predicates that circumscribe the set of values described by the type, thereby providing software developers a tunable knob with which to inform the type system about what invariants and correctness properties should be checked on their code. In this article, we distill the ideas developed in the substantial literature on refinement types into a unified tutorial that explains the key ingredients of modern refinement type systems. In particular, we show how to implement a refinement type checker via a progression of languages that incrementally add features to the language or type system.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"7 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-10-15","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130091834","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}
引用次数: 19
Progress of Concurrent Objects 并发对象的进度
Pub Date : 2020-05-17 DOI: 10.1561/2500000041
Hongjin Liang, Xinyu Feng
{"title":"Progress of Concurrent Objects","authors":"Hongjin Liang, Xinyu Feng","doi":"10.1561/2500000041","DOIUrl":"https://doi.org/10.1561/2500000041","url":null,"abstract":"","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2020-05-17","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131668722","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
Reconciling Abstraction with High Performance: A MetaOCaml approach 协调抽象与高性能:一种元ocaml方法
Pub Date : 2018-06-04 DOI: 10.1561/2500000038
O. Kiselyov
A common application of generative programming is building highperformance computational kernels highly tuned to the problem at hand. A typical linear algebra kernel is specialized to the numerical domain (rational, float, double, etc.), loop unrolling factors, array layout and a priori knowledge (e.g., the matrix being positive definite). It is tedious and error prone to specialize by hand, writing numerous variations of the same algorithm. The widely used generators such as ATLAS and SPIRAL reliably produce highly tuned specialized code but are difficult to extend. In ATLAS, which generates code using printf, even balancing parentheses is a challenge. According to the ATLAS creator, debugging is nightmare. A typed staged programming language such as MetaOCaml lets us state a general, obviously correct algorithm and add layers of specializations in a modular way. By ensuring that the generated code always compiles and letting us quickly test it, MetaOCaml makes writing generators less daunting and more productive. The readers will see it for themselves in this hands-on tutorial. Assuming no prior knowledge of MetaOCaml and only a basic familiarity with functional programming, we will eventually implement a simple domain-specific language (DSL) for linear algebra, with layers of optimizations for sparsity and memory layout of matrices and vectors, and their algebraic properties. We will generate optimal BLAS kernels. We shall get the taste of the “Abstraction without guilt”. O. Kiselyov. Reconciling Abstraction with High Performance: A MetaOCaml approach. Foundations and Trends © in Programming Languages, vol. 5, no. 1, pp. 1–101, 2018. DOI: 10.1561/2500000038. Full text available at: http://dx.doi.org/10.1561/2500000038
生成式编程的一个常见应用是构建针对当前问题高度调优的高性能计算内核。典型的线性代数核专门用于数值域(有理数,浮点数,双精度等),循环展开因子,数组布局和先验知识(例如,矩阵是正定的)。手工专门化编写相同算法的大量变体是乏味且容易出错的。广泛使用的生成器(如ATLAS和SPIRAL)可靠地生成高度调优的专用代码,但难以扩展。在使用printf生成代码的ATLAS中,即使是平衡括号也是一个挑战。根据ATLAS创建者的说法,调试是一场噩梦。类型化的分阶段编程语言(如MetaOCaml)允许我们声明一个通用的、明显正确的算法,并以模块化的方式添加专门化层。通过确保生成的代码总是可以编译,并允许我们快速测试它,MetaOCaml使编写生成器变得不那么令人生畏,而且更有效率。读者将在这个实践教程中看到它。假设没有MetaOCaml的先验知识,只对函数式编程有基本的了解,我们最终将实现一个简单的线性代数领域特定语言(DSL),其中包含对矩阵和向量的稀疏性和内存布局及其代数属性的优化层。我们将生成最优的BLAS核。我们将体会到“无罪抽象”的滋味。o·凯瑟列夫。协调抽象与高性能:一种元ocaml方法。基础与趋势©in Programming Languages, vol. 5, no. 5。1, pp. 1 - 101, 2018。DOI: 10.1561 / 2500000038。全文可在:http://dx.doi.org/10.1561/2500000038
{"title":"Reconciling Abstraction with High Performance: A MetaOCaml approach","authors":"O. Kiselyov","doi":"10.1561/2500000038","DOIUrl":"https://doi.org/10.1561/2500000038","url":null,"abstract":"A common application of generative programming is building highperformance computational kernels highly tuned to the problem at hand. A typical linear algebra kernel is specialized to the numerical domain (rational, float, double, etc.), loop unrolling factors, array layout and a priori knowledge (e.g., the matrix being positive definite). It is tedious and error prone to specialize by hand, writing numerous variations of the same algorithm. The widely used generators such as ATLAS and SPIRAL reliably produce highly tuned specialized code but are difficult to extend. In ATLAS, which generates code using printf, even balancing parentheses is a challenge. According to the ATLAS creator, debugging is nightmare. A typed staged programming language such as MetaOCaml lets us state a general, obviously correct algorithm and add layers of specializations in a modular way. By ensuring that the generated code always compiles and letting us quickly test it, MetaOCaml makes writing generators less daunting and more productive. The readers will see it for themselves in this hands-on tutorial. Assuming no prior knowledge of MetaOCaml and only a basic familiarity with functional programming, we will eventually implement a simple domain-specific language (DSL) for linear algebra, with layers of optimizations for sparsity and memory layout of matrices and vectors, and their algebraic properties. We will generate optimal BLAS kernels. We shall get the taste of the “Abstraction without guilt”. O. Kiselyov. Reconciling Abstraction with High Performance: A MetaOCaml approach. Foundations and Trends © in Programming Languages, vol. 5, no. 1, pp. 1–101, 2018. DOI: 10.1561/2500000038. Full text available at: http://dx.doi.org/10.1561/2500000038","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"76 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-06-04","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130098423","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}
引用次数: 25
Tutorial on Static Inference of Numeric Invariants by Abstract Interpretation 数值不变量的抽象解释静态推理教程
Pub Date : 2018-02-28 DOI: 10.1561/2500000034
A. Miné
Born in the late 70s, Abstract Interpretation has proven an effective method to construct static analyzers. It has led to successful program analysis tools routinely used in avionic, automotive, and space industries to help ensuring the correctness of missioncritical software. This tutorial presents Abstract Interpretation and its use to create static analyzers that infer numeric invariants on programs. We first present the theoretical bases of Abstract Interpretation: how to assign a well-defined formal semantics to programs, construct computable approximations to derive effective analyzers, and ensure soundness, i.e., any property derived by the analyzer is true of all actual executions — although some properties may be missed due to approximations, a necessary compromise to keep the analysis automatic, sound, and terminating when inferring uncomputable properties. We describe the classic numeric abstractions readily available to an analysis designer: intervals, polyhedra, congruences, octagons, etc., as well as domain combiners: the reduced product and various disjunctive completions. This tutorial focuses not only on the semantic aspect, but also on the algorithmic one, providing a description of the data-structures and algorithms necessary to effectively implement all our abstractions. We will encounter many trade-offs between cost on the one hand, and precision and expressiveness on the other hand. Invariant inference is formalized on an idealized, toy-language, manipulating perfect numbers, but the principles and algorithms we present are effectively used in analyzers for real industrial programs, although this is out of the scope of this tutorial. This tutorial is intended as an entry course in Abstract Interpretation, after which the reader should be ready to read the research literature on current advances in Abstract Interpretation and on the design of static analyzers for real languages.
诞生于70年代末的抽象解释已经被证明是构建静态分析器的有效方法。它导致了成功的程序分析工具,通常用于航空电子、汽车和航天工业,以帮助确保关键任务软件的正确性。本教程介绍抽象解释及其在创建静态分析程序中推断数值不变量的用法。我们首先提出抽象解释的理论基础:如何为程序分配一个定义良好的形式化语义,构造可计算的近似来推导有效的分析器,并确保健全性,即分析器派生的任何属性对所有实际执行都是正确的-尽管一些属性可能由于近似而丢失,这是保持分析自动,健全和在推断不可计算属性时终止的必要妥协。我们描述了一个分析设计者很容易获得的经典数字抽象:间隔、多面体、同余、八边形等,以及域组合器:约简积和各种析取补全。本教程不仅关注语义方面,还关注算法方面,提供有效实现所有抽象所必需的数据结构和算法的描述。我们将遇到许多权衡,一方面是成本,另一方面是精度和表现力。不变量推理是在理想化的,玩具语言,操纵完全数上形式化的,但是我们提出的原理和算法在实际工业程序的分析器中有效地使用,尽管这超出了本教程的范围。本教程旨在作为抽象解释的入门课程,在此之后,读者应该准备好阅读有关抽象解释和真实语言静态分析器设计的最新进展的研究文献。
{"title":"Tutorial on Static Inference of Numeric Invariants by Abstract Interpretation","authors":"A. Miné","doi":"10.1561/2500000034","DOIUrl":"https://doi.org/10.1561/2500000034","url":null,"abstract":"Born in the late 70s, Abstract Interpretation has proven an effective method to construct static analyzers. It has led to successful program analysis tools routinely used in avionic, automotive, and space industries to help ensuring the correctness of missioncritical software. This tutorial presents Abstract Interpretation and its use to create static analyzers that infer numeric invariants on programs. We first present the theoretical bases of Abstract Interpretation: how to assign a well-defined formal semantics to programs, construct computable approximations to derive effective analyzers, and ensure soundness, i.e., any property derived by the analyzer is true of all actual executions — although some properties may be missed due to approximations, a necessary compromise to keep the analysis automatic, sound, and terminating when inferring uncomputable properties. We describe the classic numeric abstractions readily available to an analysis designer: intervals, polyhedra, congruences, octagons, etc., as well as domain combiners: the reduced product and various disjunctive completions. This tutorial focuses not only on the semantic aspect, but also on the algorithmic one, providing a description of the data-structures and algorithms necessary to effectively implement all our abstractions. We will encounter many trade-offs between cost on the one hand, and precision and expressiveness on the other hand. Invariant inference is formalized on an idealized, toy-language, manipulating perfect numbers, but the principles and algorithms we present are effectively used in analyzers for real industrial programs, although this is out of the scope of this tutorial. This tutorial is intended as an entry course in Abstract Interpretation, after which the reader should be ready to read the research literature on current advances in Abstract Interpretation and on the design of static analyzers for real languages.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2018-02-28","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126585242","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}
引用次数: 60
Computer-Assisted Query Formulation 计算机辅助查询公式
Pub Date : 2016-05-03 DOI: 10.1561/2500000018
Alvin Cheung, Armando Solar-Lezama
Database management systems DBMS typically provide an applicationprogramming interface for users to issue queries using querylanguages such as SQL. Many such languages were originally designedfor business data processing applications. While these applications arestill relevant, two other classes of applications have become importantusers of data management systems: a web applications that issuequeries programmatically to the DBMS, and b data analytics involvingcomplex queries that allow data scientists to better understand theirdatasets. Unfortunately, existing query languages provided by databasemanagement systems are often far from ideal for these application domains.In this tutorial, we describe a set of technologies that assist users inspecifying database queries for different application domains. The goalof such systems is to bridge the gap between current query interfacesprovided by database management systems and the needs of differentusage scenarios that are not well served by existing query languages.We discuss the different interaction modes that such systems provideand the algorithms used to infer user queries. In particular, we focuson a new class of systems built using program synthesis techniques,and furthermore discuss opportunities in combining synthesis and othermethods used in prior systems to infer user queries.
数据库管理系统DBMS通常为用户提供一个应用程序编程接口,使用户使用查询语言(如SQL)发出查询。许多这样的语言最初是为业务数据处理应用程序设计的。虽然这些应用程序仍然是相关的,但另外两类应用程序已经成为数据管理系统的重要用户:以编程方式向DBMS发出查询的web应用程序和涉及复杂查询的数据分析应用程序,这些查询允许数据科学家更好地理解他们的数据集。不幸的是,数据库管理系统提供的现有查询语言对于这些应用程序领域来说往往并不理想。在本教程中,我们描述了一组帮助用户为不同的应用程序域指定数据库查询的技术。这种系统的目标是弥合数据库管理系统提供的当前查询接口与现有查询语言无法很好地满足不同使用场景的需求之间的差距。我们讨论了这些系统提供的不同交互模式以及用于推断用户查询的算法。特别地,我们关注使用程序合成技术构建的一类新系统,并进一步讨论将合成和先前系统中使用的其他方法相结合以推断用户查询的机会。
{"title":"Computer-Assisted Query Formulation","authors":"Alvin Cheung, Armando Solar-Lezama","doi":"10.1561/2500000018","DOIUrl":"https://doi.org/10.1561/2500000018","url":null,"abstract":"Database management systems DBMS typically provide an applicationprogramming interface for users to issue queries using querylanguages such as SQL. Many such languages were originally designedfor business data processing applications. While these applications arestill relevant, two other classes of applications have become importantusers of data management systems: a web applications that issuequeries programmatically to the DBMS, and b data analytics involvingcomplex queries that allow data scientists to better understand theirdatasets. Unfortunately, existing query languages provided by databasemanagement systems are often far from ideal for these application domains.In this tutorial, we describe a set of technologies that assist users inspecifying database queries for different application domains. The goalof such systems is to bridge the gap between current query interfacesprovided by database management systems and the needs of differentusage scenarios that are not well served by existing query languages.We discuss the different interaction modes that such systems provideand the algorithms used to infer user queries. In particular, we focuson a new class of systems built using program synthesis techniques,and furthermore discuss opportunities in combining synthesis and othermethods used in prior systems to infer user queries.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-05-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122370267","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
Behavioral Types in Programming Languages 编程语言中的行为类型
Pub Date : 2016-05-03 DOI: 10.1561/2500000031
D. Ancona, V. Bono, M. Bravetti, Joana Campos, Giuseppe Castagna, Pierre-Malo Deniélou, S. Gay, N. Gesbert, Elena Giachino, Raymond Hu, E. Johnsen, F. Martins, V. Mascardi, F. Montesi, R. Neykova, Nicholas Ng, L. Padovani, V. Vasconcelos, N. Yoshida
A recent trend in programming language research is to use behavioral type theory to ensure various correctness properties of large-scale, communication-intensive systems. Behavioral types encompass concepts such as interfaces, communication protocols, contracts, and choreography. The successful application of behavioral types requires a solid understanding of several practical aspects, from their representation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to design and monitoring methodologies that take behaviors into account. Behavioral Types in Programming Languages provides the reader with the first comprehensive overview of the state of the art of these practical aspects, which are summarized as the pragmatics of behavioral types. Each section covers a particular programming paradigm or methodology, providing an ideal reference for programming languages researchers interested the topic, and in identifying the areas as yet unexplored.
编程语言研究的一个最新趋势是使用行为类型理论来确保大规模、通信密集型系统的各种正确性。行为类型包括接口、通信协议、契约和编排等概念。行为类型的成功应用需要对几个实际方面有扎实的理解,从它们在具体编程语言中的表示,到它们与其他编程结构(如方法和函数)的集成,再到考虑行为的设计和监控方法。程序设计语言中的行为类型为读者提供了这些实践方面的第一个全面概述,这些方面被总结为行为类型的语用学。每个部分都涵盖了特定的编程范式或方法,为对该主题感兴趣的编程语言研究人员提供了理想的参考,并确定了尚未探索的领域。
{"title":"Behavioral Types in Programming Languages","authors":"D. Ancona, V. Bono, M. Bravetti, Joana Campos, Giuseppe Castagna, Pierre-Malo Deniélou, S. Gay, N. Gesbert, Elena Giachino, Raymond Hu, E. Johnsen, F. Martins, V. Mascardi, F. Montesi, R. Neykova, Nicholas Ng, L. Padovani, V. Vasconcelos, N. Yoshida","doi":"10.1561/2500000031","DOIUrl":"https://doi.org/10.1561/2500000031","url":null,"abstract":"A recent trend in programming language research is to use behavioral type theory to ensure various correctness properties of large-scale, communication-intensive systems. Behavioral types encompass concepts such as interfaces, communication protocols, contracts, and choreography. The successful application of behavioral types requires a solid understanding of several practical aspects, from their representation in a concrete programming language, to their integration with other programming constructs such as methods and functions, to design and monitoring methodologies that take behaviors into account. Behavioral Types in Programming Languages provides the reader with the first comprehensive overview of the state of the art of these practical aspects, which are summarized as the pragmatics of behavioral types. Each section covers a particular programming paradigm or methodology, providing an ideal reference for programming languages researchers interested the topic, and in identifying the areas as yet unexplored.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-05-03","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129663571","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}
引用次数: 136
Nominal Game Semantics 名义游戏语义
Pub Date : 2016-03-01 DOI: 10.1561/2500000017
A. Murawski, N. Tzevelekos
These tutorial notes present nominal game semantics, a denotational technique for modelling higher-order programs.
这些教程笔记介绍了名义游戏语义,这是一种为高阶程序建模的表意技术。
{"title":"Nominal Game Semantics","authors":"A. Murawski, N. Tzevelekos","doi":"10.1561/2500000017","DOIUrl":"https://doi.org/10.1561/2500000017","url":null,"abstract":"These tutorial notes present nominal game semantics, a denotational technique for modelling higher-order programs.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"54 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2016-03-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131504681","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}
引用次数: 25
Programming with "Big Code" 使用“大代码”编程
Pub Date : 2015-11-30 DOI: 10.1561/2500000028
Eran Yahav
The vast amount of code available on the web is increasing on a daily basis. Open-source hosting sites such as GitHub contain billions of lines of code. Community question-answering sites provide millions of code snippets with corresponding text and metadata. The amount of code available in executable binaries is even greater. In this talk, I will cover recent research trends on leveraging such “big code” for program analysis, program synthesis and reverse engineering. We will consider a range of semantic representations based on symbolic automata [11, 15], tracelets [3], numerical abstractions [13, 14], and textual descriptions [1, 22], as well as different notions of code similarity based on these representations.
网络上可用的大量代码每天都在增加。像GitHub这样的开源托管网站包含数十亿行代码。社区问答站点提供了数以百万计的带有相应文本和元数据的代码片段。可执行二进制文件中可用的代码量甚至更大。在这次演讲中,我将介绍利用这些“大代码”进行程序分析、程序合成和逆向工程的最新研究趋势。我们将考虑一系列基于符号自动机(symbolic automata)[11,15]、tracelets[3]、数值抽象(numerical abstractions)[13,14]和文本描述(textual description)[1,22]的语义表示,以及基于这些表示的不同代码相似性概念。
{"title":"Programming with \"Big Code\"","authors":"Eran Yahav","doi":"10.1561/2500000028","DOIUrl":"https://doi.org/10.1561/2500000028","url":null,"abstract":"The vast amount of code available on the web is increasing on a daily basis. Open-source hosting sites such as GitHub contain billions of lines of code. Community question-answering sites provide millions of code snippets with corresponding text and metadata. The amount of code available in executable binaries is even greater. In this talk, I will cover recent research trends on leveraging such “big code” for program analysis, program synthesis and reverse engineering. We will consider a range of semantic representations based on symbolic automata [11, 15], tracelets [3], numerical abstractions [13, 14], and textual descriptions [1, 22], as well as different notions of code similarity based on these representations.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-11-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122175648","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}
引用次数: 31
Pointer Analysis 指针分析
Pub Date : 2015-04-30 DOI: 10.1561/2500000014
Y. Smaragdakis, G. Balatsouras
Pointer analysis is a fundamental static program analysis, with a rich literature and wide applications. The goal of pointer analysis is to compute an approximation of the set of program objects that a pointer variable or expression can refer to. We present an introduction and survey of pointer analysis techniques, with an emphasis on distilling the essence of common analysis algorithms. To this end, we focus on a declarative presentation of a common core of pointer analyses: algorithms are modeled as configurable, yet easy-to-follow, logical specifications. The specifications serve as a starting point for a broader discussion of the literature, as independent threads spun from the declarative model.
指针分析是静态程序分析的基础,有着丰富的文献和广泛的应用。指针分析的目的是计算一个指针变量或表达式可以引用的程序对象集合的近似值。我们介绍和调查了指针分析技术,重点是提炼常见分析算法的本质。为此,我们将重点放在指针分析的公共核心的声明性表示上:将算法建模为可配置的、但易于遵循的逻辑规范。规范作为更广泛讨论文献的起点,就像从声明性模型中分离出来的独立线程一样。
{"title":"Pointer Analysis","authors":"Y. Smaragdakis, G. Balatsouras","doi":"10.1561/2500000014","DOIUrl":"https://doi.org/10.1561/2500000014","url":null,"abstract":"Pointer analysis is a fundamental static program analysis, with a rich literature and wide applications. The goal of pointer analysis is to compute an approximation of the set of program objects that a pointer variable or expression can refer to. We present an introduction and survey of pointer analysis techniques, with an emphasis on distilling the essence of common analysis algorithms. To this end, we focus on a declarative presentation of a common core of pointer analyses: algorithms are modeled as configurable, yet easy-to-follow, logical specifications. The specifications serve as a starting point for a broader discussion of the literature, as independent threads spun from the declarative model.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"121 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2015-04-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"114377697","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}
引用次数: 154
Formal Models and Techniques for Analyzing Security Protocols: A Tutorial 分析安全协议的形式化模型和技术:教程
Pub Date : 2014-11-14 DOI: 10.1561/2500000001
V. Cortier, S. Kremer
Security protocols are the small distributed programs which are omnipresent in our daily lives in areas such as online banking and commerce and mobile phones. Their purpose is to keep our transactions and personal data secure. Because these protocols are generally implemented on potentially insecure networks like the internet, they are notoriously difficult to devise. The field of symbolic analysis of security protocols has seen significant advances during the last few years. There is now a better understanding of decidability and complexity questions and successful automated tools for the provision of security and prevention of attack have been applied to numerous protocols, including industrial protocols. Models have been extended with algebraic properties to weaken the perfect cryptography assumption and even computational soundness results towards cryptographic models have been achieved. What was still missing, however, was a book which summarized the state-of-the-art of these advances. Whilst this book does not pretend to give a complete overview of the field - something which would be impossible in a single volume - it does, nevertheless, cover a representative sample of the ongoing work in this field, which is still very active. The book contains an introduction and ten tutorial-like chapters on selected topics, each written by a leading expert, and will be of interest to all those involved in the formal analysis of security protocols.
安全协议是一种小型的分布式程序,它在我们的日常生活中无处不在,如网上银行、网上商务和移动电话等领域。他们的目的是保证我们的交易和个人数据的安全。由于这些协议通常是在潜在不安全的网络(如internet)上实现的,因此设计起来非常困难。安全协议的符号分析领域在过去几年中取得了重大进展。现在对可决定性和复杂性问题有了更好的理解,用于提供安全和预防攻击的成功自动化工具已应用于许多协议,包括工业协议。利用代数性质对模型进行扩展,削弱了完美密码学假设,并获得了密码学模型的计算健全性结果。然而,仍然缺少一本总结这些进步的最新进展的书。虽然这本书并没有假装给出该领域的完整概述-这在一卷书中是不可能的-但它确实涵盖了该领域中正在进行的工作的代表性样本,这些工作仍然非常活跃。这本书包含一个介绍和十个类似教程的章节,每个章节都是由一位顶尖的专家撰写的,所有参与安全协议形式化分析的人都会感兴趣。
{"title":"Formal Models and Techniques for Analyzing Security Protocols: A Tutorial","authors":"V. Cortier, S. Kremer","doi":"10.1561/2500000001","DOIUrl":"https://doi.org/10.1561/2500000001","url":null,"abstract":"Security protocols are the small distributed programs which are omnipresent in our daily lives in areas such as online banking and commerce and mobile phones. Their purpose is to keep our transactions and personal data secure. Because these protocols are generally implemented on potentially insecure networks like the internet, they are notoriously difficult to devise. The field of symbolic analysis of security protocols has seen significant advances during the last few years. There is now a better understanding of decidability and complexity questions and successful automated tools for the provision of security and prevention of attack have been applied to numerous protocols, including industrial protocols. Models have been extended with algebraic properties to weaken the perfect cryptography assumption and even computational soundness results towards cryptographic models have been achieved. What was still missing, however, was a book which summarized the state-of-the-art of these advances. Whilst this book does not pretend to give a complete overview of the field - something which would be impossible in a single volume - it does, nevertheless, cover a representative sample of the ongoing work in this field, which is still very active. The book contains an introduction and ten tutorial-like chapters on selected topics, each written by a leading expert, and will be of interest to all those involved in the formal analysis of security protocols.","PeriodicalId":376429,"journal":{"name":"Found. Trends Program. Lang.","volume":"29 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"2014-11-14","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115197019","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}
引用次数: 49
期刊
Found. Trends Program. Lang.
全部 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