Concurrent languages are Functional by Francesco Cesarini
-
Upload
naresh-jain -
Category
Software
-
view
124 -
download
1
Transcript of Concurrent languages are Functional by Francesco Cesarini
![Page 1: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/1.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/2.jpg)
© 1999-2017 Erlang Solutions Ltd 2 Source: Warner Bros
![Page 3: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/3.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/4.jpg)
© 1999-2017 Erlang Solutions Ltd 4
![Page 5: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/5.jpg)
© 1999-2017 Erlang Solutions Ltd
Y = X2-1
Immutability
![Page 6: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/6.jpg)
© 1999-2017 Erlang Solutions Ltd
Mutability
X = X2-1
![Page 7: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/7.jpg)
© 1999-2017 Erlang Solutions Ltd
Mutability
X = X2-1
![Page 8: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/8.jpg)
© 1999-2017 Erlang Solutions Ltd 8
Corrupt StateWith Mutability
![Page 9: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/9.jpg)
© 1999-2017 Erlang Solutions Ltd 9
Corrupt StateWith Mutability
![Page 10: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/10.jpg)
© 1999-2017 Erlang Solutions Ltd 10
Corrupt StateWith Mutability
![Page 11: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/11.jpg)
© 1999-2017 Erlang Solutions Ltd 11
LocalityWith Mutability
Bangalore, India
London, UK
![Page 12: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/12.jpg)
© 1999-2017 Erlang Solutions Ltd
ConnectivityWith Mutability
12
Bangalore, India
London, UK
![Page 13: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/13.jpg)
© 1999-2017 Erlang Solutions Ltd 13
Corrupt StateWith Immutability
![Page 14: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/14.jpg)
© 1999-2017 Erlang Solutions Ltd 14
Corrupt StateWith Immutability
![Page 15: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/15.jpg)
© 1999-2017 Erlang Solutions Ltd 15
Corrupt StateWith Immutability
![Page 16: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/16.jpg)
© 1999-2017 Erlang Solutions Ltd 16
LocalityWith Immutability
Bangalore, India
London, UK
![Page 17: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/17.jpg)
© 1999-2017 Erlang Solutions Ltd 17
ConnectivityWith Immutability
Bangalore, India
London, UK
![Page 18: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/18.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/19.jpg)
© 1999-2017 Erlang Solutions Ltd
![Page 20: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/20.jpg)
© 1999-2017 Erlang Solutions Ltd
Source: Serious Eats
![Page 21: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/21.jpg)
© 1999-2017 Erlang Solutions Ltd 21
Distribution
![Page 22: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/22.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/23.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/24.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/25.jpg)
© 1999-2017 Erlang Solutions Ltd 25
![Page 26: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/26.jpg)
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
![Page 27: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/27.jpg)
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
Multi-core Parallelism
![Page 28: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/28.jpg)
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
Multi-core Parallelism
Scalability
Reliability
![Page 29: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/29.jpg)
© 1999-2017 Erlang Solutions Ltd
Distribution
Bangalore, India
London, UK
![Page 30: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/30.jpg)
© 1999-2017 Erlang Solutions Ltd
Distribution
Bangalore, India
London, UK
![Page 31: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/31.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/32.jpg)
© 1999-2017 Erlang Solutions Ltd 32
![Page 33: Concurrent languages are Functional by Francesco Cesarini](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/33.jpg)
© 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](https://reader033.fdocuments.us/reader033/viewer/2022052706/5a6ed1e47f8b9a70728b66a3/html5/thumbnails/34.jpg)
© 1999-2017 Erlang Solutions Ltd
Francesco Cesarini Founder & Technical Director @ Erlang Solutions
@FrancescoC [email protected]