Choreographies in Practice

Luís Cruz-Filipe, Fabrizio Montesi [2016].
In proceedings of FORTE 2016, pp. 114-123.


Choreographic Programming is a development methodology for concurrent software that guarantees correctness by construction. The key to this paradigm is to disallow mismatched I/O operations in programs, called choreographies, and then mechanically synthesise distributed implementations in terms of standard process models via a mechanism known as EndPoint Projection (EPP).

Despite the promise of choreographic programming, there is still a lack of practical evaluations that illustrate the applicability of choreographies to concrete computational problems with standard concurrent solutions. In this work, we explore the potential of choreographies by using Procedural Choreographies (PC), a model that we recently proposed, to write distributed algorithms for sorting (Quicksort), solving linear equations (Gaussian elimination), and computing Fast Fourier Transform. We discuss the lessons learned from this experiment, giving possible directions for the usage and future improvements of choreography languages.

Additional notes
Cite (BibTeX)
Click to expand
  author       = {Lu{\'{\i}}s Cruz{-}Filipe and
                  Fabrizio Montesi},
  editor       = {Elvira Albert and
                  Ivan Lanese},
  title        = {Choreographies in Practice},
  booktitle    = {Formal Techniques for Distributed Objects, Components, and Systems
                  - 36th {IFIP} {WG} 6.1 International Conference, {FORTE} 2016, Held
                  as Part of the 11th International Federated Conference on Distributed
                  Computing Techniques, DisCoTec 2016, Heraklion, Crete, Greece, June
                  6-9, 2016, Proceedings},
  series       = {Lecture Notes in Computer Science},
  volume       = {9688},
  pages        = {114--123},
  publisher    = {Springer},
  year         = {2016},
  url          = {\_8},
  doi          = {10.1007/978-3-319-39570-8\_8},
  timestamp    = {Tue, 14 May 2019 10:00:50 +0200},
  biburl       = {},
  bibsource    = {dblp computer science bibliography,}

A PDF is available (possibly a preprint):

Download PDF