Functional programming & immutable data.

55
Functional Programming & Immutable Data

Transcript of Functional programming & immutable data.

Page 1: Functional programming & immutable data.

Functional Programming& Immutable Data

Page 2: Functional programming & immutable data.

Functional programmingFunctional programming is a programming paradigm

that treats computation as the evaluation of mathematical functions and avoids changing-state

and mutable data.

Page 3: Functional programming & immutable data.

Functional programmingIs the programming using mathematical functions

Page 4: Functional programming & immutable data.

Mathematical functionsThe representations of expressions that when called

will return ever the same result.

Page 5: Functional programming & immutable data.

I = V/R

Page 6: Functional programming & immutable data.

current(voltage,resistance) = voltage/resistance;

Page 7: Functional programming & immutable data.

current(1,1000) = 1/1000; is equal 0.001

Page 8: Functional programming & immutable data.

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

Page 9: Functional programming & immutable data.

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

Page 10: Functional programming & immutable data.

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

current(1,1000) = 1/1000; is equal 0.001

Page 11: Functional programming & immutable data.

No matter how many times you apply!

Page 12: Functional programming & immutable data.

Ever result will be equal!

Page 13: Functional programming & immutable data.

Contrast

Page 14: Functional programming & immutable data.

Imperative

Page 15: Functional programming & immutable data.

This is about "how"!

Page 16: Functional programming & immutable data.

Functional

Page 17: Functional programming & immutable data.

This is about “what”!

Page 18: Functional programming & immutable data.

High-order functions

Lazy valuation

Page 19: Functional programming & immutable data.

High-order functions Is a function that takes one or more functions as arguments and

can returns a function as its result.

Page 20: Functional programming & immutable data.

Lisp, Erlang, Haskell, Javascript, Java8, Scala…

Page 21: Functional programming & immutable data.

List, HashMap, Map, Reduce, Filter, Reject, ForEach

Page 22: Functional programming & immutable data.

List, HashMap

Page 23: Functional programming & immutable data.

ReduceIterate over the list and reduce the list values in one value.

Page 24: Functional programming & immutable data.

MapIterate over a list and create other list with results of operations applied each item of list.

Page 25: Functional programming & immutable data.

High-order functions Is a function that takes one or more functions as arguments and

can returns a function as its result.

Page 26: Functional programming & immutable data.

Then! Functional programming is a style of programming that compose functions to produce

one result.

Page 27: Functional programming & immutable data.

This is a new mindset.

Page 28: Functional programming & immutable data.

Because in this scene, the minor part of your architecture is not more a "Classe", now is a "Function".

Page 29: Functional programming & immutable data.

Now you need creating pieces for transform inputted data with focus on the desired result.

Page 30: Functional programming & immutable data.

Example

Page 31: Functional programming & immutable data.

I have a list of people and I need all people who have more than 18 years old.

Page 32: Functional programming & immutable data.

Count how many times a letter repeats but only on the people who have more than 18 years old.

Page 33: Functional programming & immutable data.

When your code is divided in very small pieces is easy for you code using single

responsibility.

Page 34: Functional programming & immutable data.

You reuse more and write less.

Page 35: Functional programming & immutable data.

Debugging is simple

Page 36: Functional programming & immutable data.

The TDD and BDD is pretty simple

Page 37: Functional programming & immutable data.

You win a powerful approach for improve performance

Page 38: Functional programming & immutable data.

MemoizationIn computing, memoization is an optimization

technique used primarily to speed up computer programs by storing the results of expensive function

calls and returning the cached result

Page 39: Functional programming & immutable data.

numbers.map(sum)

P1

P2

P3

P4

Cluster

Page 40: Functional programming & immutable data.

Big Data

Page 41: Functional programming & immutable data.

Realtime applications

Page 42: Functional programming & immutable data.

Immutable dataThe value is not changed in life cycle, like constants.

Page 43: Functional programming & immutable data.

The data is created to receive changes, like variables.

Mutable data

Page 44: Functional programming & immutable data.

The biggest problems with mutable data is that you need worry with scopes, concurrency and parallelism.

Mutable data

Page 45: Functional programming & immutable data.

Immutable data is only a good idea! But in functional programing its is the main ideia.

Page 46: Functional programming & immutable data.

You couldn't change the asks, only create answers.

Page 47: Functional programming & immutable data.

This is more fluid, because the flows is very predictable.

Page 48: Functional programming & immutable data.

My motivation for this talk is about

Page 49: Functional programming & immutable data.

REDUX

Page 50: Functional programming & immutable data.

Only one entry point immutable. Single state.

Page 51: Functional programming & immutable data.

Apply reducers for produce new state.

Page 52: Functional programming & immutable data.

Simplify tests, write less and improve productivity.

Page 53: Functional programming & immutable data.

SimplesDental

Page 54: Functional programming & immutable data.

Luiz H. Estácioluizstacio

[email protected]😎

Page 55: Functional programming & immutable data.

Thanks 😁