License: Creative Commons Attribution 3.0 Unported license (CC BY 3.0)
When quoting this document, please refer to the following
DOI: 10.4230/LIPIcs.SNAPL.2017.3
URN: urn:nbn:de:0030-drops-71233
URL: http://dagstuhl.sunsite.rwth-aachen.de/volltexte/2017/7123/
Chlipala, Adam ;
Delaware, Benjamin ;
Duchovni, Samuel ;
Gross, Jason ;
Pit-Claudel, Clément ;
Suriyakarn, Sorawit ;
Wang, Peng ;
Ye, Katherine
The End of History? Using a Proof Assistant to Replace Language Design with Library Design
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.
BibTeX - Entry
@InProceedings{chlipala_et_al:LIPIcs:2017:7123,
author = {Adam Chlipala and Benjamin Delaware and Samuel Duchovni and Jason Gross and Cl{\'e}ment Pit-Claudel and Sorawit Suriyakarn and Peng Wang and Katherine Ye},
title = {{The End of Historyl Using a Proof Assistant to Replace Language Design with Library Design}},
booktitle = {2nd Summit on Advances in Programming Languages (SNAPL 2017)},
pages = {3:1--3:15},
series = {Leibniz International Proceedings in Informatics (LIPIcs)},
ISBN = {978-3-95977-032-3},
ISSN = {1868-8969},
year = {2017},
volume = {71},
editor = {Benjamin S. Lerner and Rastislav Bod{\'i}k and Shriram Krishnamurthi},
publisher = {Schloss Dagstuhl--Leibniz-Zentrum fuer Informatik},
address = {Dagstuhl, Germany},
URL = {http://drops.dagstuhl.de/opus/volltexte/2017/7123},
URN = {urn:nbn:de:0030-drops-71233},
doi = {10.4230/LIPIcs.SNAPL.2017.3},
annote = {Keywords: Domain-specific languages, synthesis, verification, proof assistants, software development}
}
Keywords: |
|
Domain-specific languages, synthesis, verification, proof assistants, software development |
Collection: |
|
2nd Summit on Advances in Programming Languages (SNAPL 2017) |
Issue Date: |
|
2017 |
Date of publication: |
|
05.05.2017 |