Programování datového toku
Aktuální verze stránky ještě nebyla zkontrolována zkušenými přispěvateli a může se výrazně lišit od
verze recenzované 4. srpna 2019; kontroly vyžadují
10 úprav .
Programování toku dat je programovací přístup , ve kterém je program modelován jako digraf toku dat mezi operacemi, podobný diagramu toku dat . Vyvíjen v softwarovém inženýrství od 70. let [1] .
Přirozená vizuální prezentace spolu s podporou souběžnosti jsou dvě vlastnosti tohoto paradigmatu, které jsou atraktivní pro vývojáře [1] . Programování toku dat samozřejmě nemusí nutně zahrnovat vizuální programovací nástroje .
Unixoví programátoři jsou obeznámeni s programováním toku dat, protože unixový shell používá pojmenované roury a další taková meziprocesová komunikační zařízení [2] .
Popis
Základem práce programů pro tok dat (dataflow) je aktivace výpočtů na uzlech (node), které lze považovat za černé skříňky , způsobené změnami, aktualizacemi vstupních dat. Uzel (v modelu vrchol grafu) je prvek, který zpracovává vstupní data a převádí je na výstupní data. Provoz uzlu během aktivačního období je považován za jeden výpočet. Uzly odesílají a přijímají data přes porty (port) - spojovací body oblouků (hran grafu) a uzlů. Porty jsou vše, co spojuje hostitele s jeho prostředím. Uzly mohou mít názvy, které je odlišují. Výsledek výpočtu uzlu je často, ale ne nutně, funkcí vstupu, to znamená, že výsledek se může v průběhu času měnit. Výpočetní práce uzlu se nazývá aktivace (aktivace, odpal). V aktivovaném stavu uzel odebírá vstupní data, provádí výpočty, odesílá výstupní data na příslušné porty. Přenášená data, bez ohledu na jejich typ, se nazývají tokeny . Žetony přicházejí podél oblouků (mohou se nazývat hrany, spojnice, spoje). Vzhled dat na příchozím oblouku může způsobit aktivaci uzlu. Obvykle se předpokládá, že v oblouku není více než jeden token, ale teoreticky je možné vytvářet modely s neomezenou kapacitou. V rozvinutějších modelech se mohou oblouky slévat do jednoho nebo se rozvětvovat [3] [4] .
V důsledku naprogramování se získá program toku dat - orientovaný graf. Všechny způsoby interakce prvků jsou explicitně nastaveny programátorem. V nejjednodušším případě zpracování potrubí (tok dat potrubí) lze prvky specifikovat posloupností jednotlivých výpočtů. Výpočty se provádějí postupně, když jsou na vstupu přijaty tokeny. Takové schéma se nazývá datově řízené provádění [3] .
Charakteristika
Při programování toku dat lze použít složitější konfigurace než potrubí. K nejjednoduššímu modelu lze (v jedné nebo jiné kombinaci) přidat zejména následující vlastnosti [3] :
- Push nebo pull disciplíny pro oblouky. V prvním případě jsou tokeny „vytlačeny“ z iniciativy výrobce dat a ve druhém je iniciátorem žádosti o token spotřebitel. Tyto dva přístupy jsou také známé jako výpočty řízené daty a výpočty řízené poptávkou [4]
- Proměnná nebo neměnná data. Zatímco neměnná data jsou nejlepším přístupem pro paralelní zpracování, některé implementace založené na imperativních programovacích jazycích mohou vyžadovat měnitelná data se všemi nezbytnými synchronizačními mechanismy .
- Možnosti slučování (join) a větvení (rozdělení) oblouků. V případě sloučení obdrží cílový port oblouku tokeny z jednoho ze dvou portů na začátku oblouku. Při forkingu se token obvykle zkopíruje dvěma příjemcům. Fúze a rozvětvení mohou být vícenásobné.
- Statický nebo dynamický program pro tok dat. Tato charakteristika se týká možnosti změn v grafu toku dat. Hardwarové implementace mají tendenci používat statické programy, ale obecně se struktura grafu může dynamicky měnit. V dynamickém programu může nějaký oblouk změnit svůj cílový port nebo uzel zpracování - jeho vlastnosti.
- Uzel může být funkční nebo interně uložit svůj stav (stavový).
- Synchronní nebo asynchronní aktivace. Jeden z nejdůležitějších parametrů pro klasifikaci systémů toku dat. Synchronní aktivace znamená předem stanovené a plánované pořadí aktivace, které je vytvořeno s ohledem na celý program jako celek. V systému s asynchronní aktivací se každý blok stará o svou vlastní přítomnost a k aktivaci dochází při splnění podmínek, například výskytu dat na vstupu. Systémy s asynchronní aktivací mohou vyžadovat oblouky s kapacitou více než jednoho tokenu. Aktivační schéma může být smíšené (hybridní).
- Více vstupních a výstupních portů. Přítomnost více portů může vyžadovat změny podmínek aktivace. Například k aktivaci může dojít, pokud alespoň jeden ze vstupů přijal data. Ve složitějších případech lze použít aktivační schémata (vznik požáru), ve kterých je pro každý port jeden ze čtyř vztahů k aktivaci: 1 - na vstupu jsou data, 0 - na vstupu nejsou žádná data, X - přítomnost dat je lhostejné, * - bezpodmínečná aktivace (bez ohledu na podmínky pro ostatní porty). Uzel může mít více schémat, která jsou kontrolována jedno po druhém, dokud schéma neodpovídá aktuálnímu stavu. Například uzel se třemi porty se schématem „[1, 1, X], [0, X, 0]“ bude aktivován, pokud první dva porty přijaly data nebo na prvním a třetím portu nejsou žádná data. .
- Zpětné vazby, neboli smyčky, umožňují opětovné použití výstupního proudu na vstupu výpočetní jednotky. Při práci se smyčkami je nutné se vyvarovat uváznutí (viz uváznutí ), ve kterém bude uzel čekat na vstupní data závislá na vlastním výstupu. Pro práci se zpětnou vazbou může vyžadovat nastavení počátečních tokenů (ještě před spuštěním programu) pro oblouky zpětné vazby nebo použití jednorázových uzlů (one-shot), které se aktivují právě jednou, na začátku programu.
- Složené uzly umožňují sbalit primitivní uzly do větších modulů.
- rekurzivní uzly. Druh složeného uzlu, který obsahuje kopii sebe sama.
- Vícerychlostní výroba a spotřeba tokenů. Pro zlepšení výkonu může aktivace umožnit příjem a odeslání více tokenů z portu najednou.
- Uzly s vlastními porty se také nazývají aktéři [5] . Klasické aktéry navržené Carlem Hewittem [6] jsou speciálním případem aktérů datového toku, konkrétně mají přesně jeden vstupní port a žádný výstupní port.
Viz také
Poznámky
- ↑ 1 2 Tiago Boldt Sousa Koncept programování datového toku, jazyky a aplikace Archivováno 12. listopadu 2020 na Wayback Machine
- ↑ Jon Orwant. Počítačová věda a programování v Perlu: To nejlepší z časopisu Perl Journal. - O'Reilly Media, Incorporated, 2002. - S. 146. - 737 s. — ISBN 9780596003104 .
- ↑ 1 2 3 Carkci, 2014 , 2. Vysvětlení toku dat.
- ↑ 12 Sharp , 1992 , str. 293.
- ↑ Strukturovaný popis aktérů toku dat a jejich aplikace [1] Archivováno 27. července 2020 na Wayback Machine
- ↑ Hewitt, Carl; biskup Petr; Steiger, Richard. A Universal Modular Actor Formalism for Artificial Intelligence (anglicky) : journal. — IJCAI, 1973.
Literatura
- Van-Roy, P. a Haridi, S. Koncepty, techniky a modely počítačového programování. - Prentice-Hall, 2004. - 900 s. — ISBN 9780262220699 .
- Sharp, JA Data Flow Computing: Teorie a praxe. - Intellect, Limited, 1992. - 566 s. — ISBN 9780893919214 .
- Carkci, M. Systémy toku dat a reaktivního programování: Praktický průvodce. - Nezávislá publikační platforma CreateSpace, 2014. - 570 s. — ISBN 9781497422445 .
- Gehani, N. Ada: Souběžné programování. - Silicon Press, 1991. - P. xii. — 216p. — ISBN 9780929306087 . * Bebis, G. a Boyle, R. a Parvin, B. a Koracin, D. a Wang, S. a Kyungnam, K. a Benes, B. a Moreland, K. a Borst, C. a DiVerdi, S. a další. Advances in Visual Computing: 7th International Symposium, ISVC 2011, Las Vegas, NV, USA, 26.-28. září 2011. Sborník příspěvků. - Springer Berlin Heidelberg, 2011. - S. 260. - ISBN 9783642240317 .
- Gengnagel, C. and Kilian, A. and Nembrini, J. and Scheurer, F. Rethinking Prototyping: Proceedings of the Design Modeling Symposium Berlin 2013. - epubli GmbH, 2013. - S. 53-55. — 662 s. — ISBN 9783844268454 .
- Kent, A. Jazyky toku dat // Encyklopedie knihovnictví a informační vědy: svazek 66 – příloha 29 – Automatizovaný systém pro generování indexů dokumentů k vizualizaci svazku. — Taylor & Francis, 2000. — S. 101-. — 500 p. — ISBN 9780824720667 .
- Wesley M. Johnston, JR Paul Hanna, Richard J. Millar. Pokroky v programovacích jazycích pro tok dat . ACM Computing Surveys, sv. 36, č. 1, březen 2004, str. 1–34.
Odkazy