scala actors erlang

28
Scala Actors from an Erlang perspective

Upload: reidar-sollid

Post on 27-Jan-2015

1.671 views

Category:

Technology


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Scala actors erlang

Scala Actors from an Erlang perspective

Page 2: Scala actors erlang

Who am I

• Reidar Sollid (Reidar is an ancient Viking name, and means warrior and protector of the home)

• I am now a Consutlant at Bouvet• My background is from R&D and Telecom

transport networks from Nera Networks( now Ceragon) and Ericsson.

Page 3: Scala actors erlang

Motivation

• Most Scala devs comes from Java• Hacking Scala with a Java mindset limits

your use of Scala• Erlang is a pure actor base language• Getting the mindset from Erlang into

Scala broadens the horizon• Java + Erlang = Scala

Page 4: Scala actors erlang

The concept of forever

• This is a loaner from Joe Armstrong, he is a lot funnier than I am but I guess you get the point

• I hope he don’t mind

Page 5: Scala actors erlang
Page 6: Scala actors erlang

10 x the size of the

Page 7: Scala actors erlang

The fly

Page 8: Scala actors erlang

Nine nines 99.999999999

• Standard for Telecom equipment is five nines 99.999 (5.2 minutes downtime/year)

• The Ericsson AXD301 has 2 million lines of Erlang code and nine nines

Page 9: Scala actors erlang

Shared memory

Page 10: Scala actors erlang

Concurrency and shared memory

Page 11: Scala actors erlang

Erlang

• The world is concurrent• Things in the world don't share data• Things communicate with messages • Things fail – Joe Armstrong

Page 12: Scala actors erlang

What is Erlang

• Created and maintained by Ericsson (now open source)

• Functional, single assignment, strict evaluation, dynamic typing

• Actor model, concurrent oriented, fault tolerant, soft-real-time

• Light weight processes that communicate using message passing (an Erlang process is more light weight than a Java thread)

• Erlang started life as a modified prolog• Erlang shell, escript and compiled *.beam

bytecode

Page 13: Scala actors erlang

Variables and pattern matching

• Variables starts with capital letter or underscore

• Variables are immutable, Erlang does not have mutable variables

• They are variables because they can be assigned or not assigned

• Erlang variables are the same as val variables in Scala

Page 14: Scala actors erlang

Erlang variable demo

Page 15: Scala actors erlang

Scala variable demo

Page 16: Scala actors erlang

Atoms and tuples

• An atom is a global constant starting with lower case

• Scala has an equivalent called Symbol • A tuple is an ordered set of elements• Erlang doesn’t have classes so we use tuples (see

also records)

Page 17: Scala actors erlang

The spawn keyword

• spawn(Fun) -> pid()• Spawns out a new process and returns

the Process Identifier <0.13.1>• Normally we assign the PID to a variable• Pid = hello_world:start()

Page 18: Scala actors erlang

The *Real* Erlang "Hello, World!"

http://egarson.blogspot.com/2008/03/real-erlang-hello-world.html

Page 19: Scala actors erlang

, 10.04.2023

Pattern Matching

Page 20: Scala actors erlang

@tailrec

Tail recursion

Page 21: Scala actors erlang

Tail recursion

tail recursion as seen here is not making the memory grow because when the virtual machine sees a function calling itself in a tail position (the last expression to be evaluated in a function), it eliminates the current stack frame.

Page 22: Scala actors erlang

Scala react or receive

• React is the “normal” actor, lightweight process• Receive spins out a new Java thread • In the paper *

– 1.80GHz Intel Pentium M processor with 1024 MB memory, running Sun’s Java HotSpot™VM 1.5.0 under Linux 2.6.15

– Max heap size set to 512 MB– 5000 threads– 600 000 processes (1 200 000 actors)

• React uses partial functions to send the process to the heap, react has return type Nothing

• Receive runs on the stack and is heavyweight JVM threads (like Java)

*Actors That Unify Threads and Events P. Haller, M. Odersky

Page 23: Scala actors erlang

Area server Erlang

Page 24: Scala actors erlang

Area server in Scala

Page 25: Scala actors erlang

Remote processes Erlang

Page 26: Scala actors erlang

Remote actors Scala

Page 27: Scala actors erlang

Actor model baksiaPage 27

, 10.04.2023

Supervisors in Erlang/OTP and AKKA

Supervisor

ProcessProcess

Process

Page 28: Scala actors erlang

Actor model baksiaPage 28

, 10.04.2023

Supervising supervisors

Supervisor

Process Process

Process

Supervisor

Process Process

Process

Root Supervisor