Scala Actors from an Erlangperspective
Who am I• Reidar Sollid (Reidar is an ancient Viking name, and  means warrior and protector of the home)• I am now a Consu...
Motivation• Most Scala devs comes from Java• Hacking Scala with a Java mindset limits your  use of Scala• Erlang is a pure...
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 ...
10 x the size of the
The fly
Nine nines 99.999999999• Standard for Telecom equipment is five nines 99.999 (5.2  minutes downtime/year)• The Ericsson AX...
Shared memory
Concurrency and shared memory
Erlang•   The world is concurrent•   Things in the world dont share data•   Things communicate with messages•   Things fai...
What is Erlang• Created and maintained by Ericsson (now open source)• Functional, single assignment, strict evaluation, dy...
Variables and pattern matching• Variables starts with capital letter or  underscore• Variables are immutable, Erlang does ...
Erlang variable demo
Scala variable demo
Atoms and tuples•   An atom is a global constant starting with lower case•   Scala has an equivalent called Symbol•   A tu...
The spawn keyword• spawn(Fun) -> pid()• Spawns out a new process and returns the  Process Identifier <0.13.1>• Normally we...
The *Real* Erlang "Hello, World!" http://egarson.blogspot.com/2008/03/real-erlang-hello-world.html
Pattern Matching                   , 29.09.2012
Tail recursion                 @tailrec
Tail recursion         tail recursion as seen here is not making the memory grow         because when the virtual machine ...
Scala react or receive • React is the “normal” actor, lightweight process • Receive spins out a new Java thread • In the p...
Area server Erlang
Area server in Scala
Remote processes Erlang
Remote actors Scala
Supervisors in Erlang/OTP andAKKA   Supervisor                                 Process                       Process      ...
Supervising supervisors  RootSupervisor                                        SupervisorSupervisor                       ...
Scala actors erlang
Upcoming SlideShare
Loading in...5
×

Scala actors erlang

1,050

Published on

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,050
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • Imaging somewhere in the universe an Iron Ball
  • 10 times the size of the earth, and every 10th million year a fly
  • Lands on the Iron Ball and wonders around a bit.The time it for the fly to wear down the Iron Ball is tiny winy bit of time in the concept of forever.
  • Erlang do have shared memory, light weight processes that communicate through messages
  • val variable = 3;Variable = 3.
  • 1 200 000 actors since the queues are actors as well
  • Pid = spawn(fun()-&gt;area_server:loop() end).Pid = {circle, 2.3}.Pid =
  • Show receiveWithin
  • Scala actors erlang

    1. 1. Scala Actors from an Erlangperspective
    2. 2. 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.
    3. 3. 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
    4. 4. 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
    5. 5. 10 x the size of the
    6. 6. The fly
    7. 7. 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
    8. 8. Shared memory
    9. 9. Concurrency and shared memory
    10. 10. Erlang• The world is concurrent• Things in the world dont share data• Things communicate with messages• Things fail – Joe Armstrong
    11. 11. 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
    12. 12. 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
    13. 13. Erlang variable demo
    14. 14. Scala variable demo
    15. 15. 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)
    16. 16. 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()
    17. 17. The *Real* Erlang "Hello, World!" http://egarson.blogspot.com/2008/03/real-erlang-hello-world.html
    18. 18. Pattern Matching , 29.09.2012
    19. 19. Tail recursion @tailrec
    20. 20. 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.
    21. 21. 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
    22. 22. Area server Erlang
    23. 23. Area server in Scala
    24. 24. Remote processes Erlang
    25. 25. Remote actors Scala
    26. 26. Supervisors in Erlang/OTP andAKKA Supervisor Process Process Process Page , 29.09.2012 Actor model baksia
    27. 27. Supervising supervisors RootSupervisor SupervisorSupervisor Process Process Process ProcessProcess Process Page , 29.09.2012 Actor model baksia
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×