Use Promises, Futures and some functional programing stuff without being a math nerd

Post on 08-May-2015

2.633 views 0 download

description

talk given to the take off conference 2014 about promises and futures in javascript world https://www.youtube.com/watch?v=2OjHNe9Akaw

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 ?