Потоко-орієнтоване програмування — це парадигма програмування, у якій додаток (програма) визначається, як ланцюг (мережа) процесів з інкапсульованою поведінкою (“чорних скриньок” - “black boxes”), які обмінюються даними по наперед заданими з'єднаннями за допомогою передачі повідомлень. Причому, з'єднання задані у деякій зовнішній структурі, що відділена від процесів обробки. Такі мережі, складені з “чорних скриньок” можуть бути безліч разів реконфігуровані відповідно до визначеної загальної задачі, при цьому самі “чорні скриньки” зсередини не повинні модифікуватися. За таким описом можна зробити висновок, що FBP це компонентно-орієнтована парадигма.
FBP це одна з форм dataflow програмування (виконання програми контролюється не потоком інструкцій, а потоком даних), що базується на використанні обмежених буферів, інформаційних пакетах з обмеженим життєвим циклом, іменованих портах і відділеному визначенні зв'язків.
Вступ
У Flow-Based програмуванні додаток (програма) розглядається не як єдиний, послідовний, процес, який починається в деякий момент часу і потім виконує тільки одну операцію у один момент часу, а як мережа асинхронних процесів, що спілкуються між собою за допомогою потоків структурованих блоків даних, що називаються "інформаційними пакетами" (“informational packages” - IP). У даному підході, акцент робиться на початкових даних і їх перетвореннях, в результаті проведення яких отримується бажаний результат. Ланцюг (мережа) перетворень задається, як множина зв'язків між процесами (перетвореннями) і обробляється деякою зовнішньою програмою, яку, зазвичай, називають “планувальник”.
Процеси спілкуються за допомогою з'єднань, що містять буфери фіксованого розміру. З'єднання прикріплене до процесу за допомогою іменованого порту. Ім'я порту узгоджується між кодом процесів та структурою, що описує мережу. Один і той же шматок коду може виконуватись більше ніж у одному процесі. У один момент часу, інформаційний пакет (IP) може або оброблятися одним єдиним процесом, або передаватись між процесами. Порти можуть працювати як з простими типами даних, так і з масивами. Заздалегідь визначені набори портів і процесів, що асинхронно виконують елементарні базові операції (такі як сортування, злиття масивів, сумування тощо) можуть бути надані у вигляді “чорних скриньок”.
Внаслідок того, що час роботи процесів у FBP регулюється залишком необроблених даних, програми побудовані на засадах даної парадигми, зазвичай, виграють у програм написаних у імперативному стилі. До того ж, FBP програми можуть легко забезпечити оптимальне використання усіх наявних процесорів, без будь-яких зусиль з боку програміста. Як правило, мережі визначаються у вигляді схеми, яка згодом перетворюється на мову або систему позначень більш низького рівня. Таким чином FBP це парадигма візуального програмування. Складні схеми можуть бути представлені ієрархічними схемами, тобто зі схем, що побудовані з більш маленьких схем з наперед заданою структурою. FBP за своєю природою не залежить від мови реалізації. Якщо планувальник буде реалізований за допомогою деякої розповсюдженої мови (варіантів багато), що має зв'язки (bindings) з іншими мовами, то компоненти можуть бути написані на різних мовах і вони зможуть працювати у одній мережі. Таким чином FBP можна віднести до проблемно-орієнтованих мов. У FBP використовується “зв'язування за даними”, що є одним із типів систем зі слабкою (louse coupling) зв'язністю. FBP підштовхує до використання сервіс-орієнтованих архітектур. FBP сприяє програмуванню на високому рівні, пропагує функціональний стиль, який спрощує загальний опис поведінки системи.
Основні поняття
На приведеній нижче діаграмі показані основні елементі FBP (окрім інформаційних пакетів (IP)). Така діаграма може буди безпосередньо перетворена на список з'єднань, які, у свою чергу, можуть бути виконані деяким програмним або апаратним комплексом.
A, B і C є процесами виконання коду компонентів. О1, О2 та два IN порти призначені для з'єднань M та N. Можлива ситуація коли процеси B і C будуть виконувати одну і ту саму ділянку коду, тому кожен з процесів повинен мати свою власну ділянку оперативної пам'яті, власні блоки управління тощо. Але у будь-якому з випадків (код B і C однаковий або ні) ці блоки можуть використовувати вхідні порти з однаковими іменами. M і N інколи називають "обмеженими буферами" оскільки у кожний момент часу вони можуть утримувати заздалегідь задану кількість інформаційних пакетів. Концепція портів дозволяє використовувати будь-який компонент у одній і тій самій мережі кілька разів. У поєднанні з можливістю параметризації за допомогою “ініціалізуючих інформаційних пакетів” (Initial Informational Packets — IIP) це робить FBP одним з різновидів компонентно-орієнтованої архітектури. Інформаційні пакети визначаються у деякому просторі, що називається “простором інформаційних пакетів” і мають чітко визначений час існування. Після використання інформаційні пакет повинен бути знищеним. Процедура знищення є явною і обов'язок її виконання покладається на процес, що прийняв пакет. Пакети переміщуються за різними зв'язками мережі (конкретніше, саме зв'язки займаються переміщенням пакетів) цілком асинхронно, починаючи свій шлях у момент генерації. Така поведінка реалізує концепцію “ледачих обчислень”. Тобто процес починає свою роботу, як тільки у нього з'являються усі необхідні для обчислень дані. Як правило, інформаційні пакети це структуровані блоки даних, але пакет може і не містити будь-якої інформації і використовуватись просто як сигнал до певної дії. Прикладом такого пакету може бути “дужковий” (“bracket IP”) пакет, тобто пакет, що вказує на початок деякої послідовності (підпослідовності). В такого пакету повинен бути відповідний пакет, що буде закривати послідовність. Можливі вкладені одна в одну послідовності. Такі послідовності можуть переміщуватись системою як один об'єкт. Система зв'язків і процесів, описаних вище, легко масштабується до будь-якого розміру. Під час розробки між реальними блоками можуть бути поміщені блоки моніторингу, для цілей моніторингу і відлагодження. Також можна використовувати блоки-заглушки, що згодом будуть змінені на реальні блоки. Всі ці можливості роблять FBP зручним інструментом для створення прототипів. Насправді FBP є метафорою промислової лінії збірки (конвеєра): інформаційні пакети переміщуються від процесу до процесу подібно до деталей, що подорожують від верстата до верстата. "Машини" (блоки) можуть бути легко підключені, зняті на ремонт, заміну тощо. Досить дивно, але це дуже схоже на обробку інформації до того, як з'явилися комп'ютери.
Реалізації
Перші реалізації було виконано на C++ за допомогою green threads (наразі ця реалізація переписується на потоки). Інша популярна реалізація здійснена на Java (основний розробник Джон Кован (John Cowan)). Ця реалізація має відкритий код і доступна у публічному репозиторії SourceForge. Також на цьому сайті доступна C# реалізація. Обидві ці реалізації використовують потоки (threads), що забезпечую оптимальне використання ресурсів системи, на якій виконується додаток.
Також створено графічний редактор схем обробки, що здатний генерувати код, який використовую можливості бібліотек реалізації.
Також створено реалізації на багатьох інших мовах, таких як PHP (PhpFlo), JavaScript (NoFlo), Python (Pypes).
Див. також
Ця стаття не містить . (січень 2016) |
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
Potoko oriyentovane programuvannya ce paradigma programuvannya u yakij dodatok programa viznachayetsya yak lancyug merezha procesiv z inkapsulovanoyu povedinkoyu chornih skrinok black boxes yaki obminyuyutsya danimi po napered zadanimi z yednannyami za dopomogoyu peredachi povidomlen Prichomu z yednannya zadani u deyakij zovnishnij strukturi sho viddilena vid procesiv obrobki Taki merezhi skladeni z chornih skrinok mozhut buti bezlich raziv rekonfigurovani vidpovidno do viznachenoyi zagalnoyi zadachi pri comu sami chorni skrinki zseredini ne povinni modifikuvatisya Za takim opisom mozhna zrobiti visnovok sho FBP ce komponentno oriyentovana paradigma FBP ce odna z form dataflow programuvannya vikonannya programi kontrolyuyetsya ne potokom instrukcij a potokom danih sho bazuyetsya na vikoristanni obmezhenih buferiv informacijnih paketah z obmezhenim zhittyevim ciklom imenovanih portah i viddilenomu viznachenni zv yazkiv VstupU Flow Based programuvanni dodatok programa rozglyadayetsya ne yak yedinij poslidovnij proces yakij pochinayetsya v deyakij moment chasu i potim vikonuye tilki odnu operaciyu u odin moment chasu a yak merezha asinhronnih procesiv sho spilkuyutsya mizh soboyu za dopomogoyu potokiv strukturovanih blokiv danih sho nazivayutsya informacijnimi paketami informational packages IP U danomu pidhodi akcent robitsya na pochatkovih danih i yih peretvorennyah v rezultati provedennya yakih otrimuyetsya bazhanij rezultat Lancyug merezha peretvoren zadayetsya yak mnozhina zv yazkiv mizh procesami peretvorennyami i obroblyayetsya deyakoyu zovnishnoyu programoyu yaku zazvichaj nazivayut planuvalnik Procesi spilkuyutsya za dopomogoyu z yednan sho mistyat buferi fiksovanogo rozmiru Z yednannya prikriplene do procesu za dopomogoyu imenovanogo portu Im ya portu uzgodzhuyetsya mizh kodom procesiv ta strukturoyu sho opisuye merezhu Odin i toj zhe shmatok kodu mozhe vikonuvatis bilshe nizh u odnomu procesi U odin moment chasu informacijnij paket IP mozhe abo obroblyatisya odnim yedinim procesom abo peredavatis mizh procesami Porti mozhut pracyuvati yak z prostimi tipami danih tak i z masivami Zazdalegid viznacheni nabori portiv i procesiv sho asinhronno vikonuyut elementarni bazovi operaciyi taki yak sortuvannya zlittya masiviv sumuvannya tosho mozhut buti nadani u viglyadi chornih skrinok Vnaslidok togo sho chas roboti procesiv u FBP regulyuyetsya zalishkom neobroblenih danih programi pobudovani na zasadah danoyi paradigmi zazvichaj vigrayut u program napisanih u imperativnomu stili Do togo zh FBP programi mozhut legko zabezpechiti optimalne vikoristannya usih nayavnih procesoriv bez bud yakih zusil z boku programista Yak pravilo merezhi viznachayutsya u viglyadi shemi yaka zgodom peretvoryuyetsya na movu abo sistemu poznachen bilsh nizkogo rivnya Takim chinom FBP ce paradigma vizualnogo programuvannya Skladni shemi mozhut buti predstavleni iyerarhichnimi shemami tobto zi shem sho pobudovani z bilsh malenkih shem z napered zadanoyu strukturoyu FBP za svoyeyu prirodoyu ne zalezhit vid movi realizaciyi Yaksho planuvalnik bude realizovanij za dopomogoyu deyakoyi rozpovsyudzhenoyi movi variantiv bagato sho maye zv yazki bindings z inshimi movami to komponenti mozhut buti napisani na riznih movah i voni zmozhut pracyuvati u odnij merezhi Takim chinom FBP mozhna vidnesti do problemno oriyentovanih mov U FBP vikoristovuyetsya zv yazuvannya za danimi sho ye odnim iz tipiv sistem zi slabkoyu louse coupling zv yaznistyu FBP pidshtovhuye do vikoristannya servis oriyentovanih arhitektur FBP spriyaye programuvannyu na visokomu rivni propaguye funkcionalnij stil yakij sproshuye zagalnij opis povedinki sistemi Osnovni ponyattyaNa privedenij nizhche diagrami pokazani osnovni elementi FBP okrim informacijnih paketiv IP Taka diagrama mozhe budi bezposeredno peretvorena na spisok z yednan yaki u svoyu chergu mozhut buti vikonani deyakim programnim abo aparatnim kompleksom Priklad FBP merezhi A B i C ye procesami vikonannya kodu komponentiv O1 O2 ta dva IN porti priznacheni dlya z yednan M ta N Mozhliva situaciya koli procesi B i C budut vikonuvati odnu i tu samu dilyanku kodu tomu kozhen z procesiv povinen mati svoyu vlasnu dilyanku operativnoyi pam yati vlasni bloki upravlinnya tosho Ale u bud yakomu z vipadkiv kod B i C odnakovij abo ni ci bloki mozhut vikoristovuvati vhidni porti z odnakovimi imenami M i N inkoli nazivayut obmezhenimi buferami oskilki u kozhnij moment chasu voni mozhut utrimuvati zazdalegid zadanu kilkist informacijnih paketiv Koncepciya portiv dozvolyaye vikoristovuvati bud yakij komponent u odnij i tij samij merezhi kilka raziv U poyednanni z mozhlivistyu parametrizaciyi za dopomogoyu inicializuyuchih informacijnih paketiv Initial Informational Packets IIP ce robit FBP odnim z riznovidiv komponentno oriyentovanoyi arhitekturi Informacijni paketi viznachayutsya u deyakomu prostori sho nazivayetsya prostorom informacijnih paketiv i mayut chitko viznachenij chas isnuvannya Pislya vikoristannya informacijni paket povinen buti znishenim Procedura znishennya ye yavnoyu i obov yazok yiyi vikonannya pokladayetsya na proces sho prijnyav paket Paketi peremishuyutsya za riznimi zv yazkami merezhi konkretnishe same zv yazki zajmayutsya peremishennyam paketiv cilkom asinhronno pochinayuchi svij shlyah u moment generaciyi Taka povedinka realizuye koncepciyu ledachih obchislen Tobto proces pochinaye svoyu robotu yak tilki u nogo z yavlyayutsya usi neobhidni dlya obchislen dani Yak pravilo informacijni paketi ce strukturovani bloki danih ale paket mozhe i ne mistiti bud yakoyi informaciyi i vikoristovuvatis prosto yak signal do pevnoyi diyi Prikladom takogo paketu mozhe buti duzhkovij bracket IP paket tobto paket sho vkazuye na pochatok deyakoyi poslidovnosti pidposlidovnosti V takogo paketu povinen buti vidpovidnij paket sho bude zakrivati poslidovnist Mozhlivi vkladeni odna v odnu poslidovnosti Taki poslidovnosti mozhut peremishuvatis sistemoyu yak odin ob yekt Sistema zv yazkiv i procesiv opisanih vishe legko masshtabuyetsya do bud yakogo rozmiru Pid chas rozrobki mizh realnimi blokami mozhut buti pomisheni bloki monitoringu dlya cilej monitoringu i vidlagodzhennya Takozh mozhna vikoristovuvati bloki zaglushki sho zgodom budut zmineni na realni bloki Vsi ci mozhlivosti roblyat FBP zruchnim instrumentom dlya stvorennya prototipiv Naspravdi FBP ye metaforoyu promislovoyi liniyi zbirki konveyera informacijni paketi peremishuyutsya vid procesu do procesu podibno do detalej sho podorozhuyut vid verstata do verstata Mashini bloki mozhut buti legko pidklyucheni znyati na remont zaminu tosho Dosit divno ale ce duzhe shozhe na obrobku informaciyi do togo yak z yavilisya komp yuteri RealizaciyiPershi realizaciyi bulo vikonano na C za dopomogoyu green threads narazi cya realizaciya perepisuyetsya na potoki Insha populyarna realizaciya zdijsnena na Java osnovnij rozrobnik Dzhon Kovan John Cowan Cya realizaciya maye vidkritij kod i dostupna u publichnomu repozitoriyi SourceForge Takozh na comu sajti dostupna C realizaciya Obidvi ci realizaciyi vikoristovuyut potoki threads sho zabezpechuyu optimalne vikoristannya resursiv sistemi na yakij vikonuyetsya dodatok Takozh stvoreno grafichnij redaktor shem obrobki sho zdatnij generuvati kod yakij vikoristovuyu mozhlivosti bibliotek realizaciyi Takozh stvoreno realizaciyi na bagatoh inshih movah takih yak PHP PhpFlo JavaScript NoFlo Python Pypes Div takozhProgramuvannya potokiv danih Cya stattya ne mistit posilan na dzherela Vi mozhete dopomogti polipshiti cyu stattyu dodavshi posilannya na nadijni avtoritetni dzherela Material bez dzherel mozhe buti piddano sumnivu ta vilucheno sichen 2016 Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi