首页> 外文OA文献 >The End of History? Using a Proof Assistant to Replace Language Design with Library Design
【2h】

The End of History? Using a Proof Assistant to Replace Language Design with Library Design

机译:历史的终结?使用proof assistant将语言设计替换为库设计

摘要

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.
机译:软件系统的功能猛增了部分原因是因为将可重用功能打包为库的编程语言支持方面的进步。开发人员受益于以相同语言公开许多接口所带来的一致性,而不是将命令行工具的大杂烩串在一起。当特定领域的语言变得如此灵活以至于应被称为编程语言时,可以将它们视为可重用接口功能的发展。但是,针对特定领域语言的通用方法放弃了使用丰富的通用语言进行库构建的许多来之不易的优势,甚至传统方法也对学习新的API构成了重大挑战。我们建议我们的社区不要继续开发新的领域特定语言,而应该在包含编程和定理证明的表达力很强的语言中采用基于图书馆的生态系统。我们的原型框架Fiat是Coq证明助手的库,通过将功能和性能相互模块化的关键思想,将语言转变为易于理解的库,前者通过宏将数据分解为高阶逻辑,后者通过优化脚本从逻辑程序中获取有效的代码。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号