Use Promises, Futures and some functional programing stuff without being a math nerd
-
Upload
quentin-adam -
Category
Technology
-
view
2.633 -
download
0
description
Transcript of Use Promises, Futures and some functional programing stuff without being a math nerd
USE PROMISES, FUTURES AND SOME FUNCTIONAL PROGRAMING STUFF WITHOUT BEING A MATH NERD.
@WAXZCE
TAKEOFF CONFERENCE
CEO at www.clever-cloud.com
Polyglot developer
WHO AM I ?
@waxzce on twitter
And learn a lot of things about your code, apps, and good/bad design…
KEEP YOUR APPS ONLINE. MADE WITH NODE.JS, SCALA, JAVA, RUBY, PHP, PYTHON, GO…
I’M NOT A MATH NERD
NODE.JS MAIN PROBLEM
SO, TRY TO KEEP IT ALIVE AND MINIMIZE ERROR EXPOSURE
ON THE OTHER HAND: THE CALLBACK SOUP
EXAMPLE : DATABASE CONNECTION
REALLY ? ALL DB INTERACTION IN ONE CALLBACK ?
REALLY ? UNCATCHED EXCEPTIONS BUBBLE TO THE TOP AND KILL THE APP ?
REALLY ? IF/ELSE/UNDEFINED ERROR TREATMENT ?
DB DRIVER SHOULDN’T DRIVE YOUR CODE ARCHITECTURE, THEORICALLY
SO, WE HAVE A PROBLEM : HOW TO USE A VALUE WE DON’T HAVE YET, AND USE IT IN THE FUTURE?
CHANGE YOUR MINDHOW DO YOU INTERACT WITH DATA NOW?
• Wait for it• Possibly
blocking i/o
Get data from DB and/or
WS
• Act on it• Data
treatment
Data is here
EXAMPLE
YOU WANT TO RETURN SOMETHING !
YOU MIX I/O HANDLING WITH YOUR BUSINESS PROCESSES
THE OTHER PROBLEM :
SPLIT
Business process and
valued computing
I/O management and other
“computing stuff”
CHANGE YOUR MINDHOW CAN WE DO IT?
• Give all the “recipes” about how to deal with this data
• You only describe how to manage data you get
Get data from DB and/or
WS
That’s all
WORK ON FUTURE DATA YOU HAVE PROMISED TO YOUR CODE ;-)
EXAMPLESIMPLE PROMISE MAP
EXAMPLESIMPLE PROMISE MAP
MORE IMPORTANT : YOU CAN RETURN A DATA YOU DON’T HAVE AT THE MOMENT
NO MORE DEALING WITH BLOCKING I/O IN YOUR BUSINESS CODE
DEALING WITH MULTIPLE FUTURE DATA
And stop using boolean counter for event « ready »….
GET ALL YOU NEED TO WORK
REAL WORLD EXAMPLE
BUILT IN ERROR MANAGEMENT
SIMPLE WAY : YOU CAN RETURN SOMETING :-)
PROMISES WILL MANAGE TEMPORALITY PROBLEMS AND I/O IN A SIMPLE WAY
NOT TOO COMPLICATED ?
WE’VE JUST DEALT WITH FUNCTORS, MONADS, SEMIGROUPS… ALL OF THESE ALGEBRAIC STRUCTURES
MATH WORDS, NOT SO COMPLICATED, JUST MADE TO SHARE CONCEPTS BETWEEN PEOPLE :-)
FUNCTIONAL PROGRAMING IS NOT A LANGUAGE : IT’S THE ABILITY TO USE ALGEBRAIC STRUCTURES AND MATH TOOLS IN YOUR CODE
SO YOU CAN REUSE IT WHERE YOU WANT…
Made by the awesome Brian McKenna - @puffnfresh
FUNCTIONAL JAVASCRIPT : FANTASY LAND SPECIFICATION
Node.js + browser implementation, totally agnostic javascript,
Fantasy Land compatible + Promises/A+ compatible
made by Paul Mucur with help from Rodolphe Belouin
DEMO MADE WITH PACTA IMPLEMENTATION
TRY IT YOU WILL
BE A BADASS !
I give you a www.clever-cloud.com gift : takeoff2014
I’m on twitter : @waxzce
THANK YOU !ANY QUESTIONS ?