erlang in 10 minutes
DESCRIPTION
A short presentation about Erlang, specifically designed for concurrency characteristics. For the course: Scientific Writing and Communication (KTH Royal Institute of Technology)TRANSCRIPT
Erlang
in 10 minutesMaria StylianouNovember 19th, 2012
Scientific Writing and Communication
Outline
● What is Erlang
● What Erlang offers
● Concurrent Programming
● Four things to remember!2
"The world is concurrent.
Things in the world don't share data.Things communicate with messages.
Things fail."- Joe Armstrong
What is Erlang (1/4)
3
What is Erlang (2/4)
● Type: Programming Language
● Date of Birth: ~1986
● Place of Birth: Ericsson, Sweden
● Father: Joe Armstrong
● Aim of Existence: Target robust apps in telecom world
4
● Functional Programming Language
● OS Independent
● Actor Model
i++
A1:5A1:6 A2:1spawn
What is Erlang (3/4)
?
5
● Functional Programming Language
● OS Independent
● Actor Model
i++
A1:5A1:6 A2:1spawn
What is Erlang (3/4)
msgmsgmsgmsg
?
5
What is Erlang (4/4)
● Build real-time systems○ scalable
○ highly available
○ reliable
● Built-in support for○ concurrency
○ distribution
○ fault tolerance
6
Among many others...
● Sequential Programming
What Erlang offers
● Concurrent Programming
7
Concurrent Programming
● Process Creation
● Process Communication
● Timeouts
● Fault Tolerance
8
say_something(What, 0) -> Pattern Matching done;say_something(What, Times) -> if-then-else io:format("~p~n", [What]), say_something(What, Times - 1).
-module(say). % say.erl-export([start/0, say_something/2]).
ConcurrentProgramming
Light weight processes
Process Creation
start() -> spawn(say, say_something, [emdc, 3]), spawn(say, say_something, [rocks, 3]).
Create 2 processes
9
say_something(What, 0) -> Pattern Matching done;say_something(What, Times) -> if-then-else io:format("~p~n", [What]), say_something(What, Times - 1).
-module(say). % say.erl-export([start/0, say_something/2]).
ConcurrentProgramming
Light weight processes
Process Creation
start() -> spawn(say, say_something, [emdc, 3]), spawn(say, say_something, [rocks, 3]).
Create 2 processes
9
ConcurrentProgramming
Asynchronous Message Passing "Send and Pray"
Process Communication
A B
B! {msg, [1,2]} receive{msg, List} ->
handle(List)end.
10
TimeoutsConcurrentProgramming
To avoid locking processes
A B
B! {msg, [1,2]} receive{msg, List} ->
handle(List)after 1000 ->
handle_timeout()end.
11
ConcurrentProgramming
Fault Tolerance
● Exits● Exit signals
A Blinklink(A)
● Trapping Exits
A B
process_flag(trap_exit, true)12
Four Things to remember!
Erlang's Most Valuable Characteristics
Concurrency
Scalability
High Performance
Fault Tolerance
1
2
3
413
References
1. Erlang/OTP, http://www.erlang.se
2. Erlang programming language, http://www.erlang.org
3. Learn you some Erlang, http://learnyousomeerlang.com
4. Joe Armstrong, "Programming Erlang, Software for a
Concurrent World"
15
Erlang
in 10 minutesMaria StylianouNovember 19th, 2012
Scientific Writing and Communication