0
Introduksjon til Funksjonell Reaktiv
Programmering (FRP)
Av @mikaelbrevik for første Bart.JS Meetup 4. februar.
Mikael Brevik
Konsulent hos BEKK
Bachelor fra HIST (2011), Master fra NTNU (2013).
Tidvis open source utvikler og standhaf...
Agenda
1. Teoretisk perspektiv
2. Bacon.js
3. Livekoding og magi
Hva er Functional Reactive Programming?
Kombinasjonen mellom to paradigmer:
1. Funksjonell programmering
2. Reaktiv progra...
Funksjonell programmering
En deklarativ programmeringsparadigme med
funksjoner i fokus.
Unngår tilstander og mutable objekter.
Deklarativ programmering forklarer hva som skjer.
Imperativ programmering forklarer hvordan det skal skje!
Unngår uønskede bieffekter med bruk av rene
funksjoner
Vanlig med bruk av blant annet m pr d c og
a, eue
fle.
itr
[,2 3.a(ucin(){
1 , ]mpfnto i
rtr i*2
eun
;
};
)
/=[,4 6
/ 2 , ]
[,2 3.itrfnto (){
1 , ]fle(ucin i
rtr i%2==0
eun
= ;
};
)
/=[]
/ 2
[,2 3.euefnto (c,i {
1 , ]rdc(ucin ac )
rtr ac+i
eun c
;
};
)
/=6
/
Reaktiv programmering
Kan beskrives som en metode for å holde
systemet kontinuerlig oppdatert med
omgivelsene.
En måte for data å reagere på endringer og
oppdatere for å reflektere disse endringene.
Et eksempel på reaktiv data kan være et
regneark og summen av to tall.
3
ADD

2

5
Funksjonell Reaktiv Programmering
To generelle konsepter
1. Behaviours (Adferd)
2. Events (Hendelse)
Adferder
En kontinuerlig verdi. Eksemeplvis klokken, høyde eller vektorgrafikk.
Hendelser
En diskret verdi. Eksempelvis muse-klikk eller en mengde.
I FRP blir adferder og hendelser behandlet som sekvenser og kan bli
håndtert på en funksjonell måte.
Gevinst av FRP
Reaktive datatyper for representasjon av tilstand.
Sammensettbar data / komposisjoner
GUI uten bi-effekter.
Praktisk FRP
Enter Bacon.js
I Bacon.js har adferd og hendelser andre navn.
En adferd kalles en Property og hendelse en EventStream.
I Bacon.js innkapsler vi datakilder som reaktive
datatyper.
foEetagt
rmvnTre
foPoie
rmrms
foClbc
rmalak
...med flere
Man bruker funksjonelle funksjoner over events
og properties.
BcnfoEetagt$'nu','eU'
ao.rmvnTre((ipt) kyp)
.a(.eCd'
mp'kyoe...
Alt i Bacon.js er ren javascript.
Live-koding

Flerbrukers chatte-system
Vi skal lage en enkel chat-klient basert på
WebSockets
Introduksjon til funksjonell reaktiv programmering
Introduksjon til funksjonell reaktiv programmering
Upcoming SlideShare
Loading in...5
×

Introduksjon til funksjonell reaktiv programmering

83

Published on

Foredrag holdt på Javascript Meetup i Trondheim; Bart.js. Kode fra live-koding kan finnes på https://github.com/mikaelbr/presentations/tree/gh-pages/bartjs/frp-livecode

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
83
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Transcript of "Introduksjon til funksjonell reaktiv programmering"

  1. 1. Introduksjon til Funksjonell Reaktiv Programmering (FRP) Av @mikaelbrevik for første Bart.JS Meetup 4. februar.
  2. 2. Mikael Brevik Konsulent hos BEKK Bachelor fra HIST (2011), Master fra NTNU (2013). Tidvis open source utvikler og standhaftig surfer på internett. Er å finne på Github som @mikaelbr og Twitter @mikaelbrevik. Regelmessig googler og Stackoverflow-leser.
  3. 3. Agenda 1. Teoretisk perspektiv 2. Bacon.js 3. Livekoding og magi
  4. 4. Hva er Functional Reactive Programming? Kombinasjonen mellom to paradigmer: 1. Funksjonell programmering 2. Reaktiv programmering
  5. 5. Funksjonell programmering
  6. 6. En deklarativ programmeringsparadigme med funksjoner i fokus. Unngår tilstander og mutable objekter.
  7. 7. Deklarativ programmering forklarer hva som skjer. Imperativ programmering forklarer hvordan det skal skje!
  8. 8. Unngår uønskede bieffekter med bruk av rene funksjoner
  9. 9. Vanlig med bruk av blant annet m pr d c og a, eue fle. itr
  10. 10. [,2 3.a(ucin(){ 1 , ]mpfnto i rtr i*2 eun ; }; ) /=[,4 6 / 2 , ]
  11. 11. [,2 3.itrfnto (){ 1 , ]fle(ucin i rtr i%2==0 eun = ; }; ) /=[] / 2
  12. 12. [,2 3.euefnto (c,i { 1 , ]rdc(ucin ac ) rtr ac+i eun c ; }; ) /=6 /
  13. 13. Reaktiv programmering
  14. 14. Kan beskrives som en metode for å holde systemet kontinuerlig oppdatert med omgivelsene.
  15. 15. En måte for data å reagere på endringer og oppdatere for å reflektere disse endringene.
  16. 16. Et eksempel på reaktiv data kan være et regneark og summen av to tall.
  17. 17. 3 ADD 2 5
  18. 18. Funksjonell Reaktiv Programmering
  19. 19. To generelle konsepter 1. Behaviours (Adferd) 2. Events (Hendelse)
  20. 20. Adferder En kontinuerlig verdi. Eksemeplvis klokken, høyde eller vektorgrafikk.
  21. 21. Hendelser En diskret verdi. Eksempelvis muse-klikk eller en mengde.
  22. 22. I FRP blir adferder og hendelser behandlet som sekvenser og kan bli håndtert på en funksjonell måte.
  23. 23. Gevinst av FRP Reaktive datatyper for representasjon av tilstand. Sammensettbar data / komposisjoner GUI uten bi-effekter.
  24. 24. Praktisk FRP Enter Bacon.js
  25. 25. I Bacon.js har adferd og hendelser andre navn. En adferd kalles en Property og hendelse en EventStream.
  26. 26. I Bacon.js innkapsler vi datakilder som reaktive datatyper. foEetagt rmvnTre foPoie rmrms foClbc rmalak ...med flere
  27. 27. Man bruker funksjonelle funksjoner over events og properties. BcnfoEetagt$'nu','eU' ao.rmvnTre((ipt) kyp) .a(.eCd' mp'kyoe) .itrfnto (oe { fle(ucin cd) rtr cd ==6; eun oe = 6 }; )
  28. 28. Alt i Bacon.js er ren javascript.
  29. 29. Live-koding Flerbrukers chatte-system
  30. 30. Vi skal lage en enkel chat-klient basert på WebSockets
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×