erlang in 10 minutes

18
Erlang in 10 minutes Maria Stylianou November 19th, 2012 Scientific Writing and Communication

Upload: maria-stylianou

Post on 21-Jan-2015

1.021 views

Category:

Technology


0 download

DESCRIPTION

A short presentation about Erlang, specifically designed for concurrency characteristics. For the course: Scientific Writing and Communication (KTH Royal Institute of Technology)

TRANSCRIPT

Page 1: Erlang in 10 minutes

Erlang

in 10 minutesMaria StylianouNovember 19th, 2012

Scientific Writing and Communication

Page 2: Erlang in 10 minutes

Outline

● What is Erlang

● What Erlang offers

● Concurrent Programming

● Four things to remember!2

Page 3: Erlang in 10 minutes

"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

Page 4: Erlang in 10 minutes

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

Page 5: Erlang in 10 minutes

● Functional Programming Language

● OS Independent

● Actor Model

i++

A1:5A1:6 A2:1spawn

What is Erlang (3/4)

?

5

Page 6: Erlang in 10 minutes

● Functional Programming Language

● OS Independent

● Actor Model

i++

A1:5A1:6 A2:1spawn

What is Erlang (3/4)

msgmsgmsgmsg

?

5

Page 7: Erlang in 10 minutes

What is Erlang (4/4)

● Build real-time systems○ scalable

○ highly available

○ reliable

● Built-in support for○ concurrency

○ distribution

○ fault tolerance

6

Page 8: Erlang in 10 minutes

Among many others...

● Sequential Programming

What Erlang offers

● Concurrent Programming

7

Page 9: Erlang in 10 minutes

Concurrent Programming

● Process Creation

● Process Communication

● Timeouts

● Fault Tolerance

8

Page 10: Erlang in 10 minutes

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

Page 11: Erlang in 10 minutes

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

Page 12: Erlang in 10 minutes

ConcurrentProgramming

Asynchronous Message Passing "Send and Pray"

Process Communication

A B

B! {msg, [1,2]} receive{msg, List} ->

handle(List)end.

10

Page 13: Erlang in 10 minutes

TimeoutsConcurrentProgramming

To avoid locking processes

A B

B! {msg, [1,2]} receive{msg, List} ->

handle(List)after 1000 ->

handle_timeout()end.

11

Page 14: Erlang in 10 minutes

ConcurrentProgramming

Fault Tolerance

● Exits● Exit signals

A Blinklink(A)

● Trapping Exits

A B

process_flag(trap_exit, true)12

Page 15: Erlang in 10 minutes

Four Things to remember!

Erlang's Most Valuable Characteristics

Concurrency

Scalability

High Performance

Fault Tolerance

1

2

3

413

Page 16: Erlang in 10 minutes

http://learnyousomeerlang.com 14

Page 17: Erlang in 10 minutes

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

Page 18: Erlang in 10 minutes

Erlang

in 10 minutesMaria StylianouNovember 19th, 2012

Scientific Writing and Communication