Back to proposals-2013
Title: C in the 21st century. Extensible languages with MPS
Proposer: bernhard_merkle
Type: Presentation
Duration: 90 minutes
Description:
Many new programming languages are emerging theses days (e.g. http://emerginglangs.com/),
however C is still the most used language and serves as the root for most of the “new” languages.
Especially when it comes to the bare metal and real embedded development, there is nothing like C.
Compared with C++, C is admittedly less powerful / extensible (think of Domain Specific Languages
DSL) but fiddling around with template meta programming (TMP) is really only for a small group of
geeks. C++ has become a complex language (C++11 still is complex) and has lots of exceptions and
side corners for originally useful language concepts (e.g. rvalue references and the issue with default
generated move constructors/assignment operators, etc)
In C however we are painfully missing language concepts especially for developers in the embedded
area. Because of its minimal language core there is no support for real encapsulation, safe types,
operations with pre/post conditions, physical units and quantities, or common concepts in the
embedded domain like tasks, messages or state-machines.
In this session I will show how we build modular languages which special emphasis for developing
software for embedded systems. (The principle however is domain independent).
We show how to extend the C Programming Language with the language concepts mentioned above.
Embedded systems often support state-machines so there will be direct support for programs with
states, triggers, events and actions as first level concepts. Also different flavours of syntax (e.g.
textual, graphical and tabular) can even be mixed here. Expect a real usable physical units and
quantities language with code completion and error messages in the IDE (not possible with TMP).
I will present the power of modular languages and show how to build languages extensions with the
MPS Language Workbench MPS from Jetbrains. The mbeddr.com project (http://mbeddr.com) offers a
set of C languages extensions for embedded software development. A case study with one of our real
world sensors will demonstrate advantages and pros of the mbeddr solution.
Ewan: Sounds interesting, and based on C which makes it a relatively rare submission.
Roger: Yes
Asti: Yes unless he's got a stronger submission elsewhere