Everything about Dataflow programming
Computer programming paradigm
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. Wikipedia →
🧭 Start here: a 6-step reading path
- Read the overview: Dataflow programmingA 5-minute orientation
- Skim a recent paper: TAPA: A Scalable Task-parallel Dataflow Programming Framework for Modern FPGAs with Co-optimization of HLS and Physical DesignInfluential work since 2022
- Pick up a classic book: Computer ArchitectureThe most-reprinted book on the subject
- Read the landmark paper: Advances in dataflow programming languagesCited 375 times
- Go sideways: Stream processingA closely related topic
- Go sideways: DataflowA closely related topic
📖 Definitions
Noun programming paradigm that models a program as a directed graph of the data flowing between operations, implementing architecture and dataflow principles.
🗂️ The subject at a glance
🏆 Landmark papers (most cited)
Advances in dataflow programming languages
Memory management for dataflow programming of multirate signal processing algorithms
Functional programming on a dataflow architecture: Applications in real-time image processing
High-level dataflow programming for real-time image processing on smart cameras
Thread-based programming for the EM-4 hybrid dataflow machine
Parallelism Reduction Based on Pattern Substitution in Dataflow Oriented Programming Languages
APEIRON: A Framework for High Level Programming of Dataflow Applications on Multi-FPGA Systems
Ripple: Asynchronous Programming for Spatial Dataflow Architectures
🆕 Influential since 2022
TAPA: A Scalable Task-parallel Dataflow Programming Framework for Modern FPGAs with Co-optimization of HLS and Physical Design
Multi-GPU work sharing in a task-based dataflow programming model
Statically Analyzing the Dataflow of R Programs
Data pre-processing with high-level-synthesis and dataflow programming using HLS C++ dataflow template library
SynergyAI: A Human–AI Pair Programming Tool Based on Dataflow
📚 Books worth reading
Computer ArchitectureJoseph D. Dumas II · 2005
DataFlow Supercomputing EssentialsVeljko Milutinovic, Milos Kotlar · 2017
Principles of compiler designAlfred V. Aho, Jeffrey D. Ullman · 1977
Formal Aspects of Component SoftwareFarhad Arbab · 2012
Concepts, techniques, and models of computer programmingPeter Van Roy, Seif Haridi · 2004
Lucid, the dataflow programming languageWilliam W. Wadge · 1985- 📕Dataflow computationAnton Pedro Willem Böhm · 1983
- 📕Performance analysis of a large-grain dataflow scheduling paradigmSteven D. Young · 1993
Ranked by number of editions on Open Library, a rough measure of how lasting a book is.
🔗 Related topics
- Stream processing In computer science, stream processing (also known as event stream processing, data stream processing, or distributed stream processing) is a programming…
- Dataflow In computing, dataflow is a broad concept, which has various meanings depending on the application and context. In the context of software architecture…
- Concurrent computing Concurrent computing is a form of computing in which several computations are executed concurrently—during overlapping time periods, instead of sequentially—wit…
- List of concurrent and parallel programming languages This article lists concurrent and parallel programming languages, categorizing them by a defining paradigm. Concurrent and parallel programming languages…
- Hardware description language In computer engineering, a hardware description language (HDL) is a specialized computer language used to describe the structure and behavior of electronic…
- SIGNAL (programming language) SIGNAL is a programming language based on synchronized dataflow (flows + synchronization): a process is a set of equations on elementary flows describing…
- Data-intensive computing Data-intensive computing is a class of parallel computing applications which use a data parallel approach to process large volumes of data typically terabytes…
- Apache Flink Apache Flink is an open-source, unified stream-processing and batch-processing framework developed by the Apache Software Foundation. The core of Apache…