In [6]:
!ipython nbconvert --to slides Introduction.ipynb --SlidesExporter.template_file=slides_template.tpl
Evaluate the following cell to start a server with the generated slides:
In [2]:
PORT = 5555 # change the port if necessary
import subprocess
server = subprocess.Popen('python -m http.server {}'.format(PORT).split())
print('\nSee the slides at: http://localhost:{}/Introduction.slides.html'.format(PORT))
Stop the server with:
In [30]:
server.kill()
Thanks for the opportunity
TACC is the right environment, massively distributed/parallel system
Slides and code available, references at the end
Talk in two parts (intro and code)
The model is old (for technology), same as Lisp, Smalltalk...
Easy to think about, compared to abstract notions (physics oriented)
Recommend Agha thesis
Unfortunately, model hasn't succeeded (until now!)
... although many systems (even big ones) can be modelled as actors
It is really usable by programmers, modular thinking
Other concurrent theories are more abstract (CSP - communicating seq. processes)
More powerful than regular comp. (initial CSP theories were not)
Capabilities could eliminate passwords
Full composition. Some people complain about this. Assoc. and Comm.
No order in operations
Only send to known actors (local state). No global state.
Single threaded, sequential processing. Only one become.
No processes, or queues (different as Erlang). An actor is activated by a message.
A minimal actor language contains the primitives:
send
create
become
A message can be anything, including actors (actor addresses)
Messages do not include return address
An actor is single threaded (linear order of events it processes), but no order in events it sends
Messages are guaranteed to be delivered (which implies fairness)
Topology of the network is dynamic
Addresses cannot be constructed (implies security)
Actor can create or get addresses, but they propagate at finite speed. (more later) Implies there is no global clock
No order in messages implies non-determinism (but unbounded!) Turing machine is bounded (by Konig's lemma)
Many concepts of fairness (not starving a service), guaranteed delivery is the weakest, but enough to reason.
Actor model has unbounded nondeterminism: can construct an actor system that
Always halts
For any positive integer $n$, it can compute a number $m\ge n$
Denotational semantics: Clinger (1981), operational semantics: Agha (1983, 1986)
Principle of Actor Induction, to reason about invariants
Algebra of configurations
Also, several frameworks on many languages
CSP is more algebraic, but farther away from implementation. Strict requirements on order of processes.
Go is closer to CSP (via channels)
See these references at: https://github.com/waltermoreira/actor_model
Gul Agha. Actors: A Model of Concurrent Computation in Distributed Systems. Doctoral Dissertation. 1986.
Gul Agha, Ian Mason, Scott Smith, Carolyn Talcott. A Foundation for Actor Computation. Journal of Functional Programming, January 1993.
Carl Hewitt, Peter Bishop and Richard Steiger. A Universal Modular Actor Formalism for Artificial Intelligence. IJCAI’73.
Carl Hewitt. Actor Model of Computation: Scalable Robust Information Systems. Inconsistency Robustness 2011, Stanford University.
Dale Schumacher. It's Actors All The Way Down. Blog.
Thanks to Tristan Slominski and Dale Schumacher for introducing me to tartjs