Reaktiv programmering

Reaktiv programmering  er et programmeringsparadigme med fokus på dataflow og forandringsudbredelse. Det betyder, at det nemt skal være muligt at udtrykke statiske og dynamiske datastrømme, og at den bagvedliggende eksekveringsmodel automatisk skal udbrede ændringer gennem datastrømmen.

For eksempel vil tildeling i imperativ programmering a = b + cbetyde, at variablen avil blive tildelt resultatet af operationen b + cved hjælp af de aktuelle (på beregningstidspunktet) værdier af variablerne. Senere kan værdierne af variablerne bog cændres uden nogen indflydelse på værdien af ​​variablen a.

Ved reaktiv programmering vil værdien aautomatisk blive genberegnet baseret på de nye værdier.

Moderne regnearksprocessorer er et eksempel på reaktiv programmering. Tabelceller kan indeholde strengværdier eller en formel som "=B1+C1", hvis værdi vil blive beregnet ud fra værdierne af de tilsvarende celler. Når værdien af ​​en af ​​de afhængige celler ændres, vil værdien af ​​denne celle automatisk blive opdateret.

Et andet eksempel er hardware description languages ​​(HDL'er) såsom Verilog . Reaktiv programmering giver dig mulighed for at modellere ændringer, efterhånden som de forplanter sig i en model.

Reaktiv programmering er blevet foreslået som en måde at nemt skabe brugergrænseflader, animationer eller simuleringer af tidsvarierende systemer.

For eksempel, i MVC- arkitekturen, ved hjælp af reaktiv programmering, kan du implementere automatisk afspejling af ændringer fra Model til View og omvendt fra View til Model.

Begreber

Reaktive tilgange til programmering

Imperativ reaktiv programmering

Det er muligt at kombinere paradigmerne for reaktiv og imperativ programmering. I et sådant bundt kunne imperative programmer arbejde på reaktive datastrukturer.

Objektorienteret reaktiv programmering

Objektorienteret reaktiv programmering (OORP) er en kombination af en objektorienteret tilgang med en reaktiv. Den nok mest naturlige måde at gøre dette på er, at objekter i stedet for metoder og felter har reaktioner , der automatisk genberegner værdier, og andre reaktioner afhænger af ændringer i disse værdier.

Funktionel reaktiv programmering

Funktionel programmering er det mest naturlige grundlag for at implementere en reaktiv arkitektur, der parrer godt med samtidighed .

Functional Reactive Programming (FRP) blev dannet i 1997 med forslag fra det franske sprog [1] . Senere blev sprog som Fruit, FRP og RT-FRP, FAL, Frob, Fvision, Yampa [2] udviklet .

Det enkleste funktionelle reaktive udtryk har følgende form [3] :

b1 ` indtil ` e => b2

hvilket bogstaveligt betyder " opfør dig som b1før begivenheden indtraf e, opfør dig derefter somb2 ".

Implementeringer

  • Elm  er et funktionelt reaktivt programmeringssprog, der kompilerer til HTML , CSS og JavaScript
  • Flapjax  - hændelsesreaktivt sprog til programmering af webapplikationer
  • ReactiveX  er en multiplatform implementering af reaktiv programmering til Java , JS , C# , Scala , Clojure , Swift og mere.
  • Reactive.jl  - FRP implementering for Julia
  • ObservableComputations er en multi-platform implementering til .NET

Links

  1. Funktionel reaktiv animation . Hentet 8. september 2015. Arkiveret fra originalen 11. november 2020.
  2. Mun Hong Cheong. Funktionel programmering og 3D-spil . — University of New South Wales, 2005.
  3. Paul Hudak. Modulære domænespecifikke sprog og værktøjer . — IEEE Computer Society Press, Department of Computer Science, Yale University, 1998. Arkiveret fra originalen den 17. oktober 2013.