Programming Language Approaches to
Concurrency- and Communication-cEntric Software
Workshop affiliated with ETAPS 2017 (http://www.etaps.org)
Saturday 29th of April 2017, Uppsala, Sweden
Themes and goals
Modern hardware platforms, from the very small to the very large, increasingly provide parallel computing resources which software may use to maximise performance. Many applications therefore need to make effective use of tens, hundreds, and even thousands of compute nodes. Computation in such systems is thus inherently concurrent and communication centric.
Effectively programming such applications is challenging; performance, correctness, and scalability are difficult to achieve. Various programming paradigms and methods have emerged to aid this task, including structured imperative concurrent programming, stream-based programming, concurrent functions with asynchronous message passing, automatic parallelisation, and the use of types to describe communications and data structures (such as session and linear types), to name but a few. To fully exploit a (possibly heterogeneous) parallel computing environment often requires these approaches to be combined, depending on the shape of the data and control flow. All the while, the underlying runtime environment must ensure seamless execution without relying on differences in available resources such as the number of cores.
The development of effective programming methodologies for this increasingly parallel landscape therefore demands exploration and understanding of a wide variety of foundational and practical ideas. This workshop offers a forum where researchers from different fields can exchange new ideas on this key challenge to modern and future programming– where concurrency and distribution are the norm rather than a marginal concern.