Programming Languages

Programming Languages: Reactive, Big Data Programming and Programmable Networks

Ongoing Research

SugarX
In essence, the goal of SugarJ is to enable expressing programs in the syntax most natural to the problem domain the program is supposed to address. For instance, when generating XML documents in Java, the programmer should be able to use standard XML syntax instead of Java syntax for calling JDOM, say.
[more…]
Pluto
We have developed a new build system called pluto that supports dynamic build dependencies. In pluto, each build step consists of a build function that can declare dependencies on files and other build steps during its execution through a simple API. When a build step finishes, pluto stores the dependency list of the build step to detect changes of required artifacts in subsequent runs. However, in contrast to other build systems, pluto combines change detection and the execution of build steps into a single traversal of the dependency graph. This traversal only initiates the reexecution of those build steps that (i) are still required and (ii) depend on a file that was changed since the previous build. We have formally verified the correctness and optimality of pluto’s incremental rebuilding algorithm.
[more…]
Monto is a service-oriented architecture and intermediate representation for IDEs and programming languages. Modern IDEs often support multiple languages via plug-ins, but developing a high-quality language plugin is a major development effort. Furthermore language plug-ins in different IDEs are separate projects and do not share code. The Monto project adresses this issue by replacing IDE specific language plug-ins with IDE independent language services and introducing an intermediate representation that is produced by services and interpreted by the IDE. This way all Monto language services are usable in all Monto supported IDEs.
[more…]
EScala is an extension of the Scala programming language integrating declarative events as part of objects. EScala provides a way to declare imperative events and to combine events together in order to create more complex events. It also provides the possibility to intercept some joinpoints which generate implicit events.
[more…]
REScala is a reactive language which integrates concepts from event-based and functional-reactive programming into the object-oriented world. REScala supports the development of reactive applications by fostering a functional and declarative style which complements the advantages of object-oriented design.
[more…]
SID-UP / Distributed REScala
Distributed REScala is the first language to bring Reactive Programming to the distributed setting. It is build around SID-UP (short for Source IDentifier Update Propagation), an update propagation algorithm that supports the full feature set of Reactive Programming extended to cover Remote Reactives – Reactives that can be shared with and used transparently on remote hosts. SID-UP was designed with distribution in mind, minimizing the amount of coordination and remote communication required to execute glitch-free update turns for distributed reactive applications.
[more…]
JEScala captures coordination schemas in a more expressive and modular way by leveraging a seamless integration of an advanced event system with join abstractions. JEScala is validated with case studies and provide a first performance assessment.
[more…]