PLanCompS: Programming Language Components and Specifications
PLanCompS: Programming Language Components and Specifications
批准号:
EP/I032495/1
负责人:
Peter Mosses
金额:
$88.66万
依托单位:
依托单位国家:
英国
项目类别:
Research Grant
财政年份:
2011
资助国家:
英国
项目状态:
已结题
起止时间:
2011 至 --
中文摘要
点击翻译按钮获取中文摘要
英文摘要
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
DOI:
10.1145/2577080.2577099
发表时间:
2014
期刊:
影响因子:
--
作者:
[Churchill M]
通讯作者:
Churchill M
Imperative Polymorphism by Store-Based Types as Abstract Interpretations
基于存储的类型的命令式多态性作为抽象解释
DOI:
10.1145/2678015.2682545
发表时间:
2015
期刊:
影响因子:
--
作者:
[Bach Poulsen C]
通讯作者:
Bach Poulsen C
共 7 条
海外基金