Scala actors erlang


Published on

Published in: Technology
  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
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()->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!"
    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