Summit on Advances in Programming Languages最新文献

筛选
英文 中文
A Golden Age of Hardware Description Languages: Applying Programming Language Techniques to Improve Design Productivity 硬件描述语言的黄金时代:应用程序设计语言技术提高设计效率
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.7
Lenny Truong, P. Hanrahan
{"title":"A Golden Age of Hardware Description Languages: Applying Programming Language Techniques to Improve Design Productivity","authors":"Lenny Truong, P. Hanrahan","doi":"10.4230/LIPIcs.SNAPL.2019.7","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.7","url":null,"abstract":"Leading experts have declared that there is an impending golden age of computer architecture. During this age, the rate at which architects will be able to innovate will be directly tied to the design and implementation of the hardware description languages they use. Thus, the programming languages community stands on the critical path to this new golden age. This implies that we are also on the cusp of a golden age of hardware description languages. In this paper, we discuss the intellectual challenges facing researchers interested in hardware description language design, compilers, and formal methods. The major theme will be identifying opportunities to apply programming language techniques to address issues in hardware design productivity. Then, we present a vision for a multi-language system that provides a framework for developing solutions to these intellectual problems. This vision is based on a meta-programmed host language combined with a core embedded hardware description language that is used as the basis for the research and development of a sea of domain-specific languages. Central to the design of this system is the core language which is based on an abstraction that provides a general mechanism for the composition of hardware components described in any language.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"127380943","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}
引用次数: 30
A Complement to Blame 责备的补充
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.309
P. Wadler
{"title":"A Complement to Blame","authors":"P. Wadler","doi":"10.4230/LIPIcs.SNAPL.2015.309","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.309","url":null,"abstract":"Contracts, gradual typing, and hybrid typing all permit less-precisely typed and more-precisely typed code to interact. Blame calculus encompasses these, and guarantees blame safety: blame for type errors always lays with less-precisely typed code. This paper serves as a complement to the literature on blame calculus: it elaborates on motivation, comments on the reception of the work, critiques some work for not properly attending to blame, and looks forward to applications. No knowledge of contracts, gradual typing, hybrid typing, or blame calculus is assumed.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126088284","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
From Macros to DSLs: The Evolution of Racket 从宏到dsl:球拍的演变
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.5
Ryan Culpepper, M. Felleisen, M. Flatt, S. Krishnamurthi
{"title":"From Macros to DSLs: The Evolution of Racket","authors":"Ryan Culpepper, M. Felleisen, M. Flatt, S. Krishnamurthi","doi":"10.4230/LIPIcs.SNAPL.2019.5","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.5","url":null,"abstract":"The Racket language promotes a language-oriented style of programming. Developers create many domain-specific languages, write programs in them, and compose these programs via Racket code. This style of programming can work only if creating and composing little languages is simple and effective. While Racket’s Lisp heritage might suggest that macros suffice, its design team discovered significant shortcomings and had to improve them in many ways. This paper presents the evolution of Racket’s macro system, including a false start, and assesses its current state. 2012 ACM Subject Classification Software and its engineering → Semantics","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"125622260","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
Bridging the Gap Between General-Purpose and Domain-Specific Compilers with Synthesis 用合成弥合通用和特定领域编译器之间的差距
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.51
Alvin Cheung, S. Kamil, Armando Solar-Lezama
{"title":"Bridging the Gap Between General-Purpose and Domain-Specific Compilers with Synthesis","authors":"Alvin Cheung, S. Kamil, Armando Solar-Lezama","doi":"10.4230/LIPIcs.SNAPL.2015.51","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.51","url":null,"abstract":"This paper describes a new approach to program optimization that allows general purpose code to benefit from the optimization power of domain-specific compilers. The key to this approach is a synthesis-based technique to raise the level of abstraction of general-purpose code to enable aggressive domain-specific optimizations. \u0000 \u0000We have been implementing this approach in an extensible system called Herd. The system is designed around a collection of parameterized kernel translators. Each kernel translator is associated with a domain-specific compiler, and the role of each kernel translator is to scan the input code in search of code fragments that can be optimized by the domain-specific compiler embedded within each kernel translator. By leveraging general synthesis technology, it is possible to have a generic kernel translator that can be specialized by compiler developers for each domain-specific compiler, making it easy to build new domain knowledge into the overall system. \u0000 \u0000We illustrate this new approach to build optimizing compilers in two different domains, and highlight research challenges that need to be addressed in order to achieve the ultimate vision.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128143543","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}
引用次数: 4
The Design of Terra: Harnessing the Best Features of High-Level and Low-Level Languages Terra的设计:利用高级和低级语言的最佳特性
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.79
Zach DeVito, P. Hanrahan
{"title":"The Design of Terra: Harnessing the Best Features of High-Level and Low-Level Languages","authors":"Zach DeVito, P. Hanrahan","doi":"10.4230/LIPIcs.SNAPL.2015.79","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.79","url":null,"abstract":"Applications are often written using a combination of high-level and low-level languages since it allows performance critical parts to be carefully optimized, while other parts can be written more productively. This approach is used in web development, game programming, and in build systems for applications themselves. However, most languages were not designed with interoperability in mind, resulting in glue code and duplicated features that add complexity. We propose a two-language system where both languages were designed to interoperate. Lua is used for our high-level language since it was originally designed with interoperability in mind. We create a new low-level language, Terra, that we designed to interoperate with Lua. It is embedded in Lua, and meta-programmed from it, but has a low level of abstraction suited for writing high-performance code. We discuss important design decisions ‐ compartmentalized runtimes, glue-free interoperation, and meta-programming features ‐ that enable Lua and Terra to be more powerful than the sum of their parts. 1998 ACM Subject Classification D.3.3 Language Constructs and Features","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122228933","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
Natural Language is a Programming Language: Applying Natural Language Processing to Software Development 自然语言是一种编程语言:将自然语言处理应用于软件开发
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.4
Michael D. Ernst
{"title":"Natural Language is a Programming Language: Applying Natural Language Processing to Software Development","authors":"Michael D. Ernst","doi":"10.4230/LIPIcs.SNAPL.2017.4","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.4","url":null,"abstract":"A powerful, but limited, way to view software is as source code alone. Treating a program as a sequence of instructions enables it to be formalized and makes it amenable to mathematical techniques such as abstract interpretation and model checking. \u0000 \u0000A program consists of much more than a sequence of instructions. Developers make use of test cases, documentation, variable names, program structure, the version control repository, and more. I argue that it is time to take the blinders off of software analysis tools: tools should use all these artifacts to deduce more powerful and useful information about the program. \u0000 \u0000Researchers are beginning to make progress towards this vision. This paper gives, as examples, four results that find bugs and generate code by applying natural language processing techniques to software artifacts. The four techniques use as input error messages, variable names, procedure documentation, and user questions. They use four different NLP techniques: document similarity, word semantics, parse trees, and neural networks. \u0000 \u0000The initial results suggest that this is a promising avenue for future work.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123259481","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}
引用次数: 41
Refined Criteria for Gradual Typing 渐进分型的改进标准
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.274
Jeremy G. Siek, Michael M. Vitousek, M. Cimini, J. Boyland
{"title":"Refined Criteria for Gradual Typing","authors":"Jeremy G. Siek, Michael M. Vitousek, M. Cimini, J. Boyland","doi":"10.4230/LIPIcs.SNAPL.2015.274","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.274","url":null,"abstract":"Siek and Taha [2006] coined the term gradual typing to describe a theory for integrating static and dynamic typing within a single language that 1) puts the programmer in control of which regions of code are statically or dynamically typed and 2) enables the gradual evolution of code between the two typing disciplines. Since 2006, the term gradual typing has become quite popular but its meaning has become diluted to encompass anything related to the integration of static and dynamic typing. This dilution is partly the fault of the original paper, which provided an incomplete formal characterization of what it means to be gradually typed. In this paper we draw a crisp line in the sand that includes a new formal property, named the gradual guarantee, that relates the behavior of programs that differ only with respect to their type annotations. We argue that the gradual guarantee provides important guidance for designers of gradually typed languages. We survey the gradual typing literature, critiquing designs in light of the gradual guarantee. We also report on a mechanized proof that the gradual guarantee holds for the Gradually Typed Lambda Calculus.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133979722","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}
引用次数: 149
The End of History? Using a Proof Assistant to Replace Language Design with Library Design 历史的终结?使用证明助手用库设计代替语言设计
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.3
A. Chlipala, Benjamin Delaware, Samuel Duchovni, Jason Gross, Clément Pit-Claudel, Sorawit Suriyakarn, Peng Wang, Katherine Q. Ye
{"title":"The End of History? Using a Proof Assistant to Replace Language Design with Library Design","authors":"A. Chlipala, Benjamin Delaware, Samuel Duchovni, Jason Gross, Clément Pit-Claudel, Sorawit Suriyakarn, Peng Wang, Katherine Q. Ye","doi":"10.4230/LIPIcs.SNAPL.2017.3","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.3","url":null,"abstract":"Functionality of software systems has exploded in part because of advances in programming-language support for packaging reusable functionality as libraries. Developers benefit from the uniformity that comes of exposing many interfaces in the same language, as opposed to stringing together hodgepodges of command-line tools. Domain-specific languages may be viewed as an evolution of the power of reusable interfaces, when those interfaces become so flexible as to deserve to be called programming languages. However, common approaches to domain-specific languages give up many of the hard-won advantages of library-building in a rich common language, and even the traditional approach poses significant challenges in learning new APIs. We suggest that instead of continuing to develop new domain-specific languages, our community should embrace library-based ecosystems within very expressive languages that mix programming and theorem proving. Our prototype framework Fiat, a library for the Coq proof assistant, turns languages into easily comprehensible libraries via the key idea of modularizing functionality and performance away from each other, the former via macros that desugar into higher-order logic and the latter via optimization scripts that derive efficient code from logical programs.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"133602937","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}
引用次数: 16
Uncanny Valleys in Declarative Language Design 陈述性语言设计中的恐怖谷
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.9
Mark S. Miller, D. V. Dincklage, V. Ercegovac, Brian Chin
{"title":"Uncanny Valleys in Declarative Language Design","authors":"Mark S. Miller, D. V. Dincklage, V. Ercegovac, Brian Chin","doi":"10.4230/LIPIcs.SNAPL.2017.9","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.9","url":null,"abstract":"When people write programs in conventional programming languages, they over-specify how to solve the problem they have in mind. Over-specification prevents the language’s implementation from making many optimization decisions, leaving programmers with this burden. In more declarative languages, programmers over-specify less, enabling the implementation to make more choices for them. As these decisions improve, programmers shift more attention from implementation to their real problems. This process easily overshoots. When under-specified programs almost always work well enough, programmers rarely need to think about implementation details. As their understanding of implementation choices atrophies, the controls provided so they can override these decisions become obscure. Our declarative language project, Yedalog, is in the midst of this dilemma. The improvements in question make our users more productive, so we cannot simply retreat back towards overspecification. To proceed forward instead, we must meet some of the expectations we prematurely provoked, and our implementation’s behavior must help users learn expectations more aligned with our intended semantics. These are general issues. Discussing their concrete manifestation in Yedalog should help other declarative systems that come to face these issues. 1998 ACM Subject Classification D.3.2 Constraint and Logic Languages","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128946542","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}
引用次数: 4
Version Control Is for Your Data Too 版本控制也适用于你的数据
Summit on Advances in Programming Languages Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.8
Gowtham Kaki, K. Sivaramakrishnan, S. Jagannathan
{"title":"Version Control Is for Your Data Too","authors":"Gowtham Kaki, K. Sivaramakrishnan, S. Jagannathan","doi":"10.4230/LIPIcs.SNAPL.2019.8","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.8","url":null,"abstract":"Programmers regularly use distributed version control systems (DVCS) such as Git to facilitate collaborative software development. The primary purpose of a DVCS is to maintain integrity of source code in the presence of concurrent, possibly conflicting edits from collaborators. In addition to safely merging concurrent non-conflicting edits, a DVCS extensively tracks source code provenance to help programmers contextualize and resolve conflicts. Provenance also facilitates debugging by letting programmers see diffs between versions and quickly find those edits that introduced the offending conflict (e.g., via git blame). In this paper, we posit that analogous workflows to collaborative software development also arise in distributed software execution; we argue that the characteristics that make a DVCS an ideal fit for the former also make it an ideal fit for the latter. Building on this observation, we propose a distributed programming model, called carmot that views distributed shared state as an entity evolving in time, manifested as a sequence of persistent versions, and relies on an explicitly defined merge semantics to reconcile concurrent conflicting versions. We show examples demonstrating how carmot simplifies distributed programming, while also enabling novel workflows integral to modern applications such as blockchains. We also describe a prototype implementation of carmot that we use to evaluate its practicality. 2012 ACM Subject Classification Computing methodologies→ Distributed programming languages; Software and its engineering → Software configuration management and version control systems; Software and its engineering → API languages","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":null,"pages":null},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"122524121","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}
引用次数: 4
0
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
确定
请完成安全验证×
相关产品
×
本文献相关产品
联系我们:info@booksci.cn Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。 Copyright © 2023 布克学术 All rights reserved.
京ICP备2023020795号-1
ghs 京公网安备 11010802042870号
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术官方微信