ruby fuza 2016
TRANSCRIPT
–NelsonPascoal
“ReactiveProgrammingPrinciples”
make->tasks->flow
http://www.kotive.com
Isnotwhatthistalkisabout
Wikipedia:toogenericandtheoretical
Stackoverflow:canonical¬suitableforbeginners
ReactiveManifesto:somethingyouwouldgivetomanagersorbusinesspeople
WhatisReactiveProgramming?
DilbertesqueDefinition
Incomputing,reactiveprogrammingisaprogrammingparadigmorientedarounddataflowsandthepropagationofchange.Thismeansthatitshouldbepossibletoexpressstaticordynamicdataflowswitheaseintheprogramminglanguagesused,andthattheunderlyingexecutionmodelwillautomaticallypropagatechangesthroughthedataflow.
DilbertesqueDefinition
Incomputing,reactiveprogrammingisaprogrammingparadigmorientedarounddataflowsandthepropagationofchange.Thismeansthatitshouldbepossibletoexpressstaticordynamicdataflowswitheaseintheprogramminglanguagesused,andthattheunderlyingexecutionmodelwillautomaticallypropagatechangesthroughthedataflow.
Reactiveprogrammingisprogrammingwithasynchronousdatastreams
(Nothingnew,eventbusesoryourtypicalclickeventsareeventstreams.)
Reactiveprogrammingisprogrammingwithasynchronousdatastreams
(Nothingnew,eventbusesoryourtypicalclickeventsareeventstreams.)
Abstractionsforhandlingconcurrentasynchronousprocessingwithinasystem
[8, 3, 1, 6, 4, 7, 10, 14, 13]
[8, 3, 1, 6, 4, 7, 10, 14, 13][8,[3,[1,[],[]],[6,[4,[],[]],[7,[],[]]]],[10,[14,[13,[],[]],
[]],[]]]
MainprinciplesofReactiveProgramming
MessageDriven
Non-blockingIO
Asynchronous
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIO
Asynchronous
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIO
Asynchronous
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIO
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIO
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIO
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIOhttps://github.com/libuv/libuv&http://tinyurl.com/mwhhx5l
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIOhttps://github.com/libuv/libuv&http://tinyurl.com/mwhhx5l
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIOhttps://github.com/libuv/libuv&http://tinyurl.com/mwhhx5l
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressure
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIOhttps://github.com/libuv/libuv&http://tinyurl.com/mwhhx5l
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressurehttp://tinyurl.com/pbs5yq9
MainprinciplesofReactiveProgramming
MessageDrivenhttp://tinyurl.com/prr8j43
Non-blockingIOhttps://github.com/libuv/libuv&http://tinyurl.com/mwhhx5l
Asynchronoushttp://tinyurl.com/nqnakz6&http://tinyurl.com/pz869qe
andBackPressurehttp://tinyurl.com/pbs5yq9
ReactiveProgrammingraisesthelevelofabstractionofyourcodesoyoucan
focusontheinterdependenceofeventsthatdefinethebusinesslogic,ratherthanhavingtoconstantlyfiddlewithalargeamountofimplementationdetails.
http://tinyurl.com/mwhhx5l
Actormodelisreactive
• Messagedriven• Asynchronous• CanbeusedtoisolateblockingIO
(carefulwiththreading)• Correctmessagehandlingcangive
youbackpressure(verymanualthough)
Moreinlinewithhowtheworldworks
make->tasks->flow
Let'slookatanexample.
Acoffeeshopsimulator:)
THANKYOUhttps://github.com/foomip/coffeeshop-ruby
@foomip
http://www.kotive.com