Programarea fluxului de date este un model care este utilizat la conceptualizarea și implementarea software-ului. Accentul programării fluxului de date este de a centra proiectarea unui sistem pe datele care sunt procesate, spre deosebire de codul care este utilizat pentru a manipula informațiile. Rezultatul este un sistem în care funcțiile de calcul de bază sunt izolate în module mici cunoscute sub numele de noduri; acestea acceptă unele date atunci când se atinge o anumită stare, procesează datele și împing ieșirea înapoi în fluxul de control al programului, potențial trecând informațiile către alt nod. Acest lucru este în contrast cu paradigma normală a programării imperative, în care o listă imediată de comenzi definește fluxul de control al unui program, nu starea datelor. Există mai multe utilizări pentru programele care sunt construite în jurul unui flux de date, inclusiv procesare paralelă, sisteme în timp real și sisteme încorporate.
În programarea implicită, care este cel mai frecvent utilizat tip de limbaj de programare pentru computer, programele sunt adesea construite din diagrame de flux care conțin o secvență de apeluri de funcții sau metode, fiecare apel ramificându-se către alte funcții. Acest tip de programare se concentrează în mod inerent pe procedurile care sunt utilizate pentru a manipula datele programului. Când se utilizează programarea fluxului de date, accentul este îndepărtat de la apelurile explicite de funcții și se concentrează în schimb pe crearea de module abstracte care acceptă date atunci când datele sau programul a îndeplinit sau a atins anumite condiții. În acest moment, în loc să apeleze o funcție, proiectarea programului face ca datele să curgă către module sau noduri, unde pot intră într-un flux pentru procesare de către mai multe noduri.
Un exemplu abstract al modului în care funcționează programarea fluxului de date poate fi văzut atunci când se analizează cum să umpleți un pahar cu apă de la robinet. O abordare imperativă ar fi generarea de funcții pentru a porni apa, mutarea paharului în locul potrivit de sub robinet și apoi umplerea paharului cu apă. Printr-un exemplu de programare a fluxului de date, robinetul așteaptă în schimb până când cana a fost poziționată sub ea pentru a începe să o umple, iar orice se mișcă, ceașca așteaptă până când ceașca a atins o anumită stare, cum ar fi plină, pentru a o scoate de sub robinet. . Mecanismele reale de programare care schimbă starea datelor nu sunt preocuparea imediată a designului.
Avantajul programării fluxului de date este o aplicație sau un sistem în care diferitele noduri pot fi manevrate pentru a crea fluxuri de date complet unice, fără a necesita neapărat codificarea relației. În plus, un program care utilizează programarea fluxului de date este pregătit activ pentru a procesa datele în orice moment, în loc să intre în mod explicit într-o stare sau un model care blochează accesul sau execuția de către unul sau mai multe noduri. Designul și conceptul nodurilor înseamnă că aplicațiile de programare a fluxului de date pot fi proiectate cu ușurință pentru a fi utilizate pe sisteme distribuite și procesoare paralele.