There are creatures which have evolved to live in coral reefs and simply could not survive in the rough, tooth-filled wastes of the open sea. They continue to exist by lurking among the dangerous tentacles of the sea anemone or around the lips of the giant clam and other perilous crevices shunned by all sensible fish.
A university is very much like a coral reef. It provides calm waters and food particles for delicate yet marvellously constructed organisms that could not possibly survive in the pounding surf of reality, where people ask questions like ‘Is what you do of any use?’ and other nonsense.
My area of expertise is programming language theory, with a particular focus on concurrent, distributed and parallel programming languages. Some keywords to capture what I have been working on in the past:
It is widely known throughout the field of computer science that developing concurrent software is notoriously difficult. I am interested in concurrency models that can make this burdensome task easier to perform for the programmer. I am particularly interested in event-driven concurrency models. Event-driven models seem a more natural fit for most software, which must react to various stimuli from both software and hardware sources. Moreover, event-driven systems have properties that make them less error-prone than the omnipresent shared-state concurrency model (“threads”). The advent of multi-core processors in particular seems to herald a new age of concurrent computing, one in which it is uncertain whether the contemporary concurrency models will remain scalable.
I am also interested in how event-driven concurrency can be combined with other abstractions already present in our software-development model, such as objects. In this light, I have been researching adaptations on Agha and Hewitt’s well-known actor model. I am especially interested in how advanced concurrency control (transactions, high-level synchronization, …) can be expressed in languages with inherent support for event loop concurrency such as E and AmbientTalk.
At the Software Languages Lab I am researching distributed programming languages designed for pervasive computing and mobile networks. More specifically, my colleagues and I have defined the Ambient-oriented programming paradigm as a superset of the distributed OOP paradigm. We have developed a concrete ambient-oriented programming language named AmbientTalk. In AmbientTalk, network failures are considered the rule, rather than the exception, so programs developed in AmbientTalk are robust to failures by default. Of course, the programmer must still deal with these failures if they affect program behaviour. However, our premise is that, if the failure is only temporary (e.g. because of a network disconnection), then the program should not fail but rather continue to run without problems.
The AmbientTalk project targets so-called mobile ad hoc networks: computer networks comprised of mobile devices that communicate wirelessly, without any centralized servers (strictly peer-to-peer).
My PhD research was about ambient references.
As co-designer of the AmbientTalk programming language, I remain interested in (almost) all facets of programming language design. In particular, I am interested in: