课题基金 / 基金详情

PLanCompS: Programming Language Components and Specifications

PLanCompS: Programming Language Components and Specifications
PLAnCompS:编程语言组件和规范
批准号:
EP/I032495/1
负责人:
Peter Mosses
金额:
$88.66万
依托单位:
依托单位国家:
英国
项目类别:
Research Grant
财政年份:
2011
资助国家:
英国
项目状态:
已结题
起止时间:
2011 至 --

项目摘要

项目成果

相似基金

相关文献

中文摘要
翻译
软件有许多不同的形状和大小:从游戏和社交网络系统到数据库和办公软件,再到车辆和医疗仪器的控制系统。不管它的目的是什么,软件几乎总是用高级编程语言编写的,这些语言比低级机器语言更容易使用,低级机器语言可以直接由计算机执行。在用高级语言编写的程序可以在特定计算机上运行之前,该语言需要在该计算机上实现。实现可以是一个编译器,它将高级程序翻译成机器代码;或者,它可以直接解释它们,模拟它们的预期行为。自20世纪50年代以来,已经设计和实现了数百种编程语言,目前广泛使用的编程语言有几十种。自1995年以来推出的主要语言包括Java、c#、Python、Ruby、OCaml、Delphi和VBScript。较老的语言不断发展,加入了新的特性:Fortran、Cobol、Ada、c++、Scheme和Haskell的新版本每隔1到10年就会出现。新的编程语言不断被设计和实现,其目的是使程序员更容易(或至少更快、更便宜)编写有用的软件。所谓的领域特定语言(dsl)设计用于特定的部门,如银行或工程,或特定的应用领域,如交互式网页;它们通常是通过扩展通用语言来获得的,这些语言具有与目标领域中的标准概念或符号密切对应的特性。语言设计的文档称为语言规范。这通常包括一个简洁的形式语法,确定语言的语法(即,允许哪些字符序列作为程序,以及如何将它们分组成有意义的短语),以及一个冗长的语义非正式解释(即,程序运行时所需的行为),用自然语言(如英语)编写。不幸的是,这样的解释本质上是不精确的,容易被误解,而且无法得到验证。这个项目将采用创新的技术来完全正式地指定语言的语义。主要的新奇之处在于创建了大量可重用的语言规范组件。每个组件将对应于具有固定语义的基本编程结构或函数。将程序短语转换为函数的组合决定了程序的语义,与直接指定它们的形式语义相比,指定这种转换要简单得多,也要省力得多。该项目将通过涉及主要编程语言(包括c#和Java)和dsl规范的案例研究来测试和展示这种基于组件的语言规范方法的优势。该项目将设计和实现复杂的工具和集成开发环境,以支持基于组件的语言规范的创建和验证。这些工具将支持直接从规范中自动生成正确的原型实现,允许程序根据其形式语义运行。这将鼓励语言设计者在开始昂贵的手工实现特定设计之前尝试不同的设计,这可能会导致开发更好的语言。函数和语言规范将存储在一个开放访问的存储库中,数字图书馆接口将支持在存储库中浏览和搜索。该图书馆还将提供使用以前方法的现有编程语言正式规范的数字副本。
英文摘要
Software comes in many different shapes and sizes: ranging from games and social networking systems through databases and office software to control system for vehicles and medical instrumentation. Regardless of its purpose, software is almost always written in high-level programming languages, which are significantly easier to use than the low-level machine languages which can be executed directly by computers.Before a program written in a high-level language can be run on a particular computer, the language needs to have been implemented on that computer. The implementation could be a compiler, which translates high-level programs to machine code; alternatively, it might directly interpret them, simulating their intended behaviour.Many hundreds of programming languages have been designed and implemented since the 1950s, and dozens are currently in widespread use. Major ones introduced since 1995 include Java, C#, Python, Ruby, OCaml, Delphi, and VBScript. Older languages evolve to incorporate new features: new versions of Fortran, Cobol, Ada, C++, Scheme and Haskell appear at intervals ranging from one to 10 years. New programming languages are continually being designed and implemented, with the aim of making it easier (or at least quicker and cheaper) for programmers to write useful software. So-called domain-specific languages (DSLs) are designed for use in a particular sector, such as banking or engineering, or particular application areas, e.g., interactive web pages; they are often obtained by extending general-purpose languages with features that correspond closely to standard concepts or notation in the targeted sector.The documentation of a language design is called a language specification. This usually consists of a succinct formal grammar, determining the syntax of the language (i.e., which sequences of characters are allowed as programs, and how they are to be grouped into meaningful phrases), together with a lengthy informal explanation of their semantics (i.e., the required behaviour when programs are run), written in a natural language such as English. Unfortunately, such explanations are inherently imprecise, open to misinterpretation, and not amenable to validation.This project will employ innovative techniques for specifying the semantics of languages completely formally. The main novelty will be the creation of a large collection of reusable components of language specifications. Each component will correspond to a fundamental programming construct, or funcon, with fixed semantics. Translation of program phrases to combinations of funcons determines the semantics of the programs, and specifying this translation is much simpler - and much less effort - than specifying their formal semantics directly. The project will test and demonstrate the advantages of this component-based approach to language specification using case studies involving specification of major programming languages (including C# and Java) and DSLs.Sophisticated tools and an integrated development environment will be designed and implemented by the project to support creation and validation of component-based language specifications. The tools will support automatic generation of correct prototype implementations directly from specifications, allowing programs to be run according to their formal semantics. This will encourage language designers to experiment with different designs before initiating a costly manual implementation of a particular design, which may lead to development of better languages.Funcon and language specifications will be stored in an open-access repository, and a digital library interface will support browsing and searching in the repository. The library will also provide access to digital copies of existing formal specifications of programming languages using previous approaches.
期刊论文(10)
专著(0)
科研奖励(0)
会议论文
Tool support for component-based semantics
基于组件的语义的工具支持
DOI: 10.1145/2892664.2893464
发表时间: 2016
期刊:
影响因子: --
作者: [Binsbergen L]
通讯作者: Binsbergen L
Logic-Based Program Synthesis and Transformation - 23rd International Symposium, LOPSTR 2013, Madrid, Spain, September 18-19, 2013, Revised Selected Papers
基于逻辑的程序综合与转换 - 第 23 届国际研讨会,LOPSTR 2013,西班牙马德里,2013 年 9 月 18-19 日,修订后的精选论文
DOI: 10.1007/978-3-319-14125-1_13
发表时间: 2014
期刊:
影响因子: --
作者: [Bach Poulsen C]
通讯作者: Bach Poulsen C
Software meta-language engineering and CBS
软件元语言工程和CBS
DOI: 10.1016/j.jvlc.2018.11.003
发表时间: 2019
期刊: Journal of Computer Languages
影响因子: 2.2
作者: [Mosses P]
通讯作者: Mosses P
Reusable components of semantic specifications
语义规范的可重用组件
DOI: 10.1145/2577080.2577099
发表时间: 2014
期刊:
影响因子: --
作者: [Churchill M]
通讯作者: Churchill M
共 7 条
    海外基金