SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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 standhaftig surfer på
internett. Er å finne på Github som @mikaelbr og
Twitter @mikaelbrevik. Regelmessig googler og
Stackoverflow-leser.
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 programmering
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)
.itrfnto (oe {
fle(ucin cd)
rtr cd ==6;
eun oe = 6
};
)
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

Weitere ähnliche Inhalte

Andere mochten auch

Training in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaTraining in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaArjit Nigam
 
User Experience at Fundacion Paraguaya
User Experience at Fundacion ParaguayaUser Experience at Fundacion Paraguaya
User Experience at Fundacion ParaguayaJackie Wolf
 
Skalere frontendbygg
Skalere frontendbyggSkalere frontendbygg
Skalere frontendbyggmikaelbr
 
καρτες αφιερωμενες στα παιδια ολου του κοσμου
καρτες αφιερωμενες στα παιδια ολου του κοσμουκαρτες αφιερωμενες στα παιδια ολου του κοσμου
καρτες αφιερωμενες στα παιδια ολου του κοσμουanlio
 
Muscle tech pro series
Muscle tech pro seriesMuscle tech pro series
Muscle tech pro seriesPaul Davidson
 
Gerak harmonik pada pegas
Gerak harmonik pada pegasGerak harmonik pada pegas
Gerak harmonik pada pegasSMAN 54 Jakarta
 
Alwaseet manpower ppt_new[1]
Alwaseet manpower ppt_new[1]Alwaseet manpower ppt_new[1]
Alwaseet manpower ppt_new[1]alwaseetmanpower
 
August 9 Treasure Emporium with Britty & Tazzy
August 9 Treasure Emporium with Britty & TazzyAugust 9 Treasure Emporium with Britty & Tazzy
August 9 Treasure Emporium with Britty & TazzyBritney Stanley-Wyatt
 
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...businessup
 
Contextual Inquiry: Information Flow
Contextual Inquiry: Information FlowContextual Inquiry: Information Flow
Contextual Inquiry: Information FlowJackie Wolf
 

Andere mochten auch (15)

Training in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noidaTraining in vidya electrotech pvt. ltd. noida
Training in vidya electrotech pvt. ltd. noida
 
User Experience at Fundacion Paraguaya
User Experience at Fundacion ParaguayaUser Experience at Fundacion Paraguaya
User Experience at Fundacion Paraguaya
 
Skalere frontendbygg
Skalere frontendbyggSkalere frontendbygg
Skalere frontendbygg
 
Makalah agama islam
Makalah agama islamMakalah agama islam
Makalah agama islam
 
Team 9
Team 9Team 9
Team 9
 
καρτες αφιερωμενες στα παιδια ολου του κοσμου
καρτες αφιερωμενες στα παιδια ολου του κοσμουκαρτες αφιερωμενες στα παιδια ολου του κοσμου
καρτες αφιερωμενες στα παιδια ολου του κοσμου
 
Muscle tech pro series
Muscle tech pro seriesMuscle tech pro series
Muscle tech pro series
 
Gerak harmonik pada pegas
Gerak harmonik pada pegasGerak harmonik pada pegas
Gerak harmonik pada pegas
 
Alwaseet manpower ppt_new[1]
Alwaseet manpower ppt_new[1]Alwaseet manpower ppt_new[1]
Alwaseet manpower ppt_new[1]
 
August 9 Treasure Emporium with Britty & Tazzy
August 9 Treasure Emporium with Britty & TazzyAugust 9 Treasure Emporium with Britty & Tazzy
August 9 Treasure Emporium with Britty & Tazzy
 
Bab i
Bab iBab i
Bab i
 
Function of Mobile Jammer
Function of Mobile JammerFunction of Mobile Jammer
Function of Mobile Jammer
 
Team 5
Team 5Team 5
Team 5
 
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
Dall'impiantistica alla tecnologia integrata per edifici: storia di una riorg...
 
Contextual Inquiry: Information Flow
Contextual Inquiry: Information FlowContextual Inquiry: Information Flow
Contextual Inquiry: Information Flow
 

Introduksjon til funksjonell reaktiv programmering