In computer programming, dataflow programming is a programming paradigm that models a program as a directed graph of the data flowing between operations, thus implementing dataflow principles and architecture. Dataflow programming languages share some features of functional languages, and were generally developed in order to bring some functional concepts to a language more suitable for numeric processing. Some authors use the term datastream instead of dataflow to avoid confusion with dataflow computing or dataflow architecture, based on an indeterministic machine paradigm. Dataflow programming was pioneered by Jack Dennis and his graduate students at MIT in the 1960s.
.
Dataflow programming languages include:
- Apache Beam: Java/Scala SDK that unifies streaming (and batch) processing with several execution engines supported (Apache Spark, Apache Flink, Google Dataflow etc.)
- Apache Flink: Java/Scala library that allows streaming (and batch) computations to be run atop a distributed Hadoop (or other) cluster
- Apache Spark
- SystemC: Library for C++, mainly aimed at hardware design.
- TensorFlow: A machine-learning library based on dataflow programming.
Wadge, William W.; Edward A. Ashcroft (1985).
Lucid, the Dataflow Programming Language (illustrated
ed.). Academia Press.
ISBN 9780127296500. Retrieved 15 August 2013.
1 2 "Differential Dataflow". Timely Dataflow. 30 July 2022. Retrieved 31 July 2022.
↑ Gloria Lambert (1973). "Large scale file processing: POGOL". POPL '73: Proceedings of the 1st annual ACM SIGACT-SIGPLAN symposium on Principles of programming languages. ACM. pp. 226–234.
↑ Underwater Acoustic Data Processing, Y.T. Chan
| Imperative | |
|---|
| Declarative | |
|---|
Concurrent, parallel | |
|---|
| Metaprogramming | |
|---|
Separation of concerns | |
|---|
| Comparisons/Lists | |
|---|