Dataflyt

Innen databehandling er **dataflyt** er et bredt konsept med mange ulike betydninger avhengig av bruksområde og kontekst. I forbindelse med programvarearkitektur er dataflyt knyttet til datastrøm-prosessering eller reaktiv programmering.

## Programvarearkitektur
Dataflyt er et programvareparadigme basert på idéen om å løsrive beregningsoppgaver fra hverandre i etterfølgende steg eller kommandokøer (pipelines) som kan kjøres samtidig. Dataflyt kan også kalles strømprosessering (*stream processing*) eller reaktiv programmering.

Det har vært laget flere programmeringsspråk med fokus på prosessering av dataflyter og datastrømmer. Dataflyt-maskinvare er et alternativ til den klassiske von Neumann-arkitekturen. Det mest tydelige eksempelet på dataflytprogrammering er delmengden kjent som reaktiv programmering med regneark. Når en bruker skriver inn nye verdier blir de umiddelbart overført til de neste logiske "aktørene" eller formlene for beregning.

Distribuerte datastrømmer har også blitt foreslått som en programmeringsabstraksjon som fanger opp dynamikken i distribuerte multi-protokoller. Det datasentriske perspektiver som er karakteristisk for dataflytprogrammering fremmer funksjonelle spesifikasjoner på høynivå og forenkler formelle resonnement om systemkomponenter.

Innen datavarehus kan eksempler på dataflyter inkludere landinsgområde-dataflyter (*staging dataflows*) eller transformasjons-dataflyter (*transformation dataflows*). Eksempler på teknologier for dette er Microsoft Dataflows.

## Maskinvarearkitektur
Maskinvarearkitekturer for dataflyt var et stort tema innen forskning på datamaskinarkitektur i 1970-årene og tidlig i 1980-årene. Jack Dennis ved Massachusetts Institute of Technology (MIT) var en pionér innen statiske dataflytarkitekturer. Design som bruker konvensjonelle minneadresser som tagger for dataavhengighet kalles statiske dataflytmaskiner. Disse maskinene tillot ikke at flere forekomster av de samme rutinene ble utført samtidig fordi de enkle taggene ikke kunne brukes til å skille mellom dem. Design som bruker innholdsadresserbart minne kalles dynamiske dataflytmaskiner av professor Arvind Mithal ved MIT, og bruker tagger i minnet for å lette parallelliteten. Dataene flyter rundt i datamaskinen gjennom komponentene i datamaskinen. De kommer inn via inngangsenhetene og kan gå ut gjennom utdataenheter (skrivere, etc.).

## Samtidighet
Et dataflytnettverk er et nettverk av samtidige prosesser eller automata som kan kommunisere ved å sende data over *kanaler* (se meldingsoverføring).

I Kahn-prosessnettverk, oppkalt etter franskmannen Gilles Kahn, er prosessene bestemte. Dette innebærer at hver bestemte prosess beregner en kontinuerlig funksjon fra innputtstrømmene til utputtstrømmene, og at et nettverk av bestemte prosesser i seg selv er bestemte, og dermed beregner en kontinuerlig funksjon. Dette innebærer at oppførselen til slike nettverk kan beskrives med et sett rekursive ligninger, som kan løses ved hjelp av fikspunktteori. Bevegelsen og transformasjonen av dataene er representert av en serie med former og linjer.

## Se også
* Dataflytanalyse, en type programanalyse
* Erlang, programmeringsspråk med vekt på parallellprogrammering
* Pipeline
* Pure Data, et programmeringsspråk
* TensorFlow, et åpent programvarebibliotek

## Referanser