A new system-level programming language for the IoT (sponsored by Bosch)

Session details
Status: 
Accepted
Session Type: 
Experience level: 
Intermediate
Track: 

Motivation

The Internet of Things (IoT) revolves around the development, mass-production and deployment of wireless embedded sensor devices. A plethora of prototyping platforms for exploring and developing those sensor nodes exists. However many of those toolkits do not scale beyond prototyping or offer an inferior development experience compared to other domains, e.g. mobile-apps or the web.

The Bosch Cross-Domain-Development Kit (XDK) offers a clear path from prototyping to mass-production. Because of this scalability goal developers need to write their software on a low abstraction level (in C, working on a bare resource-level) which eases product development later-on but impedes exploration and flexibility. Developers have to care about hardware-specific details instead of focusing on sensor data and connectivity to the Cloud or other systems. Novices face a high entry barrier and are offered a complex developer experience.

Approach

To overcome the rigidity of the conventional embedded IoT device development process, we propose a new systems programming language designed for the IoT. While the idea originally evolved from the need on the Bosch XDK, we designed the language to be hardware independent and easy to adapt to other IoT and sensor driven developments. It inherits the syntax of modern general-purpose system-level languages (e.g. Swift or Rust), but compiles to near-production ready C code. This transports the hardware scalability (from prototyping to mass-production) to the software world.

We introduce first-class primitives for sensor access and connectivity to other systems, which allows for quick exploration and integration into IoT ecologies. We support embedded algorithm through powerful primitives, e.g. lists, vectors and statistic functions. In order to prevent problems at compile-time we implemented a static strong type-system.

Methodology and Evaluation

We and develop the language in a user-centered design process, in addition to building on state-of-the-art language concepts. The former means that we evaluate our design decisions with experienced and novice user-groups in A/B tests and semi-structured interviews. The latter we have derived by studying modern system-level languages.

Conclusion and Future Work

In future work we plan to explore the language-level integration with Eclipse Vorto, a technology-agnostic device description language. Further, we intend to investigate a visual programming language built on top of this work.

In summary, we present a new system-level programming language for the IoT. We empower developers to directly develop, interact and ideate with an ecology of sensors and connectivity. Through its language features and integrated development environment we can offer a developer experience similar to the web. All the while we enable a smooth transition from prototyping to mass-production by generating near production-ready C code.

Schedule info
Session Time Slot(s): 
Wednesday, October 25, 2017 - 12:00 to 12:35

Our Sponsors

For information about becoming a sponsor, please visit the EclipseCon Europe 2017 sponsor prospectus page.

Elite Dual ECE/OSGi CE

Premium

Basic

Club ECE Sponsor

IoT Theme Day

Project Quality Day

Smart Home Day

Media

EclipseCon Support Other Events

Our Other Events

Eclipse events are hosted all over the world!

  • EclipseCon Europe 2018