SlideShare a Scribd company logo
© 1999-2017 Erlang Solutions Ltd
Concurrent Languages are

Functional
Francesco Cesarini
Founder & Technical Director @ Erlang Solutions
@FrancescoC
francesco@erlang-solutions.com
© 1999-2017 Erlang Solutions Ltd 2Source: Warner Bros
© 1999-2017 Erlang Solutions Ltd
Two ways to do 

concurrency
3
Mutable State Immutable State
Msg
© 1999-2017 Erlang Solutions Ltd
© 1999-2017 Erlang Solutions Ltd 4
© 1999-2017 Erlang Solutions Ltd
Y = X2-1
Immutability
© 1999-2017 Erlang Solutions Ltd
Mutability
X = X2-1
© 1999-2017 Erlang Solutions Ltd
Mutability
X = X2-1
© 1999-2017 Erlang Solutions Ltd 8
Corrupt State

With Mutability
© 1999-2017 Erlang Solutions Ltd 9
Corrupt State

With Mutability
© 1999-2017 Erlang Solutions Ltd 1
0
Corrupt State

With Mutability
© 1999-2017 Erlang Solutions Ltd 11
Locality

With Mutability
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd
Connectivity

With Mutability
12
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd 13
Corrupt State

With Immutability
© 1999-2017 Erlang Solutions Ltd 14
Corrupt State

With Immutability
© 1999-2017 Erlang Solutions Ltd 15
Corrupt State

With Immutability
© 1999-2017 Erlang Solutions Ltd 1
6
Locality

With Immutability
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd 1
7
Connectivity

With Immutability
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd
Shared Memory
18
No Shared Memory
Msg
© 1999-2017 Erlang Solutions Ltd
Two ways to do
concurrency
© 1999-2017 Erlang Solutions Ltd
© 1999-2017 Erlang Solutions Ltd
Source: Serious Eats
© 1999-2017 Erlang Solutions Ltd 21
Distribution
© 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).
© 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…
© 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!
© 1999-2017 Erlang Solutions Ltd 25
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
Multi-core Parallelism
© 1999-2017 Erlang Solutions Ltd
Concurrency + Distribution
Immutability Concurrency Distribution
Multi-core Parallelism
Scalability
Reliability
© 1999-2017 Erlang Solutions Ltd
Distribution
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd
Distribution
Bangalore,
India
London,
UK
© 1999-2017 Erlang Solutions Ltd
Distribution
Synchronous
Asynchronous
At the Most Once
Exactly Once
At Least Once
Sequential
Parallel
© 1999-2017 Erlang Solutions Ltd 32
© 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?
© 1999-2017 Erlang Solutions Ltd
Francesco Cesarini
Founder & Technical Director @ Erlang Solutions
@FrancescoC
francesco@erlang-solutions.com

More Related Content

More from Naresh Jain

Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
Naresh Jain
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
Naresh Jain
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
Naresh Jain
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
Naresh Jain
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Naresh Jain
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Naresh Jain
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
Naresh Jain
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
Naresh Jain
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
Naresh Jain
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
Naresh Jain
 
The Eclipse Way
The Eclipse WayThe Eclipse Way
The Eclipse Way
Naresh Jain
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
Naresh Jain
 
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimGetting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Naresh Jain
 
MVP Design Hacks
MVP Design HacksMVP Design Hacks
MVP Design Hacks
Naresh Jain
 
Functional Conf 2015
Functional Conf 2015Functional Conf 2015
Functional Conf 2015
Naresh Jain
 
Agile India 2016 Conference
Agile India 2016 ConferenceAgile India 2016 Conference
Agile India 2016 Conference
Naresh Jain
 
Test Driving a jQuery Plugin
Test Driving a jQuery PluginTest Driving a jQuery Plugin
Test Driving a jQuery Plugin
Naresh Jain
 
Making Sense Through Action by Dave Snowden
Making Sense Through Action by Dave SnowdenMaking Sense Through Action by Dave Snowden
Making Sense Through Action by Dave Snowden
Naresh Jain
 
Oh Oh To Functional
Oh Oh To FunctionalOh Oh To Functional
Oh Oh To Functional
Naresh Jain
 
Techniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh JainTechniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh Jain
Naresh Jain
 

More from Naresh Jain (20)

Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Agile India 2018 Conference
Agile India 2018 ConferenceAgile India 2018 Conference
Agile India 2018 Conference
 
Pilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert VirdingPilgrim's Progress to the Promised Land by Robert Virding
Pilgrim's Progress to the Promised Land by Robert Virding
 
Anatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur DatarAnatomy of an eCommerce Search Engine by Mayur Datar
Anatomy of an eCommerce Search Engine by Mayur Datar
 
Setting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile AppSetting up Continuous Delivery Culture for a Large Scale Mobile App
Setting up Continuous Delivery Culture for a Large Scale Mobile App
 
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to ProdTowards FutureOps: Stable, Repeatable environments from Dev to Prod
Towards FutureOps: Stable, Repeatable environments from Dev to Prod
 
Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas Value Driven Development by Dave Thomas
Value Driven Development by Dave Thomas
 
No Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKennaNo Silver Bullets in Functional Programming by Brian McKenna
No Silver Bullets in Functional Programming by Brian McKenna
 
Functional Programming Conference 2016
Functional Programming Conference 2016Functional Programming Conference 2016
Functional Programming Conference 2016
 
Agile India 2017 Conference
Agile India 2017 ConferenceAgile India 2017 Conference
Agile India 2017 Conference
 
The Eclipse Way
The Eclipse WayThe Eclipse Way
The Eclipse Way
 
Unleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDTUnleashing the Power of Automated Refactoring with JDT
Unleashing the Power of Automated Refactoring with JDT
 
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo KimGetting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
Getting2Alpha: Turbo-charge your product with Game Thinking by Amy Jo Kim
 
MVP Design Hacks
MVP Design HacksMVP Design Hacks
MVP Design Hacks
 
Functional Conf 2015
Functional Conf 2015Functional Conf 2015
Functional Conf 2015
 
Agile India 2016 Conference
Agile India 2016 ConferenceAgile India 2016 Conference
Agile India 2016 Conference
 
Test Driving a jQuery Plugin
Test Driving a jQuery PluginTest Driving a jQuery Plugin
Test Driving a jQuery Plugin
 
Making Sense Through Action by Dave Snowden
Making Sense Through Action by Dave SnowdenMaking Sense Through Action by Dave Snowden
Making Sense Through Action by Dave Snowden
 
Oh Oh To Functional
Oh Oh To FunctionalOh Oh To Functional
Oh Oh To Functional
 
Techniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh JainTechniques for Effectively Slicing User Stories by Naresh Jain
Techniques for Effectively Slicing User Stories by Naresh Jain
 

Recently uploaded

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
Cyanic lab
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
Donna Lenk
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
Globus
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Globus
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
abdulrafaychaudhry
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
WSO2
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Natan Silnitsky
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
Globus
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
wottaspaceseo
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Shahin Sheidaei
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
Juraj Vysvader
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
informapgpstrackings
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
takuyayamamoto1800
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
Globus
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
NYGGS Automation Suite
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
Paco van Beckhoven
 

Recently uploaded (20)

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"Navigating the Metaverse: A Journey into Virtual Evolution"
Navigating the Metaverse: A Journey into Virtual Evolution"
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024Globus Compute Introduction - GlobusWorld 2024
Globus Compute Introduction - GlobusWorld 2024
 
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...
 
Lecture 1 Introduction to games development
Lecture 1 Introduction to games developmentLecture 1 Introduction to games development
Lecture 1 Introduction to games development
 
Accelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with PlatformlessAccelerate Enterprise Software Engineering with Platformless
Accelerate Enterprise Software Engineering with Platformless
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Enhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdfEnhancing Research Orchestration Capabilities at ORNL.pdf
Enhancing Research Orchestration Capabilities at ORNL.pdf
 
How Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptxHow Recreation Management Software Can Streamline Your Operations.pptx
How Recreation Management Software Can Streamline Your Operations.pptx
 
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...
 
Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024Globus Connect Server Deep Dive - GlobusWorld 2024
Globus Connect Server Deep Dive - GlobusWorld 2024
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
In 2015, I used to write extensions for Joomla, WordPress, phpBB3, etc and I ...
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoamOpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
OpenFOAM solver for Helmholtz equation, helmholtzFoam / helmholtzBubbleFoam
 
How to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good PracticesHow to Position Your Globus Data Portal for Success Ten Good Practices
How to Position Your Globus Data Portal for Success Ten Good Practices
 
Enterprise Resource Planning System in Telangana
Enterprise Resource Planning System in TelanganaEnterprise Resource Planning System in Telangana
Enterprise Resource Planning System in Telangana
 
Prosigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology SolutionsProsigns: Transforming Business with Tailored Technology Solutions
Prosigns: Transforming Business with Tailored Technology Solutions
 
Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024Cracking the code review at SpringIO 2024
Cracking the code review at SpringIO 2024
 

Concurrent languages are Functional by Francesco Cesarini

  • 1. © 1999-2017 Erlang Solutions Ltd Concurrent Languages are
 Functional Francesco Cesarini Founder & Technical Director @ Erlang Solutions @FrancescoC francesco@erlang-solutions.com
  • 2. © 1999-2017 Erlang Solutions Ltd 2Source: Warner Bros
  • 3. © 1999-2017 Erlang Solutions Ltd Two ways to do 
 concurrency 3 Mutable State Immutable State Msg © 1999-2017 Erlang Solutions Ltd
  • 4. © 1999-2017 Erlang Solutions Ltd 4
  • 5. © 1999-2017 Erlang Solutions Ltd Y = X2-1 Immutability
  • 6. © 1999-2017 Erlang Solutions Ltd Mutability X = X2-1
  • 7. © 1999-2017 Erlang Solutions Ltd Mutability X = X2-1
  • 8. © 1999-2017 Erlang Solutions Ltd 8 Corrupt State
 With Mutability
  • 9. © 1999-2017 Erlang Solutions Ltd 9 Corrupt State
 With Mutability
  • 10. © 1999-2017 Erlang Solutions Ltd 1 0 Corrupt State
 With Mutability
  • 11. © 1999-2017 Erlang Solutions Ltd 11 Locality
 With Mutability Bangalore, India London, UK
  • 12. © 1999-2017 Erlang Solutions Ltd Connectivity
 With Mutability 12 Bangalore, India London, UK
  • 13. © 1999-2017 Erlang Solutions Ltd 13 Corrupt State
 With Immutability
  • 14. © 1999-2017 Erlang Solutions Ltd 14 Corrupt State
 With Immutability
  • 15. © 1999-2017 Erlang Solutions Ltd 15 Corrupt State
 With Immutability
  • 16. © 1999-2017 Erlang Solutions Ltd 1 6 Locality
 With Immutability Bangalore, India London, UK
  • 17. © 1999-2017 Erlang Solutions Ltd 1 7 Connectivity
 With Immutability Bangalore, India London, UK
  • 18. © 1999-2017 Erlang Solutions Ltd Shared Memory 18 No Shared Memory Msg © 1999-2017 Erlang Solutions Ltd Two ways to do concurrency
  • 19. © 1999-2017 Erlang Solutions Ltd
  • 20. © 1999-2017 Erlang Solutions Ltd Source: Serious Eats
  • 21. © 1999-2017 Erlang Solutions Ltd 21 Distribution
  • 22. © 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).
  • 23. © 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…
  • 24. © 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!
  • 25. © 1999-2017 Erlang Solutions Ltd 25
  • 26. © 1999-2017 Erlang Solutions Ltd Concurrency + Distribution Immutability Concurrency Distribution
  • 27. © 1999-2017 Erlang Solutions Ltd Concurrency + Distribution Immutability Concurrency Distribution Multi-core Parallelism
  • 28. © 1999-2017 Erlang Solutions Ltd Concurrency + Distribution Immutability Concurrency Distribution Multi-core Parallelism Scalability Reliability
  • 29. © 1999-2017 Erlang Solutions Ltd Distribution Bangalore, India London, UK
  • 30. © 1999-2017 Erlang Solutions Ltd Distribution Bangalore, India London, UK
  • 31. © 1999-2017 Erlang Solutions Ltd Distribution Synchronous Asynchronous At the Most Once Exactly Once At Least Once Sequential Parallel
  • 32. © 1999-2017 Erlang Solutions Ltd 32
  • 33. © 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?
  • 34. © 1999-2017 Erlang Solutions Ltd Francesco Cesarini Founder & Technical Director @ Erlang Solutions @FrancescoC francesco@erlang-solutions.com