+ All Categories
Home > Software > Concurrent languages are Functional by Francesco Cesarini

Concurrent languages are Functional by Francesco Cesarini

Date post: 29-Jan-2018
Category:
Upload: naresh-jain
View: 124 times
Download: 1 times
Share this document with a friend
34
Concurrent Languages are Functional Francesco Cesarini Founder & Technical Director @ Erlang Solutions @FrancescoC [email protected]
Transcript
Page 1: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Concurrent Languages areFunctional

Francesco Cesarini Founder & Technical Director @ Erlang Solutions

@FrancescoC [email protected]

Page 2: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 2 Source: Warner Bros

Page 3: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Two ways to do concurrency

3

Mutable State Immutable State

Msg

© 1999-2017 Erlang Solutions Ltd

Page 4: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 4

Page 5: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Y = X2-1

Immutability

Page 6: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Mutability

X = X2-1

Page 7: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Mutability

X = X2-1

Page 8: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 8

Corrupt StateWith Mutability

Page 9: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 9

Corrupt StateWith Mutability

Page 10: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 10

Corrupt StateWith Mutability

Page 11: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 11

LocalityWith Mutability

Bangalore, India

London, UK

Page 12: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

ConnectivityWith Mutability

12

Bangalore, India

London, UK

Page 13: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 13

Corrupt StateWith Immutability

Page 14: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 14

Corrupt StateWith Immutability

Page 15: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 15

Corrupt StateWith Immutability

Page 16: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 16

LocalityWith Immutability

Bangalore, India

London, UK

Page 17: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 17

ConnectivityWith Immutability

Bangalore, India

London, UK

Page 18: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Shared Memory

18

No Shared Memory

Msg

© 1999-2017 Erlang Solutions Ltd

Two ways to do concurrency

Page 19: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Page 20: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Source: Serious Eats

Page 21: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 21

Distribution

Page 22: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 22

Lambdas & Closures double([H|T]) -> [H*2|double(T)]; double([]) -> [].

bump([H|T]) -> [H+1 | bump(T)]; bump([]) -> [].

map(Fun, [H|T]) -> [Fun(H)|map(Fun,T)]; map(_Fun, []) -> [].

double(L) -> map(fun(X)-> X*2 end,L). bump(L) -> map(fun(X)-> X+1 end,L).

Page 23: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 23

Parallella Board Dual core ARM processor + Epiphany 16/64 core co-processor, FPGA

Raspberry Pi 2 Quad core ARM processor, GPU

© 1999-2017 Erlang Solutions Ltd

From Embedded Devices…

Page 24: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd © 1999-2017 Erlang Solutions Ltd 24

●  93 petaflops/s (November 2016)

●  40,960 Nodes, each with 2 Ivy Bridge multicores and 3 Xeon Phis

●  3,120,000 x86 cores in total

Sunway TaihuLight

Chinese National University of Defence Technology

To the Fastest Computer in the World!

Page 25: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 25

Page 26: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Concurrency + Distribution

Immutability Concurrency Distribution

Page 27: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Concurrency + Distribution

Immutability Concurrency Distribution

Multi-core Parallelism

Page 28: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Concurrency + Distribution

Immutability Concurrency Distribution

Multi-core Parallelism

Scalability

Reliability

Page 29: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Distribution

Bangalore, India

London, UK

Page 30: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Distribution

Bangalore, India

London, UK

Page 31: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Distribution

Synchronous Asynchronous

At the Most Once Exactly Once At Least Once

Sequential Parallel

Page 32: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 32

Page 33: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd 33

“Programming consists of overcoming two things: accidental difficulties, things which are difficult because you happen to be using inadequate programming tools, and things which are actually difficult, which no programming tool or language is going to solve.”

- Joel Spolsky

Questions?

Page 34: Concurrent languages are Functional by Francesco Cesarini

© 1999-2017 Erlang Solutions Ltd

Francesco Cesarini Founder & Technical Director @ Erlang Solutions

@FrancescoC [email protected]


Recommended