首页 > 最新文献

Summit on Advances in Programming Languages最新文献

英文 中文
Programming Language Tools and Techniques for 3D Printing 3D打印的编程语言工具和技术
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.10
Chandrakana Nandi, A. Caspi, D. Grossman, Zachary Tatlock
We propose a research agenda to investigate programming language techniques for improving affordable, end-user desktop manufacturing processes such as 3D printing. Our goal is to adapt programming languages tools and extend the decades of research in industrial, high-end CAD/CAM in order to help make affordable desktop manufacturing processes more accurate, fast, reliable, and accessible to end-users. We focus on three major areas where 3D printing can benefit from programming language tools: design synthesis, optimizing compilation, and runtime monitoring. We present preliminary results on synthesizing editable CAD models from difficult-to-edit surface meshes, discuss potential new compilation strategies, and propose runtime monitoring techniques. We conclude by discussing additional near-future directions we intend to pursue.
我们提出了一项研究议程,以调查编程语言技术,以改善可负担得起的终端用户桌面制造工艺,如3D打印。我们的目标是适应编程语言工具,并扩展数十年来在工业、高端CAD/CAM领域的研究,以帮助使最终用户能够负担得起的桌面制造过程更准确、快速、可靠和可访问。我们专注于3D打印可以从编程语言工具中受益的三个主要领域:设计合成,优化编译和运行时监控。我们介绍了从难以编辑的表面网格合成可编辑CAD模型的初步结果,讨论了潜在的新编译策略,并提出了运行时监控技术。最后,我们将讨论我们打算追求的其他近期方向。
{"title":"Programming Language Tools and Techniques for 3D Printing","authors":"Chandrakana Nandi, A. Caspi, D. Grossman, Zachary Tatlock","doi":"10.4230/LIPIcs.SNAPL.2017.10","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.10","url":null,"abstract":"We propose a research agenda to investigate programming language techniques for improving affordable, end-user desktop manufacturing processes such as 3D printing. Our goal is to adapt programming languages tools and extend the decades of research in industrial, high-end CAD/CAM in order to help make affordable desktop manufacturing processes more accurate, fast, reliable, and accessible to end-users. We focus on three major areas where 3D printing can benefit from programming language tools: design synthesis, optimizing compilation, and runtime monitoring. We present preliminary results on synthesizing editable CAD models from difficult-to-edit surface meshes, discuss potential new compilation strategies, and propose runtime monitoring techniques. We conclude by discussing additional near-future directions we intend to pursue.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"28 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"117078839","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 14
Coupling Memory and Computation for Locality Management 局部性管理的耦合内存和计算
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.1
Umut A. Acar, G. Blelloch, M. Fluet, Stefan K. Muller, R. Raghunathan
We articulate the need for managing (data) locality automatically rather than leaving it to the programmer, especially in parallel programming systems. To this end, we propose techniques for coupling tightly the computation (including the thread scheduler) and the memory manager so that data and computation can be positioned closely in hardware. Such tight coupling of computation and memory management is in sharp contrast with the prevailing practice of considering each in isolation. For example, memory-management techniques usually abstract the computation as an unknown "mutator", which is treated as a "black box". As an example of the approach, in this paper we consider a specific class of parallel computations, nested-parallel computations. Such computations dynamically create a nesting of parallel tasks. We propose a method for organizing memory as a tree of heaps reflecting the structure of the nesting. More specifically, our approach creates a heap for a task if it is separately scheduled on a processor. This allows us to couple garbage collection with the structure of the computation and the way in which it is dynamically scheduled on the processors. This coupling enables taking advantage of locality in the program by mapping it to the locality of the hardware. For example for improved locality a heap can be garbage collected immediately after its task finishes when the heap contents is likely in cache.
我们阐明了自动管理(数据)局部性的需要,而不是把它留给程序员,尤其是在并行编程系统中。为此,我们提出了将计算(包括线程调度器)和内存管理器紧密耦合的技术,以便数据和计算可以紧密地定位在硬件中。计算和内存管理的这种紧密耦合与孤立地考虑两者的流行做法形成鲜明对比。例如,内存管理技术通常将计算抽象为未知的“mutator”,将其视为“黑匣子”。作为该方法的一个例子,在本文中我们考虑了一类特殊的并行计算,嵌套并行计算。这种计算动态地创建并行任务的嵌套。我们提出了一种将内存组织为反映嵌套结构的堆树的方法。更具体地说,如果任务在处理器上单独调度,我们的方法会为任务创建一个堆。这允许我们将垃圾收集与计算结构以及在处理器上动态调度的方式结合起来。这种耦合可以通过将程序映射到硬件的局部性来利用程序中的局部性。例如,为了改进局部性,可以在堆内容可能在缓存中时,在其任务完成后立即对堆进行垃圾收集。
{"title":"Coupling Memory and Computation for Locality Management","authors":"Umut A. Acar, G. Blelloch, M. Fluet, Stefan K. Muller, R. Raghunathan","doi":"10.4230/LIPIcs.SNAPL.2015.1","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.1","url":null,"abstract":"We articulate the need for managing (data) locality automatically rather than leaving it to the programmer, especially in parallel programming systems. To this end, we propose techniques for coupling tightly the computation (including the thread scheduler) and the memory manager so that data and computation can be positioned closely in hardware. Such tight coupling of computation and memory management is in sharp contrast with the prevailing practice of considering each in isolation. For example, memory-management techniques usually abstract the computation as an unknown \"mutator\", which is treated as a \"black box\". As an example of the approach, in this paper we consider a specific class of parallel computations, nested-parallel computations. Such computations dynamically create a nesting of parallel tasks. We propose a method for organizing memory as a tree of heaps reflecting the structure of the nesting. More specifically, our approach creates a heap for a task if it is separately scheduled on a processor. This allows us to couple garbage collection with the structure of the computation and the way in which it is dynamically scheduled on the processors. This coupling enables taking advantage of locality in the program by mapping it to the locality of the hardware. For example for improved locality a heap can be garbage collected immediately after its task finishes when the heap contents is likely in cache.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126853196","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
引用次数: 6
Blame Tracking and Type Error Debugging 责任跟踪和类型错误调试
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.2
Sheng Chen, J. P. Campora
In this work, we present an unexpected connection between gradual typing and type error debugging. Namely, we illustrate that gradual typing provides a natural way to defer type errors in statically illtyped programs, providing more feedback than traditional approaches to deferring type errors. When evaluating expressions that lead to runtime type errors, the usefulness of the feedback depends on blame tracking, the defacto approach to locating the cause of such runtime type errors. Unfortunately, blame tracking suffers from the bias problem for type error localization in languages with type inference. We illustrate and formalize the bias problem for blame tracking, present ideas for adapting existing type error debugging techniques to combat this bias, and outline further challenges. 2012 ACM Subject Classification Theory of computation → Type structures
在这项工作中,我们提出了渐进输入和类型错误调试之间的意想不到的联系。也就是说,我们说明渐进式类型提供了一种在静态非类型程序中延迟类型错误的自然方法,提供了比传统方法更多的延迟类型错误的反馈。在评估导致运行时类型错误的表达式时,反馈的有用性取决于责任跟踪,即定位此类运行时类型错误原因的实际方法。不幸的是,在具有类型推理的语言中,责备跟踪存在类型错误定位的偏差问题。我们说明和形式化了偏差问题的责任跟踪,提出了一些想法,以适应现有的类型错误调试技术来对抗这种偏差,并概述了进一步的挑战。2012 ACM学科分类计算理论→类型结构
{"title":"Blame Tracking and Type Error Debugging","authors":"Sheng Chen, J. P. Campora","doi":"10.4230/LIPIcs.SNAPL.2019.2","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.2","url":null,"abstract":"In this work, we present an unexpected connection between gradual typing and type error debugging. Namely, we illustrate that gradual typing provides a natural way to defer type errors in statically illtyped programs, providing more feedback than traditional approaches to deferring type errors. When evaluating expressions that lead to runtime type errors, the usefulness of the feedback depends on blame tracking, the defacto approach to locating the cause of such runtime type errors. Unfortunately, blame tracking suffers from the bias problem for type error localization in languages with type inference. We illustrate and formalize the bias problem for blame tracking, present ideas for adapting existing type error debugging techniques to combat this bias, and outline further challenges. 2012 ACM Subject Classification Theory of computation → Type structures","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"9 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121503040","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
Leveraging Sequential Computation for Programming Efficient and Reliable Distributed Systems 利用顺序计算编程高效可靠的分布式系统
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.7
I. Kuraj, Armando Solar-Lezama
While sequential programs represent a simple and natural form for expressing functionality, corresponding distributed implementations get considerably more complex. We examine the possibility of using the sequential computation model for programming distributed systems and requirements for making that possible. The benefits of such an approach include easier specification and reasoning about behaviors in the system, as well as a possibility to directly reuse existing techniques for checking correctness and optimization of sequential programs to produce efficient and reliable distributed implementations.
虽然顺序程序代表了一种简单而自然的表达功能的形式,但相应的分布式实现要复杂得多。我们研究了使用顺序计算模型对分布式系统进行编程的可能性,以及实现这一可能性的需求。这种方法的好处包括更容易规范和推理系统中的行为,以及直接重用现有技术来检查顺序程序的正确性和优化,以产生高效可靠的分布式实现的可能性。
{"title":"Leveraging Sequential Computation for Programming Efficient and Reliable Distributed Systems","authors":"I. Kuraj, Armando Solar-Lezama","doi":"10.4230/LIPIcs.SNAPL.2017.7","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.7","url":null,"abstract":"While sequential programs represent a simple and natural form for expressing functionality, corresponding distributed implementations get considerably more complex. We examine the possibility of using the sequential computation model for programming distributed systems and requirements for making that possible. The benefits of such an approach include easier specification and reasoning about behaviors in the system, as well as a possibility to directly reuse existing techniques for checking correctness and optimization of sequential programs to produce efficient and reliable distributed implementations.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"127 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"124215117","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}
引用次数: 1
Intermittent Computing: Challenges and Opportunities 间歇性计算:挑战与机遇
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2017.8
Brandon Lucia, Vignesh Balaji, A. Colin, Kiwan Maeng, E. Ruppel
The maturation of energy-harvesting technology and ultra-low-power computer systems has led to the advent of intermittently-powered, batteryless devices that operate entirely using energy extracted from their environment. Intermittently operating devices present a rich vein of programming languages research challenges and the purpose of this paper is to illustrate these challenges to the PL research community. To provide depth, this paper includes a survey of the hardware and software design space of intermittent computing platforms. On the foundation of these research challenges and the state of the art in intermittent hardware and software, this paper describes several future PL research directions, emphasizing a connection between intermittence, distributed computing, energy-aware programming and compilation, and approximate computing. We illustrate these connections with a discussion of our ongoing work on programming for intermittence, and on building and simulating intermittent distributed systems.
能量收集技术和超低功耗计算机系统的成熟导致了间歇性供电、无电池设备的出现,这些设备完全利用从环境中提取的能量来运行。间歇操作设备呈现出丰富的编程语言研究挑战,本文的目的是向PL研究社区说明这些挑战。为了提供深度,本文包括对间歇性计算平台的硬件和软件设计空间的调查。在这些研究挑战和间歇性硬件和软件的最新技术的基础上,本文描述了几个未来的PL研究方向,强调间歇性,分布式计算,能量感知编程和编译以及近似计算之间的联系。我们通过讨论我们正在进行的关于间歇性编程以及构建和模拟间歇性分布式系统的工作来说明这些联系。
{"title":"Intermittent Computing: Challenges and Opportunities","authors":"Brandon Lucia, Vignesh Balaji, A. Colin, Kiwan Maeng, E. Ruppel","doi":"10.4230/LIPIcs.SNAPL.2017.8","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2017.8","url":null,"abstract":"The maturation of energy-harvesting technology and ultra-low-power computer systems has led to the advent of intermittently-powered, batteryless devices that operate entirely using energy extracted from their environment. Intermittently operating devices present a rich vein of programming languages research challenges and the purpose of this paper is to illustrate these challenges to the PL research community. To provide depth, this paper includes a survey of the hardware and software design space of intermittent computing platforms. On the foundation of these research challenges and the state of the art in intermittent hardware and software, this paper describes several future PL research directions, emphasizing a connection between intermittence, distributed computing, energy-aware programming and compilation, and approximate computing. We illustrate these connections with a discussion of our ongoing work on programming for intermittence, and on building and simulating intermittent distributed systems.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"6 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131948601","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}
引用次数: 151
InterPoll: Crowd-Sourced Internet Polls InterPoll:众包网络民意调查
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.156
B. Livshits, Todd Mytkowicz
Crowd-sourcing is increasingly being used to provide answers to online polls and surveys. However, existing systems, while taking care of the mechanics of attracting crowd workers, poll building, and payment, provide little to help the survey-maker or pollster in obtaining statistically significant results devoid of even the obvious selection biases. This paper proposes InterPoll, a platform for programming of crowd-sourced polls. Pollsters express polls as embedded LINQ queries and the runtime correctly reasons about uncertainty in those polls, only polling as many people as required to meet statistical guarantees. To optimize the cost of polls, InterPoll performs query optimization, as well as bias correction and power analysis. The goal of InterPoll is to provide a system that can be reliably used for research into marketing, social and political science questions. This paper highlights some of the existing challenges and how InterPoll is designed to address most of them. In this paper we summarize some of the work we have already done and give an outline for future work.
众包越来越多地被用于提供在线投票和调查的答案。然而,现有的系统虽然照顾到吸引群众工作人员、建立民意调查和支付的机制,但在帮助调查者或民意调查者获得没有明显选择偏见的统计上有意义的结果方面提供的帮助很少。本文提出了一个众包民意调查的编程平台InterPoll。民意测验者将民意测验表达为嵌入式LINQ查询,运行时正确地推断这些民意测验中的不确定性,只对满足统计保证所需的人数进行民意测验。为了优化民意调查的成本,InterPoll执行查询优化,以及偏差校正和功率分析。InterPoll的目标是提供一个可以可靠地用于研究市场营销、社会和政治科学问题的系统。本文重点介绍了目前存在的一些挑战,以及InterPoll是如何设计来解决这些挑战的。本文总结了我们已经做的一些工作,并对今后的工作进行了展望。
{"title":"InterPoll: Crowd-Sourced Internet Polls","authors":"B. Livshits, Todd Mytkowicz","doi":"10.4230/LIPIcs.SNAPL.2015.156","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.156","url":null,"abstract":"Crowd-sourcing is increasingly being used to provide answers to online polls and surveys. However, existing systems, while taking care of the mechanics of attracting crowd workers, poll building, and payment, provide little to help the survey-maker or pollster in obtaining statistically significant results devoid of even the obvious selection biases. \u0000 \u0000This paper proposes InterPoll, a platform for programming of crowd-sourced polls. Pollsters express polls as embedded LINQ queries and the runtime correctly reasons about uncertainty in those polls, only polling as many people as required to meet statistical guarantees. To optimize the cost of polls, InterPoll performs query optimization, as well as bias correction and power analysis. The goal of InterPoll is to provide a system that can be reliably used for research into marketing, social and political science questions. \u0000 \u0000This paper highlights some of the existing challenges and how InterPoll is designed to address most of them. \u0000 \u0000In this paper we summarize some of the work we have already done and give an outline for future work.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"129645427","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
None, One, Many - What's the Difference, Anyhow? 一个,一个,许多——到底有什么区别?
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.294
F. Steimann
We observe that compared to natural and modelling languages, the differences in expression required to deal with no, one, or many objects in programming languages are particularly pronounced. We identify some problems inherent in type-based unifications of different numbers, and advocate a solution that builds on the introduction of multiplicity as a new grammatical category of programming languages.
我们观察到,与自然语言和建模语言相比,编程语言中处理无、一个或多个对象所需的表达差异特别明显。我们确定了不同数字的基于类型的统一中固有的一些问题,并提倡一种基于引入多样性作为编程语言的新语法类别的解决方案。
{"title":"None, One, Many - What's the Difference, Anyhow?","authors":"F. Steimann","doi":"10.4230/LIPIcs.SNAPL.2015.294","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.294","url":null,"abstract":"We observe that compared to natural and modelling languages, the differences in expression required to deal with no, one, or many objects in programming languages are particularly pronounced. We identify some problems inherent in type-based unifications of different numbers, and advocate a solution that builds on the introduction of multiplicity as a new grammatical category of programming languages.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"244 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"123176946","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}
引用次数: 8
The Dynamic Practice and Static Theory of Gradual Typing 渐进式打字的动态实践与静态理论
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.6
M. Greenberg
We can tease apart the research on gradual types into two `lineages': a pragmatic, implementation-oriented dynamic-first lineage and a formal, type-theoretic, static-first lineage. The dynamic-first lineage's focus is on taming particular idioms - `pre-existing conditions' in untyped programming languages. The static-first lineage's focus is on interoperation and individual type system features, rather than the collection of features found in any particular language. Both appear in programming languages research under the name "gradual typing", and they are in active conversation with each other. What are these two lineages? What challenges and opportunities await the static-first lineage? What progress has been made so far?
我们可以将渐进式类型的研究分为两个“谱系”:一个是实用的、面向实现的动态优先谱系,另一个是正式的、类型论的、静态优先谱系。动态优先谱系的重点是驯服特定的习惯用法——无类型编程语言中的“预先存在的条件”。静态优先继承的重点是互操作和单个类型系统特性,而不是在任何特定语言中发现的特性集合。两者都以“渐进式类型”的名义出现在编程语言的研究中,它们之间的对话也很活跃。这两种血统是什么?静态优先谱系面临着什么样的挑战和机遇?到目前为止取得了哪些进展?
{"title":"The Dynamic Practice and Static Theory of Gradual Typing","authors":"M. Greenberg","doi":"10.4230/LIPIcs.SNAPL.2019.6","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.6","url":null,"abstract":"We can tease apart the research on gradual types into two `lineages': a pragmatic, implementation-oriented dynamic-first lineage and a formal, type-theoretic, static-first lineage. The dynamic-first lineage's focus is on taming particular idioms - `pre-existing conditions' in untyped programming languages. The static-first lineage's focus is on interoperation and individual type system features, rather than the collection of features found in any particular language. Both appear in programming languages research under the name \"gradual typing\", and they are in active conversation with each other. \u0000What are these two lineages? What challenges and opportunities await the static-first lineage? What progress has been made so far?","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"36 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"121985367","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}
引用次数: 12
Programming with "Big Code": Lessons, Techniques and Applications 使用“大代码”编程:课程、技术和应用
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2015.41
Pavol Bielik, Veselin Raychev, Martin T. Vechev
Programming tools based on probabilistic models of massive codebases (aka "Big Code") promise to solve important programming tasks that were difficult or practically infeasible to address before. However, building such tools requires solving a number of hard problems at the intersection of programming languages, program analysis and machine learning. In this paper we summarize some of our experiences and insights obtained by developing several such probabilistic systems over the last few years (some of these systems are regularly used by thousands of developers worldwide). We hope these observations can provide a guideline for others attempting to create such systems. We also present a prediction approach we find suitable as a starting point for building probabilistic tools, and discuss a practical framework implementing this approach, called Nice2Predict. We release the Nice2Predict framework publicly - the framework can be immediately used as a basis for developing new probabilistic tools. Finally, we present programming applications that we believe will benefit from probabilistic models and should be investigated further.
基于大规模代码库(又名“大代码”)的概率模型的编程工具承诺解决以前难以解决或实际上不可行的重要编程任务。然而,构建这样的工具需要解决编程语言、程序分析和机器学习交叉的许多难题。在本文中,我们总结了我们在过去几年中通过开发几个这样的概率系统获得的一些经验和见解(其中一些系统经常被世界各地成千上万的开发人员使用)。我们希望这些观察结果可以为其他试图创建此类系统的人提供指导。我们还提出了一种我们认为适合作为构建概率工具起点的预测方法,并讨论了实现该方法的实用框架,称为Nice2Predict。我们公开发布了Nice2Predict框架——这个框架可以立即用作开发新的概率工具的基础。最后,我们提出了编程应用程序,我们认为这些应用程序将受益于概率模型,并且应该进一步研究。
{"title":"Programming with \"Big Code\": Lessons, Techniques and Applications","authors":"Pavol Bielik, Veselin Raychev, Martin T. Vechev","doi":"10.4230/LIPIcs.SNAPL.2015.41","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2015.41","url":null,"abstract":"Programming tools based on probabilistic models of massive codebases (aka \"Big Code\") promise to solve important programming tasks that were difficult or practically infeasible to address before. However, building such tools requires solving a number of hard problems at the intersection of programming languages, program analysis and machine learning. \u0000 \u0000In this paper we summarize some of our experiences and insights obtained by developing several such probabilistic systems over the last few years (some of these systems are regularly used by thousands of developers worldwide). We hope these observations can provide a guideline for others attempting to create such systems. \u0000 \u0000We also present a prediction approach we find suitable as a starting point for building probabilistic tools, and discuss a practical framework implementing this approach, called Nice2Predict. We release the Nice2Predict framework publicly - the framework can be immediately used as a basis for developing new probabilistic tools. Finally, we present programming applications that we believe will benefit from probabilistic models and should be investigated further.","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"58 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116648736","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}
引用次数: 22
Toward Domain-Specific Solvers for Distributed Consistency 面向分布式一致性的特定领域求解器
Pub Date : 1900-01-01 DOI: 10.4230/LIPIcs.SNAPL.2019.10
L. Kuper, P. Alvaro
To guard against machine failures, modern internet services store multiple replicas of the same application data within and across data centers, which introduces the problem of keeping geo-distributed replicas consistent with one another in the face of network partitions and unpredictable message latency. To avoid costly and conservative synchronization protocols, many real-world systems provide only weak consistency guarantees (e.g., eventual, causal, or PRAM consistency), which permit certain kinds of disagreement among replicas. There has been much recent interest in language support for specifying and verifying such consistency properties. Although these properties are usually beyond the scope of what traditional type checkers or compiler analyses can guarantee, solver-aided languages are up to the task. Inspired by systems like Liquid Haskell [43] and Rosette [42], we believe that close integration between a language and a solver is the right path to consistent-by-construction distributed applications. Unfortunately, verifying distributed consistency properties requires reasoning about transitive relations (e.g., causality or happens-before), partial orders (e.g., the lattice of replica states under a convergent merge operation), and properties relevant to message processing or API invocation (e.g., commutativity and idempotence) that cannot be easily or efficiently carried out by general-purpose SMT solvers that lack native support for this kind of reasoning. We argue that domain-specific SMT-based tools that exploit the mathematical foundations of distributed consistency would enable both more efficient verification and improved ease of use for domain experts. The principle of exploiting domain knowledge for efficiency and expressivity that has borne fruit elsewhere – such as in the development of high-performance domain-specific languages that trade off generality to gain both performance and productivity – also applies here. Languages augmented with domain-specific, consistency-aware solvers would support the rapid implementation of formally verified programming abstractions that guarantee distributed consistency. In the long run, we aim to democratize the development of such domain-specific solvers by creating a framework for domain-specific solver development that brings new theory solver implementation within the reach of programmers who are not necessarily SMT solver internals experts
为了防止机器故障,现代互联网服务在数据中心内部和跨数据中心存储相同应用程序数据的多个副本,这就引入了在面对网络分区和不可预测的消息延迟时保持地理分布副本彼此一致的问题。为了避免代价高昂且保守的同步协议,许多现实世界的系统只提供弱一致性保证(例如,最终一致性、因果一致性或PRAM一致性),这允许副本之间存在某些类型的不一致。最近,人们对指定和验证这种一致性属性的语言支持很感兴趣。尽管这些属性通常超出了传统类型检查器或编译器分析所能保证的范围,但求解器辅助语言可以胜任这项任务。受到Liquid Haskell[43]和Rosette[42]等系统的启发,我们相信语言和求解器之间的紧密集成是实现构建一致性的分布式应用程序的正确途径。不幸的是,验证分布式一致性属性需要对传递关系(例如,因果关系或之前发生的事情)、偏序(例如,收敛合并操作下的副本状态格)以及与消息处理或API调用相关的属性(例如,交换性和幂等性)进行推理,而这些属性无法通过缺乏对此类推理的本机支持的通用SMT求解器轻松或有效地执行。我们认为,利用分布式一致性的数学基础的特定领域的基于smt的工具将使更有效的验证和改进领域专家的易用性成为可能。利用领域知识来提高效率和表达能力的原则在其他地方已经取得了成果——比如在开发高性能领域特定语言时,通过牺牲通用性来获得性能和生产力——也适用于此。增强了特定于领域的、具有一致性感知的求解器的语言将支持经过正式验证的编程抽象的快速实现,从而保证分布式一致性。从长远来看,我们的目标是通过为特定于领域的求解器开发创建一个框架,使这种特定于领域的求解器的开发民主化,从而使不一定是SMT求解器内部专家的程序员能够实现新的理论求解器实现
{"title":"Toward Domain-Specific Solvers for Distributed Consistency","authors":"L. Kuper, P. Alvaro","doi":"10.4230/LIPIcs.SNAPL.2019.10","DOIUrl":"https://doi.org/10.4230/LIPIcs.SNAPL.2019.10","url":null,"abstract":"To guard against machine failures, modern internet services store multiple replicas of the same application data within and across data centers, which introduces the problem of keeping geo-distributed replicas consistent with one another in the face of network partitions and unpredictable message latency. To avoid costly and conservative synchronization protocols, many real-world systems provide only weak consistency guarantees (e.g., eventual, causal, or PRAM consistency), which permit certain kinds of disagreement among replicas. There has been much recent interest in language support for specifying and verifying such consistency properties. Although these properties are usually beyond the scope of what traditional type checkers or compiler analyses can guarantee, solver-aided languages are up to the task. Inspired by systems like Liquid Haskell [43] and Rosette [42], we believe that close integration between a language and a solver is the right path to consistent-by-construction distributed applications. Unfortunately, verifying distributed consistency properties requires reasoning about transitive relations (e.g., causality or happens-before), partial orders (e.g., the lattice of replica states under a convergent merge operation), and properties relevant to message processing or API invocation (e.g., commutativity and idempotence) that cannot be easily or efficiently carried out by general-purpose SMT solvers that lack native support for this kind of reasoning. We argue that domain-specific SMT-based tools that exploit the mathematical foundations of distributed consistency would enable both more efficient verification and improved ease of use for domain experts. The principle of exploiting domain knowledge for efficiency and expressivity that has borne fruit elsewhere – such as in the development of high-performance domain-specific languages that trade off generality to gain both performance and productivity – also applies here. Languages augmented with domain-specific, consistency-aware solvers would support the rapid implementation of formally verified programming abstractions that guarantee distributed consistency. In the long run, we aim to democratize the development of such domain-specific solvers by creating a framework for domain-specific solver development that brings new theory solver implementation within the reach of programmers who are not necessarily SMT solver internals experts","PeriodicalId":231548,"journal":{"name":"Summit on Advances in Programming Languages","volume":"10 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1900-01-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"128003007","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
期刊
Summit on Advances in Programming 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