When I was a PhD student, the first thing I did was take Dan Friedman’s programming languages course, where we studied what programming languages are made of by writing lots of interpreters. Since then, I’ve mostly been studying concurrent and distributed systems. But after more than a decade of journeying through the ripe fields of concurrent and distributed computing, I had a realization that would come as no surprise to Dan and his many intellectual kinfolk: my work is still about interpreters!
In this talk, I’ll describe two lines of work from my research group that exemplify this unsurprising realization. Library-level choreographic programming lets programmers write distributed programs as single, unified programs in their favorite language, and then dynamically project them to multiple endpoints. Causal separation diagrams are inductively defined data structures designed for elegant mechanized reasoning about happens-before relationships in concurrent executions. But really, these two lines of work can be respectively summed up as “What if endpoint projection was an interpreter?” and “What if you could write interpreters for sequence diagrams?” I’ll discuss how we answered those questions, and conclude with some more general takeaways.
