Reaktiv programmering

Reaktiv programmering  är ett programmeringsparadigm fokuserat på dataflöde och förändringsutbredning. Detta innebär att det måste vara möjligt att enkelt uttrycka statiska och dynamiska dataflöden, och att den underliggande exekveringsmodellen automatiskt ska sprida förändringar genom dataflödet.

Till exempel, i imperativ programmering, kommer tilldelning a = b + catt innebära att variabeln akommer att tilldelas resultatet av operationen b + cmed hjälp av de aktuella (vid beräkningstillfället) värden för variablerna. Senare kan värdena på variablerna boch cändras utan att påverka variabelns värde a.

Vid reaktiv programmering kommer värdet aautomatiskt att räknas om baserat på de nya värdena.

Moderna kalkylbladsprocessorer är ett exempel på reaktiv programmering. Tabellceller kan innehålla strängvärden eller en formel som "=B1+C1", vars värde kommer att beräknas baserat på värdena för motsvarande celler. När värdet på en av de beroende cellerna ändras, kommer värdet för den cellen att uppdateras automatiskt.

Ett annat exempel är hårdvarubeskrivningsspråk (HDL) som Verilog . Reaktiv programmering låter dig modellera förändringar när de fortplantar sig inom en modell.

Reaktiv programmering har föreslagits som ett sätt att enkelt skapa användargränssnitt, animationer eller simuleringar av tidsvarierande system.

Till exempel, i MVC- arkitekturen, med hjälp av reaktiv programmering, kan du implementera automatisk reflektion av ändringar från modell till vy och vice versa från vy till modell.

Begrepp

Reaktiva metoder för programmering

Imperativ reaktiv programmering

Det är möjligt att kombinera paradigmen för reaktiv och imperativ programmering. I ett sådant paket kan imperativa program fungera på reaktiva datastrukturer.

Objektorienterad reaktiv programmering

Objektorienterad reaktiv programmering (OORP) är en kombination av ett objektorienterat tillvägagångssätt med ett reaktivt tillvägagångssätt. Det mest naturliga sättet att göra detta är förmodligen att istället för metoder och fält har objekt reaktioner som automatiskt räknar om värden, och andra reaktioner beror på ändringar av dessa värden.

Funktionell reaktiv programmering

Funktionell programmering är den mest naturliga grunden för att implementera en reaktiv arkitektur, som passar bra med samtidighet .

Funktionell reaktiv programmering (FRP) bildades 1997, med förslag från det franska språket [1] . Senare utvecklades sådana språk som Fruit, FRP och RT-FRP, FAL, Frob, Fvision, Yampa [2] .

Det enklaste funktionella reaktiva uttrycket har följande form [3] :

b1 ` tills ` e => b2

vilket bokstavligen betyder " bete sig som b1innan händelsen inträffade e, efter det bete sig somb2 ".

Genomföranden

  • Elm  är ett funktionellt reaktivt programmeringsspråk som kompilerar till HTML , CSS och JavaScript
  • Flapjax  - händelsereaktivt språk för programmering av webbapplikationer
  • ReactiveX  är en multiplattformsimplementering av reaktiv programmering för Java , JS , C# , Scala , Clojure , Swift och mer.
  • Reactive.jl  - FRP-implementering för Julia
  • ObservableComputations är en multiplattformsimplementering för .NET

Länkar

  1. Funktionell reaktiv animering . Hämtad 8 september 2015. Arkiverad från originalet 11 november 2020.
  2. Mun Hong Cheong. Funktionell programmering och 3D-spel . — University of New South Wales, 2005.
  3. Paul Hudak. Modulära domänspecifika språk och verktyg . — IEEE Computer Society Press, Department of Computer Science, Yale University, 1998. Arkiverad från originalet den 17 oktober 2013.