The Network as a Language Construct
The actor model inspires several important programming languages. In this model, communicating concurrent actors collaborate to produce a result. A pure actor language tends to turn systems into an organization-free collection of processes, however, even though most applications call for layered and tiered architectures. To address this lack of an organizational principle, programmers invent design patterns.
This paper investigates integrating some of these basic patterns via a programming language construct. Specifically, it extends a calculus of communicating actors with a “network” construct so that actors can conduct scoped, tiered conversations. The paper then sketches how to articulate design ideas in the calculus, how to implement it, and how such an implementation shapes application programming.
The paper was presented at ESOP 2014.
We used Coq version 8.4pl2 to formulate and prove our claims about our Basic Actor Model and our Network Calculus. The proof scripts are available here:
Redex Model and Examples
The paper references the Redex models that we built of both the Basic Actor Model and the Network Calculus. The models are available here:
We also constructed a handful of examples using the Redex model, to explore the dynamics of the system:
- nc-telnet-chatserver.rkt, the example chat service from section 5 of the paper.
- nc-chatroom.rkt, a different formulation of a chat service that makes more sophisticated use of service presence and relaying instead of simulating
- nc-bridge.rkt, an example that didn’t make it into the paper, demonstrating transparent “stitching together” of subnets into a contiguous overlay network using a relay actor.
- bam-example.rkt, a trivial example of the Basic Actor Model in operation.
$ racket examplename.rkt
Please see the Marketplace homepage, which contains links to source code, documentation, case studies etc.