Language Abstractions for Distributed Software Systems

Guido Salvaneschi

Date: Thu, June 06, 2019
Time: 11:00
Room: 0.E220 Social Data Lab

Developing distributed systems is a decades-old problem. Programming languages are a fundamental tool to face the complexity of such a scenario. Distributed applications are traditionally composed by separate modules, which are often written in different programming languages (e.g., JavaScript and Java). Such modules react to events, like user input or monitoring, and produce new events for the other modules. Separation into modules requires time-consuming cross-language integration and forces developers to manually implement low level communication details. Modularization across network boundaries may also result in obscure distributed data flows scattered among multiple modules, hindering reasoning about the system as a whole.

We first introduce our recent work on reactive programming for distributed event-based applications. Supporting change propagation in the language runtime, reactive programming improves software design and relieves the developer from managing updates explicitly. Next, we introduce ScalaLoci, a distributed programming language with a tierless programming model based on placement types that enables reasoning about placement of data and computation and about distributed data flows. ScalaLoci supports the specification of the software architecture in a way that is integrated with the type system, ensuring that programs do not violate the architectural specification. Finally, ScalaLoci enables developers to abstract over low-level communication details and data conversions which are automatically generated by the compiler.

Previous: Alex Summers |
Next: |