Reaktiivinen ohjelmointi

Ohjelmointiparadigmat
Deklaratiivinen ohjelmointi
Epärakenteellinen ohjelmointi
Funktionaalinen ohjelmointi
Geneerinen ohjelmointi
Imperatiivinen ohjelmointi
Logiikkapohjainen ohjelmointi
Olio-ohjelmointi
Proseduraalinen ohjelmointi
Rakenteinen ohjelmointi
Reaktiivinen ohjelmointi
Rinnakkaisohjelmointi

Reaktiivinen ohjelmointi (reaktiivinen ohjelmointiparadigma, engl. reactive programming, RP) on ohjelmointiparadigma, jossa muuttujien arvot päivittyvät automaattisesti. Reaktiiviseen ohjelmointiin käytetään reaktiivista ohjelmointikieltä tai reaktiivisen ohjelmoinnin mahdollistavaa kirjastoa. Reaktiivinen ohjelmointi soveltuu mm. tapahtumaohjattujen ja interaktiivisten sovellusten toteuttamiseen[1].

Useimmissa ohjelmointikielissä käskyn "a = b + c" jälkeen muuttujien b ja c arvo voi muuttua vaikuttamatta a:n arvoon. Reaktiivisessa ohjelmoinnissa a:n arvo päivittyy b:n tai c:n muuttuessa.

Reaktiivisen ohjelmoinnin käyttökohteita ovat mm. taulukkolaskentaohjelmat ja verkkopalvelut. Monet verkkopalvelut ovat luonteeltaan asynkronisia ja tapahtumapohjaisia. Reaktiivinen ohjelmointi ratkaisee tällaisten palveluiden rakentamiseen liittyviä teknisiä ongelmia.[2][3]

Reaktiivisia ohjelmointikieliä ovat mm. Haskelliin perustuvat Fran ja Yampa sekä JavaScriptin laajennos Flapjax.[2][4] Reaktiivisia ohjelmointikirjastoja ovat mm. Scala-kielelle kehitetty Scala.React sekä JavaScriptille kehitetty RxJS.[2]lähde tarkemmin?

Tunnettuja reaktiivista ohjelmointia käyttäviä verkkopalveluita ovat Netflix ja GitHub.[2]

Reaktiivinen ohjelmointi -käsitteellä saatetaan toisinaan ymmärtää muutakin kuin yllä kuvattua ohjelmointiparadigmaa. Sillä voidaan tarkoittaa sellaisen tietojärjestelmän kehittämistä, että järjestelmä on ominaisuuksiltaan reaktiivinen. Tässä tapauksessa reaktiivisuudella tarkoitetaan esimerkiksi järjestelmän kykyä toipua virhetilanteista sekä palvella käyttäjiä riippumatta kuormasta. Tällöin kyse on siis reaktiivisen sovelluksen ohjelmoinnista eikä siitä, että ohjelmointi on reaktiivista.[2]

  • Bainomugisha, E. & Carreton, A. L. & Van Cutsem, T. & Mostinckx, S. & & De Meuter, W.: A survey on reactive programming. ACM Computing Surveys, 2013, 45. vsk, nro 4. Association for Computing Machinery (ACM). (englanniksi)
  • Czaplicki, E. & Chong, S.: Asynchronous functional reactive programming for GUIs. ACM SIGPLAN Notices, 2013, 48. vsk, nro 6, s. 411-422. (englanniksi)
  • Chydenius, Arto: Reaktiivinen ohjelmointi web-sovellusten selainpuolella (pdf) (pro gradu) 2014. A. Chydenius.
  1. Bainomugisha ym. 2013, 1
  2. a b c d e Chydenius
  3. Czaplicki & Chong 2013, 411
  4. Bainomugisha ym. 2013, 2–4

Aiheesta muualla

[muokkaa | muokkaa wikitekstiä]
Tämä tietotekniikkaan liittyvä artikkeli on tynkä. Voit auttaa Wikipediaa laajentamalla artikkelia.