Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Actor Model: The Object Awakens

Karmen Blake
January 19, 2016

The Actor Model: The Object Awakens

See how the actor model influenced object-oriented programming. And why concurrent-oriented programming is relevant for the future of programming.

Karmen Blake

January 19, 2016
Tweet

More Decks by Karmen Blake

Other Decks in Programming

Transcript

  1. Are we ready to write these kinds of apps?? Multicore

    by default Internet of Things Real-time Distributed Concurrent
  2. Are you willing to try a functional language? Higher Order

    functions No side effects Immutable data Lazy evaluation
  3. OOP "OOP to me means only messaging, local retention and

    protection and hiding of state- process, and extreme late binding of all things." “I invented the term object-oriented, and I can tell you that C++ wasn’t what I had in mind.“ - Alan Kay
  4. Actor Model Invented by Hewitt, Baker, Agha in 1973 Everything

    is an actor and execution is concurrent.
  5. Actor Model Designed by motivation of highly parallel computing machines

    consisting of many independent microprocessors, each with its own local memory, communicating via high-performance network. - https://en.wikipedia.org/wiki/Actor_model
  6. Actor Model Actors + Message Passing Foundation for Asynchronous and

    Distributed Sysems Resilient and self-healing systems
  7. Erlang did not invent the "Actor" model but did not

    take from it either. It arrived at its own best ways to solve problems. Erlang inventors did not hear about Actors until years later.
  8. “No concurrency library for Ruby can ever prevent the user

    from making thread safety mistakes (such as sharing a mutable object between threads and modifying it on both threads) or from creating deadlocks through incorrect use of locks.” - https://github.com/ruby-concurrency/concurrent-ruby
  9. “When the Ruby language was designed computers had only one

    CPU. Nowadays we have multiple cores and to utilize these we need concurrency. At this time Ruby can use other cores for IO operations, but for the rest Ruby can only execute code on one core at a time because of the global interpreter lock that is implemented in the language. This technique is in place to make sure the executed code and data is safe from modification so no unexpected behavior will occur.” - http://www.mangrove.com/en/journal/2015-11-17-whats-coming-in-ruby-3-and- rails-5/