{"title":"分阶段节目开发","authors":"K. Leino","doi":"10.1145/2384716.2384719","DOIUrl":null,"url":null,"abstract":"A major issue facing software development and maintenance is the sheer complexity of programs. Even software designs that start off simple often evolve into programs that are both brittle and hard to understand. In this talk, I advocate programming in stages, where the programming language allows the program design to be described at varying levels of abstraction. Higher levels of abstraction focus on the intent of the design, whereas lower levels of abstraction introduce optimizations and other details. Since the layering is expressed in the programming language, the stages are preserved as part of the program text. Therefore, the stages help break down the program's complexity not only during development but also during maintenance.\n I will describe some language features, both old and new, that encourage staged development. To help communicate the vision, I will demonstrate Dafny, a research programming system whose language blends specifications, imperative programming, and staged program refinements and whose development environment is powered by an automatic program verifier that constantly analyzes the program to help the programmer get details right.\n Joint work with Jason Koenig.","PeriodicalId":194590,"journal":{"name":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","volume":"13 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2012-10-19","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":"{\"title\":\"Staged program development\",\"authors\":\"K. Leino\",\"doi\":\"10.1145/2384716.2384719\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"A major issue facing software development and maintenance is the sheer complexity of programs. Even software designs that start off simple often evolve into programs that are both brittle and hard to understand. In this talk, I advocate programming in stages, where the programming language allows the program design to be described at varying levels of abstraction. Higher levels of abstraction focus on the intent of the design, whereas lower levels of abstraction introduce optimizations and other details. Since the layering is expressed in the programming language, the stages are preserved as part of the program text. Therefore, the stages help break down the program's complexity not only during development but also during maintenance.\\n I will describe some language features, both old and new, that encourage staged development. To help communicate the vision, I will demonstrate Dafny, a research programming system whose language blends specifications, imperative programming, and staged program refinements and whose development environment is powered by an automatic program verifier that constantly analyzes the program to help the programmer get details right.\\n Joint work with Jason Koenig.\",\"PeriodicalId\":194590,\"journal\":{\"name\":\"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity\",\"volume\":\"13 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2012-10-19\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"2\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/2384716.2384719\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"ACM SIGPLAN International Conference on Systems, Programming, Languages and Applications: Software for Humanity","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2384716.2384719","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 2

摘要

软件开发和维护面临的一个主要问题是程序的复杂性。即使是一开始很简单的软件设计也经常演变成既脆弱又难以理解的程序。在这次演讲中,我提倡分阶段编程,编程语言允许在不同的抽象层次上描述程序设计。较高级别的抽象关注于设计的意图,而较低级别的抽象则引入优化和其他细节。由于分层是用编程语言表示的,所以阶段被保留为程序文本的一部分。因此,这些阶段不仅在开发期间,而且在维护期间有助于分解程序的复杂性。我将描述一些鼓励分阶段开发的语言特性,包括新旧特性。为了帮助交流远景,我将演示Dafny,这是一个研究性编程系统,它的语言混合了规范、命令式编程和分阶段的程序改进,它的开发环境由一个自动程序验证器提供支持,该程序验证器不断分析程序以帮助程序员获得正确的细节。与Jason Koenig合作。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
Staged program development
A major issue facing software development and maintenance is the sheer complexity of programs. Even software designs that start off simple often evolve into programs that are both brittle and hard to understand. In this talk, I advocate programming in stages, where the programming language allows the program design to be described at varying levels of abstraction. Higher levels of abstraction focus on the intent of the design, whereas lower levels of abstraction introduce optimizations and other details. Since the layering is expressed in the programming language, the stages are preserved as part of the program text. Therefore, the stages help break down the program's complexity not only during development but also during maintenance. I will describe some language features, both old and new, that encourage staged development. To help communicate the vision, I will demonstrate Dafny, a research programming system whose language blends specifications, imperative programming, and staged program refinements and whose development environment is powered by an automatic program verifier that constantly analyzes the program to help the programmer get details right. Joint work with Jason Koenig.
求助全文
通过发布文献求助,成功后即可免费获取论文全文。 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
A programmatic introduction to Neo4j Advanced debugging techniques to identify concurrency bugs in actor-based programs When importless becomes meaningful DSLDI 2014: second workshop on domain specific languages design and implementation FPW'14: future programming workshop
×
引用
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