Technical Report Number
Computing Methodologies, Mathematics of Computing, Software
Sequentially-trained programmers, i.e. programmers with little or no training in concurrent program design, remain an important subset of today's IT workforce. Inherent concurrency in modern software together with prevalence of multiple hardware threads due to multicore processors is increasing pressure on these programmers to become adept at concurrency, but they continue to find writing and reasoning about concurrent programs difficult. The difficulties originate from having to write and reason about programs that have a multitude of possible execution orders.
We present a novel implicitly-concurrent programming model called capsule-oriented programming that is designed for sequentially-trained programmers. Capsule-oriented programming solves these problems by introducing a new module-like abstraction called capsule that (1) guarantees sequential reasoning within its boundary, and (2) makes those program locations where interleavings may occur explicit. The former property allows programmers to (a) reuse existing sequential code as is and (b) use sequential reasoning for most of their code, and the latter property helps by (c) precisely showing program locations where programmers must reason about concurrent interleavings, and (d) creating opportunities for helping reasoning.
We present a realization of this programming model in an extension of Java called Panini. The Panini compiler compiles capsule-oriented programs to standard Java Bytecode.