Summer School on Language Frameworks
New programming languages are continuously proposed, and existing languages are continuously updated and extended to fit new requirements and paradigms. In such a dynamic field, tool supported frameworks to help the language designers develop their languages and experiment with them are crucial. The goal of this summer school is to present its participants six state-of-the art language frameworks at a relaxed rhythm, by means of tutorials, hands-on projects, and plenty of discussions, all in a picturesque place in the Carpathian Mountains.
The summer school will include detailed presentations/tutorials of the following language frameworks (listed alphabetically).
Presenter: Grigore Rosu
K is a rewrite-based executable semantic framework in which programming languages, type systems, and formal analysis tools can be defined using configurations, computations, and rules:
- Configurations organize the state into units called cells, which are labeled and can be nested.
- Computations carry computational meaning by extending the abstract syntax of the original language with list structures sequentializing computational tasks. Computations are like any other terms in a rewriting environment: they can be matched, moved from one place to another, modified, or deleted.
- K (rewrite) rules make explicit which parts of the term are read-only, write-only, read-write, or are not shared at all.
These features make K suitable for defining truly concurrent languages with control-intensive features such as abrupt termination, exceptions, or call/cc.
Presenter: Jose Meseguer
Maude is a high-performance reflective language and system supporting both equational and rewriting logic specification and programming for a wide range of applications. Rewriting logic is a logic of concurrent change that can naturally deal with state and with concurrent computations. It has good properties as a general semantic framework for giving executable semantics to a wide range of languages and models of concurrency. In particular, it supports concurrent object-oriented computation very well. The same reasons that make rewriting logic a good semantic framework make it also a good logical framework, that is, a metalogic in which many other logics can be naturally represented and executed. Maude supports in a systematic and efficient way logical reflection. This makes Maude remarkably extensible and powerful, supports an extensible algebra of module composition operations, and allows many advanced metaprogramming and metalanguage applications. Indeed, some of the most interesting applications of Maude are metalanguage applications, in which Maude is used to create executable environments for different logics, theorem provers, languages, and models of computation.
Presenter: Peter Mosses
PLanCompS (Programming Language Components and Specifications) aims to establish and test the practicality of a component-based framework for the design, specification and implementation of programming languages. The main novelty of the PLanCompS approach is the creation of a collection of highly reusable language components called fundamental constructs or funcons. Crucially, the semantic specification of each funcon is independent, not needing any reformulation when funcons are combined or new funcons are added to the collection; this is possible using MSOS (a modular variant of structural operational semantics). The semantics of a programming language is specified by inductively translating each program phrase to a combination of funcons. Tools have been developed to execute the MSOS of funcons, which allows empirical validation of the specified semantics of languages and funcons.
Presenter: Paul Klint
Rascal is a domain specific language for source code analysis and manipulation. The domain of Rascal is meta programming. Any program that takes another program --- as input, or produces it as output, or both --- is a meta program. If the output of a Rascal program is not a program, it could be anything else, such as a visualization or metrics. If the input of a Rascal program is not a program it could also be anything else, such as an XMI file or a domain model.
Presenter: Robby Findler
PLT Redex is a domain-specific language designed for specifying and debugging operational semantics. Write down a grammar and the reduction rules, and PLT Redex allows you to interactive explore terms and to use randomized test generation to attempt to falsify properties of your semantics. PLT Redex is embedded in Racket, meaning all of the convenience of a modern programming language is available, including standard libraries (and non-standard ones) and a program-development environment.
Presenter: Eelco Visser
Spoofax is a platform for developing textual domain-specific languages with full-featured Eclipse editor plugins. With the Spoofax/IMP language workbench, you can write the grammar of your language using the high-level SDF grammar formalism. Based on this grammar, basic editor services such as syntax highlighting and code folding are automatically provided. Using high-level descriptor languages, these services can be customized. More sophisticated services such as error marking and content completion can be specified using rewrite rules in the Stratego language.
Registration and Accommodation
The registration fee is 300 Euros. This includes lunch and coffee/tea for 9 days, and the banquet. The summer school will be held at the Rowa Dany Hotel. The rooms cost about 40 Euro/night for single and about 25 Euro/night for sharing a double room. Register by sending us a message (firstname.lastname@example.org, email@example.com), stating your intention to attend and telling us whether you want a single room or to share a double room. The registration fee will be paid on arrival.
This summer school has been made possible by a grant offered by UEFISCDI.