Lazy bookmark for practical details to processing and transforming possibly-infinite streams of data, from signals to parse trees. Disambiguating “transducers”.
Used in parallel/offline processing of large data sets that do not fit in core, or processing things that happen in realtime such as UI.
I am imagining more general objects than singly-indexed real-valued signals; Tokens, maybe. Classic DSP can be elsewhere. Infrastructure to do stream processing in a distributed fashion is filed under message queues.
In statistics and machine learning, stream processing connects with online learning; incorporating data as it comes in, as in distributed statistics.
Functional reactive programming
Closely related: Communicating Sequential Processes. I think the main difference is supposed to be perhaps that CSP is not necessarily in a function style? But in practice, FRP I have seen in the wild is not necessarily in a functional style?
Question: why are there not more visual pipeline programs for this programming domain? It looks like an obvious fit.
A parallelism/streaming thing. Communicating Sequential Processes. Functional Reactive Programming.
CSP and transducers — I don’t think these are transducers as I understand them, i.e. stack machines, but I could be wrong. See also the expositions from the clojure authors:
ReactiveX is a particular stream processing paradigm with implementations for many languages
We believe that a coherent approach to systems architecture is needed, and we believe that all necessary aspects are already recognized individually: we want systems that are Responsive, Resilient, Elastic and Message Driven. We call these Reactive Systems.
Systems built as Reactive Systems are more flexible, loosely-coupled and scalable. This makes them easier to develop and amenable to change. They are significantly more tolerant of failure and when failure does occur they meet it with elegance rather than disaster. Reactive Systems are highly responsive, giving users effective interactive feedback.
Streaming data analysis
Online, possibly realtime, certainly memory-constrained.