Aǵımǵa tiykarlanǵan programmalastırıw
Kompyuter programmalastırıwda, aǵımǵa tiykarlanǵan programmalastırıw (FBP) — bul qosımshalardı qara qutı processleriniń tarmaqları retinde anıqlaytuǵın programmalastırıw paradigması bolıp, olar aldınnan anıqlanǵan baylanıslar arqalı xabar almasıw arqalı maǵlıwmat almasadı, bul jerde baylanıslar processlerden tıs sırtqı túrde kórsetiledi. Bul qara qutı processleri ishki ózgerislersiz, hár túrli qosımshalardı dúziw ushın sheksiz qayta baylanıstırılıwı múmkin. Solay etip, FBP tábiyiy komponentke baǵdarlanǵan.
FBP — bul sheklengen buferlerge, anıqlanǵan ómir múddeti bar informaciya paketlerine, atalǵan portlarǵa hám baylanıslardıń bólek anıqlamasına tiykarlanǵan maǵlıwmatlar aǵımın programmalastırıwınıń arnawlı bir forması.
Kirisiw
Aǵımǵa tiykarlanǵan programmalastırıw qosımshalardı «maǵlıwmatlar fabrikası» metaforasın paydalanıp anıqlaydı. Ol qosımshanı waqıttıń belgili bir noqatında baslanıp, sońınan tamamlanǵanǵa shekem bir waqıtta bir zattı isleytuǵın bir, izbe-iz process retinde emes, al «informaciya paketleri» (IP) dep atalatuǵın strukturalanǵan maǵlıwmatlar bólimleriniń aǵımları arqalı baylanısatuǵın asinxron processler tarmaǵı retinde qarastıradı. Bul kózqarasta itibar qosımsha maǵlıwmatlarına hám qálegen shıǵarıwlardı payda etiw ushın olarǵa qollanılatuǵın transformaciyalarǵa qaratıladı. Tarmaq processlerden tıs, ádette «jobalastırıwshı» dep atalatuǵın programmalıq támiynat bólimi tárepinen interpretaciyalanatuǵın baylanıslar dizimi retinde anıqlanadı.
Processler turaqlı sıyımlılıqlı baylanıslar arqalı baylanısadı. Baylanıs process kodı hám tarmaq anıqlaması arasında kelisilgen atı bar port arqalı processke jalǵanadı. Birden artıq process birdey kod bólimin orınlawı múmkin. Hár qanday waqıtta, berilgen IP tek bir processke «tiyisli» bolıwı múmkin yamasa eki process arasında tranzitte bolıwı múmkin. Portlar ápiwayı yamasa massiv tipinde bolıwı múmkin, mısalı, tómende táriyiplengen Collate komponentiniń kirgiziw portı ushın paydalanıladı. Bul maǵlıwmatlardı qayta islewdiń Sort, Merge, Summarize hám t.b. sıyaqlı kóp uzaq dawam etetuǵın ápiwayı funkciyaların programmalıq támiynat qara qutıları formasında qollap-quwatlawǵa imkaniyat beretuǵın portlardıń asinxron processler menen birikpesi.
FBP processleri jumıs islew ushın maǵlıwmatları hám shıǵarıwın jaylastırıw ushın ornı bar bolǵansha orınlanıwdı dawam ete alatuǵınlıqtan, FBP qosımshaları ádette ádettegi programmalardan azıraq waqıt ishinde jumıs isleydi hám bunıń ushın arnawlı programmalastırıw talap etilmey, mashinadaǵı barlıq processorlardı optimal paydalanadı[1].
Tarmaq anıqlaması ádette diagrammalıq boladı hám qanday da bir tómen dárejeli tilge yamasa belgilewge baylanıslar dizimine aylandırıladı. FBP bul dárejede kóbinese vizual programmalastırıw tili bolıp tabıladı. Quramalıraq tarmaq anıqlamaları «jabısqaq» baylanısları bar kishi tarmaqlardan qurılǵan ierarxiyalıq strukturaǵa iye. Basqa da kóp aǵımǵa tiykarlanǵan tiller/orınlanıw waqıtları anaǵurlım dástúrli programmalastırıw tilleri dógereginde qurılǵan, eń belgili mısal — RaftLib, ol aǵım grafın kórsetiw ushın C++ iostream-ge uqsas operatorlardı paydalanadı.
FBP Linda tili[2] menen kóp uqsaslıqlarǵa iye, sebebi ol Gelernter hám Karrieronıń terminologiyasında, «koordinaciya tili» bolıp tabıladı:[3] ol negizinde tilden ǵárezsiz. Shınında da, jetkilikli dárejede tómen dárejeli tilde jazılǵan jobalastırıwshı berilgen bolsa, hár túrli tillerde jazılǵan komponentler bir tarmaqta biriktiriliwi múmkin. Solay etip, FBP arnawlı taraw tilleri yamasa «mini-tiller» koncepciyasına beyimlesedi.
FBP maqalada komponentler arasındaǵı eń hálsiz baylanıs túri retinde táriyiplengen «maǵlıwmatlar baylanısın» kórsetedi. Hálsiz baylanıs koncepciyası óz gezeginde xızmetke baǵdarlanǵan arxitekturalar menen baylanıslı hám FBP bul arxitekturanıń kópshilik mısallarına qaraǵanda anaǵurlım maydaraq dárejede bolsa da, bunday arxitektura ushın bir qatar kriteriyalarǵa sáykes keledi.
FBP sistema minez-qulqı haqqında oylawdı ańsatlastıratuǵın joqarı dárejeli, funkcional stilli specifikaciyalardı xoshametleydi. Bunıń bir mısalı — bólistirilgen kóp tárepli protokollardıń semantikasın konstruktiv túrde anıqlaw hám analizlew ushın bólistirilgen maǵlıwmatlar aǵımı modeli.
Tariyxı
Aǵımǵa tiykarlanǵan programmalastırıw 1970-jıllardıń basında J. Pol Morrison tárepinen oylap tabılǵan hám dáslep Kanada banki ushın programmalıq támiynatta ámelge asırılǵan[4]. FBP óziniń payda bolıwında sol dáwirdegi geypara IBM simulyaciya tillerinen, ásirese GPSS-ten qattı tásirlengen, biraq onıń tamırları Konveydiń korutinalar dep atalǵan nárseler haqqındaǵı tiykar salıwshı maqalasına barıp taqaladı[5].
FBP jıllar dawamında bir qatar at ózgerislerinen ótti: dáslepki implementaciya AMPS (Aldınǵı Qatar Modulli Qayta Islew Sisteması) dep ataldı. Kanadadaǵı bir úlken qosımsha 1975-jılı iske túsirildi hám, 2013-jılǵa kelip, derlik 40 jıl dawamında úziliksiz óndirislik qollanıwda, kúndelikli islep turadı. IBM FBP arqasındaǵı ideyalardı patentlew ushın «tábiyat nızamına júdá uqsas» dep esaplaǵanlıqtan, olar onıń ornına FBP-diń tiykarǵı koncepciyaların 1971-jılı Texnikalıq Ashıw Byulleteni arqalı jámiyetlik múlkine shıǵardı, «Maǵlıwmatlarǵa Juwap Beretuǵın Modulli, Aralasqan Wazıypalı Programmalastırıw Sisteması». Onıń koncepciyaların hám onı paydalanıw tájiriybesin táriyipleytuǵın maqalası 1978-jılı IBM Izertlewler IBM Systems Journal jurnalında DSLM atı menen járiyalandı[6]. Ekinshi implementaciya IBM Canada hám IBM Japan-nıń birlesken proekti retinde «Maǵlıwmatlar Aǵımın Rawajlandırıw Menedjeri» (DFDM) atı menen islendi hám 80-jıllardıń aqırında Yaponiyada «Maǵlıwmatlar Aǵımın Programmalastırıw Menedjeri» atı menen qısqa waqıt satıldı.
Ulıwma alǵanda, koncepciyalar IBM ishinde «Maǵlıwmatlar Aǵımı» dep ataldı, biraq bul termin júdá ulıwma dep esaplandı hám aqıbetinde «Aǵımǵa Tiykarlanǵan Programmalastırıw» atı qabıl etildi.
80-jıllardıń baslarınan 1993-jılǵa shekem J. Pol Morrison hám IBM arxitektorı Ueyn Stivens FBP arqasındaǵı koncepciyalardı jetilistirdi hám xoshametledi. Stivens FBP koncepciyasın táriyipleytuǵın hám qollap-quwatlaytuǵın bir neshe maqalalar jazdı hám óziniń bir neshe kitaplarına ol haqqında material kirgizdi[7]. 1994-jılı Morrison FBP-di táriyipleytuǵın hám FBP-diń rawajlanıw waqtın qısqartıwına empirikalıq dáliller usınatuǵın kitap járiyaladı[8].
Koncepciyalar
Tómendegi diagramma FBP diagrammasınıń tiykarǵı birliklerin kórsetedi (Informaciya Paketlerinen basqa). Bunday diagramma tikkeley baylanıslar dizimine aylandırılıwı múmkin, ol keyin sáykes dvigatel (programmalıq támiynat yamasa apparatlıq támiynat) tárepinen orınlanıwı múmkin.

A, B hám C — kod komponentlerin orınlaytuǵın processler. O1, O2 hám eki IN — M hám N baylanısların ózleriniń sáykes processlerine baylanıstıratuǵın portlar. B hám C processleriniń birdey kodtı orınlawına ruqsat etiledi, sonlıqtan hárbir processtiń óziniń jumıs saqlaw ornı, basqarıw blokları hám t.b. bolıwı kerek. Olar kodtı bóliskenine yamasa bólispegenine qaramastan, B hám C birdey port atların paydalanıwǵa erkin, sebebi port atları tek olardı kórsetetuǵın komponentler ishinde (hám álbette, tarmaq dárejesinde) ǵana mániske iye.
M hám N kóbinese «sheklengen buferler» dep ataladı hám hár qanday waqıtta saqlay alatuǵın IPler sanı boyınsha turaqlı sıyımlılıqqa iye.
Portlar koncepciyası birdey komponentti tarmaqtıń bir neshe jerinde paydalanıwǵa imkaniyat beredi. Dáslepki Informaciya Paketleri (IIP) dep atalatuǵın parametrlew imkaniyatı menen birgelikte, portlar FBP-ge komponentti qayta paydalanıw imkaniyatın beredi, bul FBP-di komponentke tiykarlanǵan arxitekturaǵa aylandıradı. Solay etip, FBP IBM Izertlewlerinen Raul de Kampo hám Neyt Edvards tárepinen konfiguraciyalanatuǵın modullik dep atalǵan nárselerdi kórsetedi.
Informaciya Paketleri yamasa IPler «IP keńisligi» dep atalıwı múmkin bolǵan jerde ajıratıladı (tap Linda-nıń kortejleri «kortej keńisliginde» ajıratılǵanınday) hám olar joq etilip, olardıń ornı qayta talap etilgenge shekem anıq belgilengen ómir múddetine iye — FBP-de bul iyelik etiwshi processtiń anıq háreketi bolıwı kerek. Berilgen baylanıs arqalı ótetuǵın IPler (haqıyqatında olardıń «tutqıshları» ótedi) «aǵımdı» quraydı, ol asinxron túrde payda boladı hám tutınıladı — bul koncepciya solay etip Fridman hám Uayzdiń 1976-jılǵı maqalasıda táriyiplengen erinshek kons koncepciyasına uqsaslıqlarǵa iye.
IPler ádette strukturalanǵan maǵlıwmatlar bólekleri — geypara IPler, degen menen, hesh qanday haqıyqıy maǵlıwmattı óz ishine almaydı, al tek signallar retinde paydalanıladı. Bunıń bir mısalı — maǵlıwmat IPlerin bir aǵım ishinde «kishi aǵımlar» dep atalatuǵın izbe-iz úlgilerge gruppalaw ushın paydalanılıwı múmkin bolǵan «qawsırmalı IPler». Kishi aǵımlar óz gezeginde ishki jaylasqan bolıwı múmkin. IPler sonday-aq bir obyekt retinde tarmaq arqalı ótetuǵın «IP tereklerin» dúziw ushın bir-birine baylanıstırılıwı múmkin.
Joqarıda táriyiplengen baylanıslar hám processler sisteması hár qanday ólshemge «tarmaqlanıwı» múmkin. Qosımshanı islep shıǵıw waqtında processler jubı arasında baqlawshı processler qosılıwı múmkin, processler kishi tarmaqlarǵa «jarılıwı» múmkin yamasa processler simulyaciyaları haqıyqıy process logikası menen almastırılıwı múmkin. Sonlıqtan FBP tez prototip jaratıwǵa beyimlesedi.
Bul haqıyqatında da maǵlıwmatlardı qayta islewdiń jıynaw liniyası kórinisi: processler tarmaǵı arqalı ótetuǵın IPler jıynaw liniyasındaǵı stanciyadan stanciyaǵa ótetuǵın vidjetler retinde qaralıwı múmkin. «Mashinalar» ańsat qayta jalǵanıwı, ońlaw ushın liniyadan alınıwı, almastırılıwı hám t.b. múmkin. Qızıǵı, bul kórinis kompyuterler payda bolmastan aldın maǵlıwmatlardı qayta islew ushın paydalanılǵan birlikli jazıw úskeneleriniń kórinisine júdá uqsas, tek karta toplamları bir mashinadan ekinshisine qol menen tasıw kerek edi.
FBP implementaciyaları aldınnan toqtatılmaytuǵın yamasa aldınnan toqtatılatuǵın bolıwı múmkin — dáslepki implementaciyalar aldınnan toqtatılmaytuǵın bolıwǵa beyim edi (meynfreym hám C tili), al eń sońǵı Java implementaciyası (tómende qarań) Java Thread klasın paydalanadı hám aldın ala boladı.
Derekler
- ↑ «Flow-based Programming».
- ↑ Carriero, Nicholas; Gelernter, David (1989). "Linda in context". Communications of the ACM 32 (4): 444–458. doi:10.1145/63334.63337.
- ↑ Gelernter, David; Carriero, Nicholas (1992). "Coordination languages and their significance". Communications of the ACM 35 (2): 97–107. doi:10.1145/129630.129635.
- ↑ Gabe Stein. «How an Arcane Coding Method From 1970s Banking Software Could Save the Sanity of Web Developers Everywhere». Fast Company (avgust 2013). Qaraldı: 24-yanvar 2016-jıl.
- ↑ Conway. Design of a separable transition-diagram compiler.
- ↑ Morrison, J. P. (1978). "Data Stream Linkage Mechanism". IBM Systems Journal 17 (4): 383–408. doi:10.1147/sj.174.0383.
- ↑ Stevens, W. P. (1982). "How data flow can improve application development productivity". IBM Systems Journal 21 (2): 162–178. doi:10.1147/sj.212.0162.
- ↑ Johnston, Wesley M.; Hanna, J. R. Paul; Millar, Richard J. (2004). "Advances in dataflow programming languages". ACM Computing Surveys 36 (1): 1–34. doi:10.1145/1013208.1013209.