Streams, Reactivity and FRP: where we are, where to go
In the last 30+ years we have witnessed the emergence of multiple languages for stream-based programming, reactive programming and temporal specifications.
From up close, every language provides a slightly different feature, including more or less compile-time guarantees about causality, support for uni-kinded or multi-kinded time-varying values, discrete-time or continuous-time signals, asynchronous or synchronous transformations, push- or pull-based evaluation, and support for different levels of concurrency, target architectures, application interfaces, and application domains.
In spite of all these differences, many of these languages are closely related, and their underlying abstraction is similar across the board.
In this talk, we will argue that the future direction in this domain will necessarily need to remove complexity, finding more general abstractions that capture, semantically or operationally, the intent of a multitude of implementations. We will discuss some existing abstractions, describe how they are being used, and pose the question of what languages they can support, which ones they don’t, and what the essence of temporal languages really is.
Researcher @ NIA / NASA Formal Methods