Concurrent computations resemble conversations. In a conversation, participants direct utterances at others and, as the conversation evolves, exploit the known common context to advance the conversation. Similarly, collaborating software components share knowledge with each other in order to make progress as a group towards a common goal.This dissertation studies concurrency from the perspective of cooperative knowledge-sharing, taking the conversational exchange of knowledge as a central concern in the design of concurrent programming languages. In doing so, it makes five contributions:1. It develops the idea of a common dataspace as a medium for knowledge exchange among concurrent components, enabling a new approach to concurrent programming.While dataspaces loosely resemble both "fact spaces" from the world of Linda-style languages and Erlang's collaborative model, they significantly differ in many details.2. It offers the first crisp formulation of cooperative, conversational knowledge-exchange as a mathematical model.
3.It describes two faithful implementations of the model for two quite different languages.4. It proposes a completely novel suite of linguistic constructs for organizing the internal structure of individual actors in a conversational setting.The combination of dataspaces with these constructs is dubbed Syndicate.
5.It presents and analyzes evidence suggesting that the proposed techniques and constructs combine to simplify concurrent programming.The dataspace concept stands alone in its focus on representation and manipulation of conversational frames and conversational state and in its integral use of explicit epistemic knowledge. The design is particularly suited to integration of general-purpose I/O with otherwisefunctional languages, but also applies to actor-like settings more generally.
AcknowledgmentsNetworking is interprocess communication.-Robert Metcalfe, 1972, quoted in Day (2008) I am deeply grateful to the many, many people who have supported, taught, and encouraged me over the past seven years.My heartfelt thanks to my advisor, Matthias Felleisen. Matthias, it has been an absolute privilege to be your student. Without your patience, insight and willingness to let me get the crazy ideas out of my system, this work would not have been possible. My gratitude also to the members of my thesis committee, Mitch Wand, Sam Tobin-Hochstadt, and Jan Vitek. Sam in particular helped me convince Matthias that there might be something worth looking into in this concurrency business. I would also like to thank Olin Shivers for providing early guidance during my studies.Thanks Many thanks to Alex Warth and Yoshiki Ohshima, who invited me to intern at CDG Labs with a wonderful research group during summer and fall 2014, and to John Day, whose book helped motivate me to return to academia. Thanks also to the DARPA CRASH program and to several NSF grants that helped to fund my PhD research.I wouldn't have made it here without crucial interventions over the past few decades from a wide range ...