Kontentke ótiw

Reaktiv programmalastırıw

Wikipedia — erkin enciklopediya

Esaplaw texnikasında, reaktiv programmalastırıw — bul maǵlıwmatlar aǵımları hám ózgerislerdiń tarqalıwı menen shuǵıllanatuǵın deklarativ programmalastırıw paradigması. Bul paradigma menen statikalıq (mısalı, massivler) yamasa dinamikalıq (mısalı, waqıya shıǵarıwshılar) maǵlıwmatlar aǵımların ańsat ańlatıwǵa, sonday-aq baylanıslı orınlanıw modeli ishinde juwmaq shıǵarılǵan ǵárezliliktiń bar ekenin xabarlawǵa boladı, bul ózgertilgen maǵlıwmat aǵımınıń avtomat tarqalıwın jeńillestiredi.

Mısalı, imperativ programmalastırıw ortalıǵında a := b + c ańlatpası a-ǵa ańlatpa bahalanǵan waqıtta b + c nátiyjesi tayınlanatuǵının bildiredi hám keyinirek, b hám c mánisleri a-nıń mánisine tásir etpey ózgertiliwi múmkin. Ekinshi tárepten, reaktiv programmalastırıwda, b yamasa c mánisleri ózgergende a-nıń mánisi avtomat túrde jańalanadı, programmanıń a-nıń mánisin qayta tayınlaw ushın a := b + c operatorın anıq qayta kórsetiwine mútájlik joq.

var b = 1
var c = 2
var a = b + c
b = 10
console.log(a) // 3 (12 emes, sebebi «=» reaktiv tayınlaw operatorı emes) 

// endi arnawlı bir «$=» operatorıńız bar dep oylań, ol ózgeriwshiniń mánisin (operatordıń oń jaǵındaǵı kodtı orınlaydı hám nátiyjeni shep jaqtaǵı ózgeriwshige tayınlaydı) tek anıq inicializaciyalanǵanda ǵana emes, al sonday-aq silteme berilgen ózgeriwshiler (operatordıń oń jaǵında) ózgertilgende de ózgertedi
var b = 1
var c = 2
var a $= b + c
b = 10
console.log(a) // 12

Basqa bir mısal — bul Verilog sıyaqlı apparatlıq támiynattı táriyiplew tili, onda reaktiv programmalastırıw ózgerislerdiń sxemalar arqalı tarqalıwın modellestiriwge imkaniyat beredi.

Reaktiv programmalastırıw interaktiv paydalanıwshı interfeyslerin hám derlik real waqıttaǵı sistema animaciyasın dúziwdi ańsatlastırıw usılı retinde usınıldı.

Mısalı, model–kórinis–basqarıw (MVC) arxitekturasında reaktiv programmalastırıw tiykarındaǵı modeldegi ózgerislerdiń baylanıslı kóriniste avtomat túrde sáwleleniwin ańsatlastıra aladı[1].

Reaktiv programmalastırıw tillerin jaratıwǵa usıllar

Reaktiv programmalastırıw tillerin jaratıwda bir neshe keń tarqalǵan tásiller qollanıladı. Bir tásil — bul hár túrli domen sheklewlerine tán bolǵan arnawlı tillerdiń specifikaciyası. Bunday sheklewler ádette real waqıtta, ornatılǵan esaplaw yamasa apparatlıq támiynattı táriyiplew menen xarakterlenedi. Basqa bir tásil — reaktivlikti qollap-quwatlawdı óz ishine alǵan ulıwma maqsetli tillerdiń specifikaciyasın qamtıydı. Basqa tásiller programmalastırıw tiliniń qasında yamasa ústinde reaktivlikti múmkin etetuǵın programmalastırıw kitapxanaların yamasa jaylastırılǵan arnawlı taraw tillerin anıqlawda hám paydalanıwda sáwlelenedi. Usı hár túrli usıllardıń specifikaciyası hám paydalanılıwı til imkaniyatlarında kompromisslerge alıp keledi. Ulıwma alǵanda, til qanshelli sheklengen bolsa, onıń baylanıslı kompilyatorları hám analiz quralları baǵdarlamashılarǵa sonshelli kóp informaciya bere aladı (mısalı, programmalardıń haqıyqıy real waqıtta orınlana alıwın analizlewde). Specifiklik boyınsha funkcional kompromissler tildiń ulıwma qollanılıw múmkinshiliginiń tómenlewine alıp keliwi múmkin.

Programmalastırıw modelleri hám semantikası

Reaktiv programmalastırıwdı basqaratuǵın hár túrli modeller hám semantikalar bar. Biz olardı tómendegi ólshemler boyınsha erkin bóle alamız:

  • Sinxronlıq: waqıttıń sinxron hám asinxron modeli
  • Determinizm: deterministik hám deterministik emes bahalaw procesi hám nátiyjeleri
  • Jańalaw procesi: keri shaqırıw, maǵlıwmat aǵımı hám aktyor

Implementaciya usılları hám qıyınshılıqları

Implementaciyalardıń tiykarı

Reaktiv programmalastırıw tili orınlanıw waqıtları qatnasıwshı reaktiv mánisler arasındaǵı ǵárezliliklerdi anıqlaytuǵın graf penen kórsetiledi. Bunday grafta túyinler esaplaw háreketin bildiredi, al tárepleri ǵárezlilik qatnasların modellestiredi. Bunday orınlanıw waqtı usı graftı paydalanıp, qatnasıwshı kirgiziw mánisi ózgergende jańadan orınlanıwı kerek bolǵan hár túrli esaplawlardı baqlap turıwǵa járdem beredi.

Ózgerislerdi tarqatıw algoritmleri

Maǵlıwmatlardı tarqatıwdıń eń keń tarqalǵan usılları:

  • Tartıw: Mánis tutınıwshısı haqıyqatında da proaktiv, sebebi ol úziliksiz túrde baqlanatuǵın derekten mánislerdi soraydı hám sáykes mánis bar bolǵanda reaksiya bildiredi. Waqıyalar yamasa mánis ózgerisleri ushın úziliksiz tekseriwdiń bul ámeliyatı kóbinese soraw dep ataladı.
  • Iyteriw: Mánis tutınıwshısı mánis bar bolǵanda derekten mánis aladı. Bul mánisler óz ishinde tolıq boladı, yaǵnıy olar barlıq kerekli informaciyanı óz ishine aladı hám tutınıwshı tárepinen qosımsha informaciya soralıwı kerek emes.
  • Iyteriw-tartıw: Mánis tutınıwshısı ózgeris haqqında xabarlandırıw aladı, bul ózgeristiń qısqasha sıpatlaması, mısalı, «geypara mánis ózgerdi» — bul iyteriw bólimi. Degen menen, xabarlandırıwda barlıq kerekli informaciya joq (bul onıń haqıyqıy mánislerdi óz ishine almaǵanın bildiredi), sonlıqtan tutınıwshı xabarlandırıwdı alǵannan keyin kóbirek informaciya ushın derekten sorawı kerek (arnawlı mánis) — bul tartıw bólimi. Bul usıl tutınıwshılardıń potencial qızıǵıwshılıǵı bolıwı múmkin úlken kólemdegi maǵlıwmatlar bar bolǵanda kóbinese qollanıladı. Sonlıqtan, ótkiziw qábiletin hám keshigiwdi azaytıw ushın tek jeńil xabarlandırıwlar ǵana jiberiledi; hám keyin kóbirek informaciya talap etetuǵın tutınıwshılar sol arnawlı informaciyanı soraydı. Bul tásildiń de kemshiligi — derek xabar jiberilgennen keyin qosımsha informaciya ushın kóp sorawlar menen júkleniwi múmkin.

Neni iyteriw kerek?

Implementaciya dárejesinde, waqıyaǵa reakciya bildiriw graftaǵı ózgeristiń bar ekenin sıpatlaytuǵın informaciyanıń tarqalıwınan ibarat. Nátiyjede, bunday ózgeris tásir etken esaplawlar gónerip qaladı hám qayta orınlanıw ushın belgileniwi kerek. Bunday esaplawlar sońınan ádette onıń baylanıslı deregi tásir etetuǵın ózgeristiń tranzitiv jabılıwı (yaǵnıy, derektiń tásir etetuǵın tranzitiv ǵárezlilikleriniń tolıq toplamı) menen sıpatlanadı. Ózgerislerdiń tarqalıwı sońınan graftıń túyinleriniń mánisiniń jańalanıwına alıp keliwi múmkin.

Graf arqalı tarqalatuǵın informaciya túyinniń tolıq jaǵdayınan, yaǵnıy qatnasıwshı túyinniń esaplaw nátiyjesinen ibarat bolıwı múmkin. Bunday jaǵdayda, túyinniń aldınǵı shıǵıwı itibarǵa alınbaydı. Basqa bir usıl — delta tarqalıwın, yaǵnıy inkremental ózgeris tarqalıwın qamtıydı. Bul jaǵdayda informaciya graftıń tárepleri boyınsha tarqatıladı, olar tek aldınǵı túyinniń qalay ózgertilgenin sıpatlaytuǵın deltalardan ibarat. Bul usıl túyinler úlken kólemdegi jaǵday maǵlıwmatların saqlaǵanda ásirese áhmiyetli, basqa jaǵdayda olardı nolden qayta esaplaw qımbat boladı.

Delta tarqalıwı negizinde inkremental esaplaw páni arqalı keń úyrenilgen optimallastırıw bolıp tabıladı, onıń usılı kórinisti-jańalaw máselesin orınlanıw waqtında qanaatlandırıwdı talap etedi. Bul másele ádette ózgerip turatuǵın maǵlıwmat kórinislerin saqlawǵa juwapker maǵlıwmatlar bazası birliklerin paydalanıw menen xarakterlenedi.

Basqa bir keń tarqalǵan optimallastırıw — bul unar ózgerislerdi jıynaw hám paketli tarqatıwdı qollanıw. Bunday sheshim tezirek bolıwı múmkin, sebebi ol qatnasıwshı túyinler arasındaǵı baylanıstı azaytadı. Optimallastırıw strategiyaları sonnan keyin ishinde bar bolǵan ózgerislerdiń tábiyatı haqqında pikir júritip, sáykes túrde ózgerisler kirgize aladı (mısalı, pakettegi eki ózgeris bir-birin biykar etiwi múmkin hám solay etip, ápiwayı itibarǵa alınbawı múmkin). Basqa bir bar bolǵan usıl nadurıslıq haqqında xabardı tarqatıw retinde táriyiplenedi. Bul tásil nadurıs kirgiziwleri bar túyinlerdiń jańalanıwlardı tartıwına sebep boladı, bul óz gezeginde ózleriniń shıǵıwlarınıń jańalanıwına alıp keledi.

Ǵárezlilik grafın dúziwdiń eki tiykarǵı usılı bar:

  1. Ǵárezlilikler grafı waqıya cikl ishinde jasırın saqlanadı. Anıq keri shaqırıwlardı dizimge alıw sońınan jasırın ǵárezliliklerdiń jaratılıwına alıp keledi. Sonlıqtan, keri shaqırıw arqalı payda bolǵan basqarıwdıń inversiyası óz ornında qaldırıladı. Degen menen, keri shaqırıwlardı funkcional etiw (yaǵnıy, birlik mánisi ornına jaǵday mánisin qaytarıw) bunday keri shaqırıwlardıń kompoziciyalıq bolıwın talap etedi.
  2. Ǵárezlilikler grafı programmaǵa tán hám baǵdarlamashı tárepinen jaratıladı. Bul keri shaqırıwdıń basqarıw inversiyasın eki usılda sheshiwdi ańsatlastıradı: ya graf anıq kórsetiledi (ádette jaylastırılıwı múmkin bolǵan arnawlı tarawǵa-qánigelesken tildi (DSL) paydalanıp), ya bolmasa graf nátiyjeli, arxetipik tildi paydalanıp ańlatpa hám generaciya arqalı jasırın anıqlanadı.

Reaktiv programmalastırıwdaǵı implementaciya qıyınshılıqları

Glitches (Kútilmegen qısqa múddetli qáteler)

Ózgerislerdi tarqatqanda, ańlatpanıń mánisi derek programmasınıń tábiyiy aqıbeti bolmaytuǵın tarqatıw tártibin tańlaw múmkin. Bunı biz bir mısal menen ańsat kórsete alamız. Meyli, seconds — bul aǵımdaǵı waqıttı (sekundlarda) kórsetiw ushın hár sekundta ózgeretuǵın reaktiv mánis. Usı ańlatpanı qarastırayıq:

t = seconds + 1
g = (t > seconds)

t bárqulla seconds ten úlken bolıwı kerek bolǵanlıqtan, bul ańlatpa bárqulla durıs mániske bahalanıwı kerek. Tilekke qarsı, bul bahalaw tártibine baylanıslı bolıwı múmkin. seconds ózgergende, eki ańlatpa jańalanıwı kerek: seconds + 1 hám shárt. Eger birinshisi ekinshisinen aldın bahalansa, onda bul invariant saqlanadı. Degen menen, eger shárt birinshi jańalansa, t-nıń eski mánisin hám seconds tıń jańa mánisin paydalanıp, onda ańlatpa jalǵan mániske bahalanadı. Bul glitch (yaǵnıy qátelik) dep ataladı.

Ayırım reaktiv tiller glitchsiz bolıp, bul qásiyetti dálilleydi. Bul ádette ańlatpalardı topologiyalıq sortlaw hám mánislerdi topologiyalıq tártipte jańalaw arqalı ámelge asırıladı. Biraq bul ónimlilik aqıbetlerine alıp keliwi múmkin, mısalı, mánislerdi jetkiziwdi keshiktiriw (tarqalıw tártibi sebepli). Sonlıqtan, ayırım jaǵdaylarda, reaktiv tiller glitchlerge ruqsat beredi hám baǵdarlamashılar mánislerdiń waqıtsha programma deregine sáykes kelmewi múmkinshiliginen hám ayırım ańlatpalardıń bir neshe ret bahalanıwı múmkinshiliginen xabardar bolıwı kerek (mısalı, t > seconds eki ret bahalanıwı múmkin: biri seconds tıń jańa mánisi kelgende hám jáne biri t jańalanǵanda).

Ciklli ǵárezlikler

Ǵárezliliklerdi topologiyalıq sortlaw ǵárezlilik grafınıń baǵdarlanǵan aciklik graf (DAG) bolıwına baylanıslı. Ámeliyatta, programma ciklleri bar ǵárezlilik grafın anıqlawı múmkin. Ádette, reaktiv programmalastırıw tilleri bunday cikllerdiń reaktiv jańalanıwdıń tamamlanıwına imkaniyat beriw ushın «keri tárep» boyınsha bir elementti jaylastırıw arqalı «buzılıwın» kútedi. Ádette, tiller bul maqset ushın jańalaw mexanizmi tárepinen qollanılatuǵın delay sıyaqlı operatordı usınadı, sebebi keshigiw keyingi hárekettiń «kelesi waqıt basqıshında» bahalanıwı kerekligin bildiredi (bul aǵımdaǵı bahalanıwdıń tamamlanıwına imkaniyat beredi).

Ózgermeli jaǵday menen óz-ara tásir

Reaktiv tiller ádette ózleriniń ańlatpalarınıń taza funkcional ekenin boljaydı. Bul jańalaw mexanizmine jańalanıwlardı orınlaw ushın hár túrli tártipti tańlawǵa imkaniyat beredi hám anıq tártipti belgisiz qaldıradı (solay etip optimallastırıwǵa imkaniyat beredi). Degen menen, reaktiv til jaǵdayı bar programmalastırıw tiline jaylastırılǵanda, baǵdarlamashılarǵa ózgermeli operaciyalardı orınlaw múmkin bolıwı múmkin. Bul óz-ara tásirdi qalay tegis etiw ele de ashıq másele bolıp qalmaqta.

Ayırım jaǵdaylarda, principial tolıq emes sheshimlerge iye bolıw múmkin. Eki bunday sheshimge tómendegiler kiredi:

  • Til «ózgermeli yacheyka» túsinigin usınıwı múmkin. Ózgermeli yacheyka — bul reaktiv jańalaw sisteması xabardar bolǵan yacheyka, solay etip yacheykaǵa kirgizilgen ózgerisler qalǵan reaktiv programmaǵa tarqaladı. Bul programmanıń reaktiv emes bólimine dástúrli ózgeris kirgiziwge imkaniyat beredi, al reaktiv kodqa bul jańalanıwdan xabardar bolıwǵa hám oǵan juwap beriwge múmkinshilik beredi, solay etip programmadaǵı mánisler arasındaǵı baylanıstıń sáykesligin saqlaydı. Bunday yacheykanı usınatuǵın reaktiv til mısalı — FrTime[2].
  • Durıs inkapsulyaciyalanǵan obyektke baǵdarlanǵan kitapxanalar inkapsulyaciyalanǵan jaǵday túsinigin usınadı. Principte, sonlıqtan bunday kitapxana tildiń reaktiv bólimi menen tegis óz-ara tásir ete aladı. Mısalı, keri shaqırıwlar reaktiv jańalaw dvijogına jaǵday ózgerisleri haqqında xabarlaw ushın obyektke baǵdarlanǵan kitapxananıń getterlerine ornatılıwı múmkin, al reaktiv komponenttegi ózgerisler getterler arqalı obyektke baǵdarlanǵan kitapxanaǵa jiberiliwi múmkin. FrTime bunday strategiyanı qollanadı[3].

Ǵárezlikler grafınıń dinamikalıq jańalanıwı

Ayırım reaktiv tillerde ǵárezlikler grafı statikalıq boladı, yaǵnıy graf programmanıń orınlanıwı dawamında turaqlı boladı. Basqa tillerde graf dinamikalıq bolıwı múmkin, yaǵnıy ol programma orınlanǵan sayın ózgeriwi múmkin. Ápiwayı bir mısal ushın, usı illyustrativ mısaldı qarastırayıq (bul jerde seconds — reaktiv mánis):

t =
  if ((seconds mod 2) == 0):
    seconds + 1
  else:
    seconds - 1
  end
t + 1

Hár sekund sayın, bul ańlatpanıń mánisi basqa bir reaktiv ańlatpaǵa ózgeredi, oǵan t + 1 sonnan keyin ǵárezli boladı. Sonlıqtan, ǵárezlilikler grafı hár sekund sayın jańalanadı.

Ǵárezliliklerdiń dinamikalıq jańalanıwına ruqsat beriw áhmiyetli ańlatıwshılıq kúshin beredi (mısalı, dinamikalıq ǵárezlilikler grafikalıq paydalanıwshı interfeysi (GUI) programmalarında úziliksiz ushırasadı). Degen menen, reaktiv jańalaw dvigateli ańlatpalardı hár ret qayta qurıw kerek pe, yamasa ańlatpanıń túyinin qurılǵan, biraq belsendi emes jaǵdayda saqlaw kerek pe ekenin sheshiwi kerek; sońǵı jaǵdayda, olar belsendi bolmawı kerek bolǵanda esaplawǵa qatnaspawın támiyinlew kerek.

Koncepciyalar

Anıqlıq dárejeleri

Reaktiv programmalastırıw tilleri maǵlıwmat aǵımları strelkalar arqalı anıq kórsetilgen júdá anıq tillerden, maǵlıwmat aǵımları imperativ yamasa funkcional programmalastırıwǵa uqsas til konstrukciyalarınan shıǵarılatuǵın jasırın tillerge shekem bolıwı múmkin. Mısalı, jasırın kóterilgen funkcional reaktiv programmalastırıwda (FRP), funkciya shaqırıwı jasırın túrde maǵlıwmat aǵımı grafında bir túyinniń qurılıwına sebep bolıwı múmkin. Dinamikalıq tiller ushın reaktiv programmalastırıw kitapxanaları (Lisp «Yacheykaları» hám Python «Trellis» kitapxanaları sıyaqlı) funkciyanıń orınlanıwı waqtında oqılǵan mánislerdiń orınlanıw waqtındaǵı analizinen ǵárezlilik grafın qura aladı, bul maǵlıwmat aǵımı specifikaciyalarınıń jasırın da, dinamikalıq ta bolıwına imkaniyat beredi.

Geyde reaktiv programmalastırıw termini programmalıq támiynat injeneriyasınıń arxitekturalıq dárejesin bildiredi, bunda maǵlıwmat aǵımı grafındaǵı jeke túyinler bir-biri menen baylanısatuǵın ádettegi programmalar bolıp tabıladı.

Statikalıq yamasa dinamikalıq

Reaktiv programmalastırıw maǵlıwmat aǵımları statikalıq túrde ornatılǵan taza statikalıq bolıwı múmkin yamasa programmanıń orınlanıwı waqtında maǵlıwmat aǵımları ózgeriwi múmkin bolǵan dinamikalıq bolıwı múmkin.

Maǵlıwmat aǵımı grafındaǵı maǵlıwmat almastırǵıshların paydalanıw statikalıq maǵlıwmat aǵımı grafın biraz dinamikalıq etip kórsetiwge hám ayırmashılıqtı azǵana joq etiwge alıp keliwi múmkin. Biraq haqıyqıy dinamikalıq reaktiv programmalastırıw maǵlıwmat aǵımı grafın qayta qurıw ushın imperativ programmalastırıwdı qollana aladı.

Joqarı dárejeli reaktiv programmalastırıw

Eger ol maǵlıwmat aǵımları basqa maǵlıwmat aǵımların dúziw ushın qollanılıwı múmkin degen ideyanı qollap-quwatlasa, reaktiv programmalastırıw joqarı dárejeli dep aytılıwı múmkin. Yaǵnıy, bir maǵlıwmat aǵımınan alınǵan nátiyjedegi mánis — birinshi menen birdey bahalaw modeli arqalı orınlanatuǵın basqa bir maǵlıwmat aǵımı grafı.

Maǵlıwmat aǵımın differenciyalaw

Ideal jaǵdayda barlıq maǵlıwmat ózgerisleri dárhal tarqaladı, biraq bunı ámeliyatta kepillew múmkin emes. Onıń ornına, maǵlıwmat aǵımı grafınıń hár túrli bólimlerine hár túrli bahalaw prioriteterin beriw kerek bolıwı múmkin. Bunı differenciyalanǵan reaktiv programmalastırıw dep atawǵa boladı.

Mısalı, tekst processorında imla qátelerin belgilew simvollardı kirgiziw menen tolıq sinxron bolıwı shárt emes. Bul jerde differenciyalanǵan reaktiv programmalastırıw potencial túrde imla tekseriwshige tómenirek prioritet beriw ushın paydalanılıwı múmkin, bul onı basqa maǵlıwmat aǵımların jedel saqlap qalǵan jaǵdayda keshiktiriwge imkaniyat beredi.

Degen menen, bunday differenciaciyalaw qosımsha dizayn quramalılıǵın kirgizedi. Mısalı, hár túrli maǵlıwmat aǵımı aymaqların qalay anıqlawdı hám hár túrli maǵlıwmat aǵımı aymaqları arasında waqıya almasıwdı qalay basqarıwdı sheshiw.

Reaktiv programmalardı bahalaw modelleri

Reaktiv programmalardı bahalaw minnetli túrde stekke tiykarlanǵan programmalastırıw tilleriniń bahalanıw usılına tiykarlanbaǵan. Onıń ornına, geypara maǵlıwmatlar ózgertilgende, ózgeris sol ózgertilgen maǵlıwmatlardan tolıq yamasa bólek alınǵan barlıq maǵlıwmatlarǵa tarqaladı. Bul ózgerislerdi tarqatıw bir neshe usıl menen ámelge asırılıwı múmkin, bunda eń tábiyiy usıl — biykar etiw/erinshek qayta tastıyıqlaw sxeması bolıwı múmkin.

Eger maǵlıwmatlar strukturası belgili bir formaǵa iye bolsa, ózgeristi stekti paydalanıp ápiwayı túrde tarqatıw potencial eksponencial jańalanıw quramalılıǵı sebepli mashqalalı bolıwı múmkin. Bunday formalardıń biri «qaytalanatuǵın almaz forması» dep táriyiplenedi hám tómendegi strukturaǵa iye: An→Bn→An+1, An→Cn→An+1, bul jerde n=1,2... Bul máseleni tek geypara maǵlıwmatlar ele de biykar etilmegen bolsa ǵana biykar etiwdi tarqatıw arqalı hám keyinirek erinshek bahalawdı paydalanıp, kerek bolǵanda maǵlıwmatlardı qayta tastıyıqlaw arqalı jeńip ótiwge boladı.

Reaktiv programmalastırıw ushın tiykarǵı bir másele — ádettegi programmalastırıw tilinde bahalanıp, umıtılatuǵın kópshilik esaplawlar yadta maǵlıwmatlar strukturaları retinde kórsetiliwi kerek. Bul potencial túrde reaktiv programmalastırıwdı júdá kóp yad talap etetuǵın etip qoyıwı múmkin. Degen menen, tómenletiw dep atalatuǵın nárselerdi izertlew bul máseleni potencial jeńip ótiwge alıp kele aladı[4].

Ekinshi tárepten, reaktiv programmalastırıw «anıq parallellik» dep táriypleniwi múmkin bolǵan nárselerdiń bir forması bolıp tabıladı hám sonlıqtan parallel apparatlıq támiynat kúshin paydalanıw ushın paydalı bolıwı múmkin.

Baqlawshı úlgisi menen uqsaslıqlar

Reaktiv programmalastırıw obyektke baǵdarlanǵan programmalastırıwda keń qollanılatuǵın baqlawshı úlgisi menen tiykarǵı uqsaslıqlarǵa iye. Degen menen, maǵlıwmat aǵımı koncepciyaların programmalastırıw tiline integraciyalaw olardı ańlatıwdı ańsatlastıradı hám sonlıqtan maǵlıwmat aǵımı grafınıń usaqlıǵın arttırıwı múmkin. Mısalı, baqlawshı úlgisi ádette pútkil obyektler/klasslar arasındaǵı maǵlıwmat aǵımların táriyipleydi, al obyektke baǵdarlanǵan reaktiv programmalastırıw obyektlerdiń/klasslardıń aǵzaların maqset ete aladı.

Tásiller

Imperativ

Reaktiv programmalastırıwdı ádettegi imperativ programmalastırıw menen biriktiriwge boladı. Bunday paradigmada imperativ programmalar reaktiv maǵlıwmatlar strukturalarında isley aladı[5]. Bunday dúzilis imperativ sheklewli programmalastırıwǵa uqsas; degen menen, imperativ sheklewli programmalastırıw eki tárepleme maǵlıwmat aǵımı sheklewlerin basqarsa, imperativ reaktiv programmalastırıw bir tárepleme maǵlıwmat aǵımı sheklewlerin basqaradı. Bir anıqlama implementaciyası — usınılǵan Quantum orınlanıw waqtı keńeytpesi JavaScript ushın.

Obyektke baǵdarlanǵan

Obyektke baǵdarlanǵan reaktiv programmalastırıw (OORP) — bul obyektke baǵdarlanǵan programmalastırıw menen reaktiv programmalastırıwdıń kombinaciyası. Bunday kombinaciyanı islewdiń eń tábiyiy usılı tómendegishe bolıwı múmkin: metodlar hám maydanlar ornına, obyektlerde olar ǵárezli bolǵan basqa reaksiyalar ózgertilgende avtomat túrde qayta bahalanatuǵın reakciyalar bar.

Eger OORP tili óziniń imperativ metodların saqlasa, ol sonıń menen birge imperativ reaktiv programmalastırıw kategoriyasına da kiredi.

Funkcional

Funkcional reaktiv programmalastırıw (FRP) — bul funkcional programmalastırıwdaǵı reaktiv programmalastırıw ushın programmalastırıw paradigması.

Aktyorǵa tiykarlanǵan

Aktyorlar kóbinese Funkcional reaktiv programmalastırıw (FRP) hám Reaktiv Aǵımlar menen birgelikte bólistirilgen reaktiv sistemalardı islep shıǵıw ushın reaktiv sistemalardı proektlestiriw ushın usınılǵan[6][7][8].

Qaǵıydaǵa tiykarlanǵan

Programmalastırıw tilleriniń salıstırmalı túrde jańa kategoriyası tiykarǵı programmalastırıw koncepciyası retinde sheklewlerdi (qaǵıydalardı) paydalanadı. Ol barlıq sheklewlerdiń qanaatlandırılıwın támiyinleytuǵın waqıyalarǵa reakciyalardan ibarat. Bul tek waqıyaǵa tiykarlanǵan reakciyalardı ańsatlastırıp qoymay, al reaktiv programmalardı programmalıq támiynattıń durıslıǵı ushın áhmiyetli etedi. Qaǵıydaǵa tiykarlanǵan reaktiv programmalastırıw tiliniń bir mısalı — Ampersand, ol relyaciyalıq algebraǵa tiykarlanǵan[9].

Implementaciyalar

  • ReactiveX, aǵımlar, baqlanatuǵınlar hám operatorlar menen reaktiv programmalastırıwdı ámelge asırıw ushın bir neshe til implementaciyaları bar API, sonıń ishinde RxJs, RxJava, Rx.NET, RxPy hám RxSwift.
  • Elm, veb paydalanıwshı interfeysleriniń reaktiv kompoziciyası.
  • Reactive Streams, bloklamaytuǵın keri basımlı asinxron aǵım qayta islew ushın JVM standartı
  • ObservableComputations, kross-platformalı .NET implementaciyası.
  • Svelte, reaktivlikti JavaScript sıyaqlı kórinetuǵın, biraq ádette JavaScript bolmaytuǵın jerde tábiyiy reaktiv bolǵan JavaScript sintaksisiniń bir variantı formasında usınadı.
  • Solid.js reaktivlikti JavaScript sintaksis semantikasın ózgertpey, sonday-aq reaktiv JSX shablonlawı menen birge JavaScriptke kirgizedi.
  • Quantum JS, JavaScriptke orınlanıw waqtındaǵı keńeytpe bolıp, tilge imperativ reaktiv programmalastırıwdı kirgizedi, reaktivlik spektrinde pútkilley jańa kategoriya jaratadı.
  • Rimmel.js, RxJS hám Baqlanatuǵınlardı esapqa alıp proektlestirilgen aǵımǵa baǵdarlanǵan JavaScript paydalanıwshı interfeysi kitapxanası.

Derekler

  1. Trellis, Model-view-controller and the observer pattern, 2016-03-03da túp nusqadan arxivlendi, qaraldı: 2009-07-27 {{citation}}: Unknown parameter |publisher= ignored (járdem).
  2. «Embedding Dynamic Dataflow in a Call-by-Value Language». cs.brown.edu. 18-oktyabr 2016-jılda túp nusqadan arxivlendi. Qaraldı: 9-oktyabr 2016-jıl.
  3. «Crossing State Lines: Adapting Object-Oriented Frameworks to Functional Reactive Languages». cs.brown.edu. 9-oktyabr 2016-jılda túp nusqadan arxivlendi. Qaraldı: 9-oktyabr 2016-jıl.
  4. Burchett, Kimberley; Cooper, Gregory H; Krishnamurthi, Shriram, „Lowering: a static optimization technique for transparent functional reactivity“, Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation (PDF), 71–80-bet, 2016-04-16da túp nusqadan arxivlendi (PDF), qaraldı: 2014-09-08.
  5. Demetrescu, Camil; Finocchi, Irene; Ribichini, Andrea (22 October 2011), „Reactive Imperative Programming with Dataflow Constraints“, Proceedings of the 2011 ACM international conference on Object-oriented programming systems languages and applications, Oopsla '11, 407–26-bet, arXiv:1104.2293, doi:10.1145/2048066.2048100, ISBN 9781450309400, S2CID 7285961.
  6. Van den Vonder, Sam; Renaux, Thierry; Oeyen, Bjarno; De Koster, Joeri; De Meuter, Wolfgang (2020), „Tackling the Awkward Squad for Reactive Programming: The Actor-Reactor Model“, Leibniz International Proceedings in Informatics (LIPIcs), 166-tom, 19:1–19:29-bet, doi:10.4230/LIPIcs.ECOOP.2020.19, ISBN 9783959771542, S2CID 260445152, 2021-10-20da túp nusqadan arxivlendi, qaraldı: 2021-06-24 {{citation}}: Check |s2cid= value (járdem).
  7. Van den Vonder, Sam; Renaux, Thierry; De Meuter, Wolfgang (2022), „Topology-Level Reactivity in Distributed Reactive Programs: Reactive Acquaintance Management using Flocks“, The Art, Science, and Engineering of Programming, 6-tom, 14:1–14:36-bet, arXiv:2202.09228, doi:10.22152/programming-journal.org/2022/6/14, 2023-03-15da túp nusqadan arxivlendi, qaraldı: 2023-03-16
  8. Shibanai, Kazuhiro; Watanabe, Takuo (2018), „Distributed Functional Reactive Programming on Actor-Based Runtime“, Proceedings of the 8th ACM SIGPLAN International Workshop on Programming Based on Actors, Agents, and Decentralized Control, Agere 2018, 13–22-bet, doi:10.1145/3281366.3281370, ISBN 9781450360661, S2CID 53113447, 2021-06-24da túp nusqadan arxivlendi, qaraldı: 2021-06-24
  9. Joosten, Stef (2018), „Relation Algebra as programming language using the Ampersand compiler“, Journal of Logical and Algebraic Methods in Programming, 100-tom, 113–29-bet, doi:10.1016/j.jlamp.2018.04.002, S2CID 52932824.