Programiranje toka podatkov je model, ki se uporablja pri konceptualizaciji in implementaciji programske opreme. Poudarek programiranja pretoka podatkov je osredotočiti zasnovo sistema na podatke, ki se obdelujejo, v nasprotju s kodo, ki se uporablja za manipulacijo informacij. Rezultat je sistem, v katerem so osnovne računske funkcije izolirane v majhne module, znane kot vozlišča; ti sprejmejo nekatere podatke, ko je doseženo določeno stanje, obdelajo podatke in potisnejo izhod nazaj v kontrolni tok programa, potencialno posredujejo informacije drugemu vozlišču. To je v nasprotju z običajno paradigmo imperativnega programiranja, pri kateri takojšen seznam ukazov definira kontrolni tok programa in ne stanja podatkov. Obstaja več uporab za programe, ki so zgrajeni okoli toka podatkov, vključno z vzporedno obdelavo, sistemi v realnem času in vgrajenimi sistemi.
Pri implicitnem programiranju, ki je najpogosteje uporabljen tip računalniškega programskega jezika, so programi pogosto sestavljeni iz diagramov poteka, ki vsebujejo zaporedje klicev funkcij ali metod, pri čemer se vsak klic razveja na druge funkcije. Ta vrsta programiranja se sama po sebi osredotoča na postopke, ki se uporabljajo za manipulacijo s programskimi podatki. Ko se uporablja programiranje pretoka podatkov, se fokus odstrani iz eksplicitnih klicev funkcij in se namesto tega osredotoči na ustvarjanje abstraktnih modulov, ki sprejemajo podatke, ko so podatki ali program izpolnili ali dosegli določene pogoje. Na tej točki namesto klica funkcije programska zasnova povzroči, da podatki tečejo proti modulom ali vozliščem, kjer potencialno vstopijo v tok za obdelavo več vozlišč.
En abstrakten primer delovanja programiranja pretoka podatkov je mogoče videti, ko razmišljate o tem, kako napolniti kozarec z vodo iz pipe. Nujni pristop bi bil ustvariti funkcije za vklop vode, premakniti kozarec na ustrezno mesto pod pipo in nato napolniti kozarec z vodo. S primerom programiranja pretoka podatkov pipa namesto tega počaka, da je skodelica nameščena pod njo, da jo začne polniti, in karkoli se premika, skodelica počaka, da skodelica doseže določeno stanje, na primer polna, da jo odstrani izpod pipe. . Dejanski programski mehanizmi, ki spreminjajo stanje podatkov, niso neposredna skrb zasnove.
Prednost programiranja pretoka podatkov je aplikacija ali sistem, v katerem je mogoče upravljati z različnimi vozlišči, da se ustvarijo popolnoma edinstveni tokovi podatkov, ne da bi bilo treba razmerje trdo kodirati. Poleg tega je program, ki uporablja programiranje pretoka podatkov, aktivno pripravljen za obdelavo podatkov v vsakem trenutku, namesto da bi izrecno vstopil v stanje ali vzorec, ki zaklene dostop ali izvajanje enega ali več vozlišč. Zasnova in koncept vozlišč pomenita, da je mogoče aplikacije za programiranje podatkovnega toka enostavno oblikovati za uporabo v porazdeljenih sistemih in vzporednih procesorjih.