Datastrøm programmering
Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den
version , der blev gennemgået den 4. august 2019; checks kræver
10 redigeringer .
Dataflow-programmering er en programmeringstilgang , hvor et program er modelleret som en dataflowdigraf mellem operationer, svarende til et dataflowdiagram . Udviklet inden for software engineering siden 1970'erne [1] .
Naturlig visuel præsentation sammen med understøttelse af samtidighed er to træk ved dette paradigme, som er attraktive for udviklere [1] . Dataflow-programmering involverer naturligvis ikke nødvendigvis visuelle programmeringsværktøjer .
Unix- programmører er fortrolige med dataflow-programmering, fordi Unix- skallen bruger navngivne rør og andre sådanne interproceskommunikationsfaciliteter [2] .
Beskrivelse
Grundlaget for arbejdet med dataflowprogrammer (dataflow) er aktiveringen af beregninger på noder (node), som kan betragtes som sorte bokse , forårsaget af ændringer, opdateringer af inputdata. En knude (i modellen, toppen af en graf) er et element, der behandler inputdata og konverterer dem til outputdata. Driften af en knude i aktiveringsperioden betragtes som en enkelt beregning. Noder sender og modtager data gennem porte (port) - forbindelsespunkter for buer (grafkanter) og noder. Porte er alt, hvad der forbinder en vært med sit miljø. Noder kan have navne for at skelne dem. Resultatet af at beregne en node er ofte, men ikke nødvendigvis, en funktion af inputtet, det vil sige, at resultatet kan ændre sig over tid. Nodens beregningsarbejde kaldes aktivering (aktivering, affyring). I den aktiverede tilstand tager noden inputdata, udfører beregninger, sender outputdata til de relevante porte. De overførte data, uanset deres type, kaldes tokens . Tokens kommer langs buer (de kan kaldes kanter, links, forbindelser). Udseendet af data på den indkommende lysbue kan forårsage aktivering af noden. Det antages normalt, at der ikke er mere end én token i buen, men i teorien er det muligt at skabe modeller med ubegrænset kapacitet. I mere udviklede modeller kan buer smelte sammen til en eller forgrene sig [3] [4] .
Som et resultat af programmering opnås et dataflowprogram - en rettet graf. Alle måder til interaktion mellem elementer er eksplicit fastsat af programmøren. I det enkleste tilfælde af pipeline -behandling (pipeline-dataflow) kan elementer specificeres ved en sekvens af enkelte beregninger. Beregninger foretages på skift, når tokens modtages ved indgangen. Et sådant skema kaldes datadrevet eksekvering [3] .
Karakteristika
I dataflow-programmering kan mere komplekse konfigurationer bruges end en pipeline. Især kan følgende funktioner tilføjes til den enkleste model (i en eller anden kombination) [3] :
- Skub eller træk discipliner til buer. I det første tilfælde "skubbes tokens ud" på initiativ af dataproducenten, og i det andet er forbrugeren initiativtager til token-anmodningen. De to tilgange er også kendt som datadrevet beregning og efterspørgselsdrevet beregning [4]
- Foranderlige eller uforanderlige data. Mens uforanderlige data er den bedste tilgang til parallel behandling, kan nogle implementeringer baseret på imperative programmeringssprog kræve foranderlige data med alle nødvendige synkroniseringsmekanismer .
- Muligheder for at flette (sammenføje) og forgrene (split) buer. I tilfælde af en fletning modtager buens destinationsport tokens fra en af de to porte i begyndelsen af buen. Ved forking kopieres tokenet normalt til to modtagere. Fusioner og gafler kan være flere.
- Statisk eller dynamisk dataflow-program. Denne egenskab vedrører muligheden for ændringer i dataflowgrafen. Hardwareimplementeringer har en tendens til at bruge statiske programmer, men generelt kan grafstrukturen ændre sig dynamisk. I et dynamisk program kan en eller anden bue ændre sin destinationsport eller behandlingsknude - dens egenskaber.
- En node kan være funktionel eller gemme dens tilstand (stateful) internt.
- Synkron eller asynkron aktivering. En af de vigtigste parametre til klassificering af dataflowsystemer. Synkron aktivering indebærer en forudbestemt og planlagt aktiveringsrækkefølge, bygget under hensyntagen til hele programmet som helhed. I et system med asynkron aktivering tager hver blok sig af sin egen nutid og aktivering sker, når betingelser er opfyldt, for eksempel fremkomsten af data ved indgangen. Systemer med asynkron aktivering kan kræve buer med en kapacitet på mere end én token. Aktiveringsskemaet kan blandes (hybrid).
- Flere ind- og udgangsporte. Tilstedeværelsen af flere porte kan kræve ændringer af aktiveringsbetingelserne. Aktivering kan for eksempel ske, hvis mindst en af indgangene har modtaget data. I mere komplekse tilfælde kan der anvendes aktiveringsskemaer (brandmønster), hvor for hver port én af fire relationer til aktivering: 1 - der er data ved indgangen, 0 - der er ingen data ved indgangen, X - tilstedeværelsen af data er ligegyldig, * - ubetinget aktivering (uanset forhold for andre porte). En node kan have flere skemaer, der kontrolleres efter hinanden, indtil skemaet matcher den aktuelle tilstand. For eksempel vil en tre-ports node med skemaet "[1, 1, X], [0, X, 0]" blive aktiveret, hvis de første to porte har modtaget data, eller der ikke er data på den første og tredje port .
- Tilbagekoblinger eller sløjfer gør det muligt at bruge outputstrømmen igen ved indgangen til beregningsenheden. Når man arbejder med sløjfer, er det nødvendigt at undgå deadlocks (se deadlock ), hvor en node vil vente på inputdata, der afhænger af sit eget output. For at arbejde med feedback kan det kræve, at du indstiller indledende tokens (selv før programmet starter) for feedbackbuer eller brug af one-shot noder (one-shot), som aktiveres præcis én gang, i starten af programmet.
- Sammensatte noder tillader primitive noder at blive pakket ind i større moduler.
- rekursive noder. En slags sammensat node, der indeholder en kopi af sig selv.
- Multi-speed produktion og forbrug af tokens. For at forbedre ydeevnen kan aktivering tillade, at flere tokens modtages og sendes fra en port på én gang.
- Noder med deres egne porte kaldes også aktører [5] . Klassiske aktører foreslået af Carl Hewitt [6] er et særligt tilfælde af dataflow-aktører, nemlig at de har præcis én input-port og ingen output-port.
Se også
Noter
- ↑ 1 2 Tiago Boldt Sousa Dataflow-programmeringskoncept, sprog og applikationer Arkiveret 12. november 2020 på Wayback Machine
- ↑ Jon Orwant. Datalogi og Perl-programmering: Best of The Perl Journal. - O'Reilly Media, Incorporated, 2002. - S. 146. - 737 s. — ISBN 9780596003104 .
- ↑ 1 2 3 Carkci, 2014 , 2. Dataflow Explained.
- ↑ 12 Sharp , 1992 , s. 293.
- ↑ En struktureret beskrivelse af dataflowaktører og dens anvendelse [1] Arkiveret 27. juli 2020 på Wayback Machine
- ↑ Hewitt, Carl; Biskop, Peter; Steiger, Richard. A Universal Modular Actor Formalism for Artificial Intelligence (engelsk) : tidsskrift. — IJCAI, 1973.
Litteratur
- Van-Roy, P. og Haridi, S. Koncepter, teknikker og modeller for computerprogrammering. - Prentice-Hall, 2004. - 900 s. — ISBN 9780262220699 .
- Sharp, JA Data Flow Computing: Teori og praksis. - Intellect, Limited, 1992. - 566 s. — ISBN 9780893919214 .
- Carkci, M. Dataflow og reaktive programmeringssystemer: En praktisk vejledning. - CreateSpace Independent Publishing Platform, 2014. - 570 s. — ISBN 9781497422445 .
- Gehani, N. Ada: Samtidig programmering. - Silicon Press, 1991. - P. xii. — 216 sider. — ISBN 9780929306087 . * Bebis, G. og Boyle, R. og Parvin, B. og Koracin, D. og Wang, S. og Kyungnam, K. og Benes, B. og Moreland, K. og Borst, C. og DiVerdi, S. og andre. Fremskridt i Visual Computing: 7th International Symposium, ISVC 2011, Las Vegas, NV, USA, 26.-28. september 2011. Proceedings. - Springer Berlin Heidelberg, 2011. - S. 260. - ISBN 9783642240317 .
- Gengnagel, C. og Kilian, A. og Nembrini, J. og Scheurer, F. Rethinking Prototyping: Proceedings of the Design Modeling Symposium Berlin 2013. - epubli GmbH, 2013. - S. 53-55. — 662 s. — ISBN 9783844268454 .
- Kent, A. Dataflow-sprog // Encyclopedia of Library and Information Science: Volume 66 - Supplement 29 - Automated System for the Generation of Document Indexes to Volume Visualization. — Taylor & Francis, 2000. — S. 101-. - 500p. — ISBN 9780824720667 .
- Wesley M. Johnston, JR Paul Hanna, Richard J. Millar. Fremskridt inden for dataflow-programmeringssprog . ACM Computing Surveys, Vol. 36, nr. 1, marts 2004, s. 1-34.
Links