Adatfolyam programozás
Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2019. augusztus 4-én felülvizsgált
verziótól ; az ellenőrzésekhez
10 szerkesztés szükséges .
Az adatfolyam- programozás egy olyan programozási megközelítés, amelyben a program egy adatfolyam- digráfként van modellezve a műveletek között, hasonlóan az adatfolyam- diagramhoz . Az 1970- es évektől kezdve a szoftverfejlesztésben fejlesztették [ 1] .
A természetes vizuális megjelenítés és a párhuzamosság támogatása ennek a paradigmának két olyan jellemzője, amelyek vonzóak a fejlesztők számára [1] . Természetesen az adatfolyam-programozás nem feltétlenül tartalmaz vizuális programozási eszközöket .
A Unix programozók ismerik az adatfolyam-programozást, mert a Unix shell nevű csöveket és más hasonló folyamatok közötti kommunikációs lehetőségeket használ [2] .
Leírás
Az adatfolyam-programok (dataflow) munkájának alapja a számítások aktiválása a fekete dobozoknak tekinthető csomópontokon (node), amelyeket a bemeneti adatok változásai, frissítései okoznak. A csomópont (a modellben a gráf csúcsa) egy olyan elem, amely a bemeneti adatokat feldolgozza, és azokat kimeneti adatokká alakítja. Egy csomópont működése az aktiválási periódus alatt egyetlen számításnak minősül. A csomópontok portokon (porton) keresztül küldenek és fogadnak adatokat - ívek (grafikon élek) és csomópontok kapcsolódási pontjai . A portok minden, ami összeköti a gazdagépet a környezetével. A csomópontoknak lehetnek neveik, amelyek megkülönböztetik őket. A csomópont kiszámításának eredménye gyakran, de nem feltétlenül, a bemenet függvénye , vagyis az eredmény idővel változhat. A csomópont számítási munkáját aktiválásnak (aktiválásnak, tüzelésnek) nevezzük. Aktivált állapotban a csomópont bemeneti adatokat vesz, számításokat végez, kimeneti adatokat küld a megfelelő portokra. A továbbított adatokat, típusuktól függetlenül, tokennek nevezzük . A tokenek ívek mentén jönnek (nevezhetjük éleknek, linkeknek, kapcsolatoknak). Az adatok megjelenése a bejövő íven a csomópont aktiválását okozhatja. Általában azt feltételezik, hogy az ívben legfeljebb egy token található, de elméletileg lehetséges korlátlan kapacitású modellek létrehozása. A fejlettebb modellekben az ívek egybeolvadhatnak vagy elágazhatnak [3] [4] .
A programozás eredményeként adatfolyam-programot kapunk - irányított gráfot. Az elemek interakciójának minden módját a programozó kifejezetten beállítja. A pipeline feldolgozás legegyszerűbb esetében (pipeline dataflow) az elemek egyetlen számítási sorozattal adhatók meg. A számítások felváltva történnek, amikor a tokenek a bemeneten érkeznek. Az ilyen sémát adatvezérelt végrehajtásnak nevezik [3] .
Jellemzők
Az adatfolyam-programozásban bonyolultabb konfigurációk is használhatók, mint egy folyamat. A legegyszerűbb modellhez különösen a következő jellemzők adhatók (egyik vagy másik kombinációban) [3] :
- Push vagy pull diszciplínák ívekhez. Az első esetben a tokeneket az adatelőállító kezdeményezésére „tolják ki”, a másodikban pedig a fogyasztó a token kérés kezdeményezője. A két megközelítést adatvezérelt számításnak és keresletvezérelt számításnak is nevezik [4]
- Változtatható vagy megváltoztathatatlan adatok. Míg a változtathatatlan adatok a legjobb megközelítés a párhuzamos feldolgozáshoz, bizonyos, kötelező programozási nyelveken alapuló megvalósítások változtatható adatokat igényelhetnek az összes szükséges szinkronizálási mechanizmussal .
- Az ívek összevonásának (összekapcsolásának) és elágazásának (felosztásának) lehetőségei. Egyesítés esetén az ív célportja az ív elején lévő két port bármelyikétől kap tokeneket. Elágazáskor a tokent általában két címzetthez másolják. Az összeolvadás és az elágazás többféle lehet.
- Statikus vagy dinamikus adatfolyam-program. Ez a jellemző az adatfolyam-grafikon változásának lehetőségére vonatkozik. A hardveres megvalósítások általában statikus programokat használnak, de általában a gráf szerkezete dinamikusan változhat. Egy dinamikus programban néhány ív megváltoztathatja a célportját vagy a feldolgozó csomópontját - a jellemzőit.
- Egy csomópont lehet működőképes, vagy belsőleg tárolhatja állapotát (állapottartó).
- Szinkron vagy aszinkron aktiválás. Az adatfolyam-rendszerek osztályozásának egyik legfontosabb paramétere. A szinkron aktiválás bizonyos előre rögzített és tervezett aktiválási sorrendet foglal magában, amely a teljes program egészét figyelembe veszi. Az aszinkron aktiválással rendelkező rendszerben minden blokk gondoskodik a saját jelenlétéről, és az aktiválás akkor történik meg, ha a feltételek teljesülnek, például az adatok megjelenése a bemeneten. Az aszinkron aktiválással rendelkező rendszerekben egynél több token kapacitású ívekre lehet szükség. Az aktiválási séma lehet vegyes (hibrid).
- Több bemeneti és kimeneti port. Több port jelenléte az aktiválási feltételek módosítását teheti szükségessé. Például aktiválás történhet, ha legalább az egyik bemenet kapott adatokat. Bonyolultabb esetekben aktiválási sémák (tűzminta) használhatók, amelyekben minden porthoz a négy kapcsolat valamelyike kapcsolódik az aktiváláshoz: 1 - van adat a bemeneten, 0 - nincs adat a bemeneten, X - jelenlét az adatok közömbös, * - feltétel nélküli aktiválás (a többi portra vonatkozó feltételektől függetlenül). Egy csomópontnak több sémája is lehet, amelyek egymás után kerülnek ellenőrzésre, amíg a séma meg nem felel az aktuális állapotnak. Például egy háromportos csomópont az "[1, 1, X], [0, X, 0]" sémával aktiválódik, ha az első két port kapott adatokat, vagy nincs adat az első és a harmadik porton. .
- A visszacsatolások vagy hurkok lehetővé teszik a kimeneti adatfolyam ismételt felhasználását a számítási egység bemenetén. A hurkokkal végzett munka során el kell kerülni a holtpontokat (lásd holtpont ), amelyben egy csomópont a saját kimenetétől függő bemeneti adatokra vár. A visszacsatolás használatához szükség lehet a kezdeti token beállítására (még a program indulása előtt) a visszacsatolási ívekhez, vagy egyszeri csomópontok (one-shot) használatára, amelyek pontosan egyszer, a program elején aktiválódnak.
- Az összetett csomópontok lehetővé teszik a primitív csomópontok nagyobb modulokba való csomagolását.
- rekurzív csomópontok. Egyfajta összetett csomópont, amely önmagának másolatát tartalmazza.
- A tokenek többsebességes előállítása és fogyasztása. A teljesítmény javítása érdekében az aktiválás lehetővé teheti egyszerre több token fogadását és küldését egy portról.
- A saját porttal rendelkező csomópontokat szereplőknek is nevezik [5] . A Carl Hewitt [6] által javasolt klasszikus szereplők az adatfolyam-szereplők speciális esetei, nevezetesen, hogy pontosan egy bemeneti porttal rendelkeznek, és nincs kimeneti portjuk.
Lásd még
Jegyzetek
- ↑ 1 2 Tiago Boldt Sousa Dataflow programozási koncepció, nyelvek és alkalmazások archiválva 2020. november 12-én a Wayback Machine -nél
- ↑ Jon Orwant. Számítástechnika és Perl-programozás: A Perl Journal legjobbjai. - O'Reilly Media, Incorporated, 2002. - P. 146. - 737 p. — ISBN 9780596003104 .
- ↑ 1 2 3 Carkci, 2014 , 2. Adatfolyam magyarázata.
- ↑ 12 Sharp , 1992 , p. 293.
- ↑ Az adatfolyam szereplőinek és alkalmazásának strukturált leírása [1] Archiválva : 2020. július 27. a Wayback Machine -nél
- ↑ Hewitt, Carl; püspök, Péter; Steiger, Richard. A Universal Modular Actor Formalism for Artificial Intelligence (angolul) : folyóirat. – IJCAI, 1973.
Irodalom
- Van-Roy, P. és Haridi, S. A számítógépes programozás fogalmai, technikái és modelljei. - Prentice-Hall, 2004. - 900 p. — ISBN 9780262220699 .
- Sharp, JA Data Flow Computing: elmélet és gyakorlat. - Intellect, Limited, 1992. - 566 p. — ISBN 9780893919214 .
- Carkci, M. Adatfolyam és reaktív programozási rendszerek: gyakorlati útmutató. - CreateSpace Independent Publishing Platform, 2014. - 570 p. — ISBN 9781497422445 .
- Gehani, N. Ada: Párhuzamos programozás. - Silicon Press, 1991. - P. xii. — 216p. — ISBN 9780929306087 . * Bebis, G. és Boyle, R. és Parvin, B. és Koracin, D. és Wang, S. és Kyungnam, K. és Benes, B. és Moreland, K. és Borst, C. és DiVerdi, S. és mások. Előrelépések a vizuális számítástechnikában: 7th International Symposium, ISVC 2011, Las Vegas, NV, USA, 2011. szeptember 26-28. Proceedings. - Springer Berlin Heidelberg, 2011. - P. 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. - P. 53-55. — 662 p. — ISBN 9783844268454 .
- Kent, A. Dataflow nyelvek // Könyvtár- és Információtudományi Enciklopédia: 66. kötet – 29. melléklet – Automatizált rendszer dokumentumindexek generálására kötetmegjelenítéshez. - Taylor & Francis, 2000. - P. 101-. - 500 p. — ISBN 9780824720667 .
- Wesley M. Johnston, JR Paul Hanna, Richard J. Millar. Az adatfolyam-programozási nyelvek fejlődése . ACM Computing Surveys, Vol. 36. sz. 2004. március 1., 1. o. 1–34.
Linkek