Dr. Hridesh Rajan has been awarded a $450,098 grant from the National Science Foundation for his proposal to continue research and development of the capsule-oriented programming paradigm, a project that will increase the ability of sequentially trained programmers to write concurrent programs. This work will continue Rajan's initial groundbreaking work with Panini, a proof-of-concept capsule-oriented language that extends Java with capsules, and runs on the standard Java virtual machine. An implementation of Panini is available for trial and download at /~panini/. A complete FAQ on capsule-oriented programming is available at http://paninij.org/faq.shtml. The complete programming guide is available at /~panini/. Developers need no previous experience with concurrency in order to learn Panini.
Rajan's capsule-oriented programming paradigm has the potential to help bridge the gap between the existing programming workforce, much of which are trained to write and think sequentially, to meet the needs of industry to maximize modern hardware potential through concurrency in software. This grant will contribute towards expanding Panini and its tool-chain to create new programming abstractions, improve compiler analysis, increase implicit concurrency capabilities, and share the results with the software community and programmers interested in learning new methods.
Capsule-oriented programming provides a structure for programmers who are not trained in concurrency to use their existing skills as sequential programmers, and still be able to contribute towards parallel and concurrent programs. Capsules provide boundaries for programmers inside which they can program sequentially without concerning themselves with concurrency issues. The semantics of capsules clearly reveals interference points, where other concurrent tasks may interfere, and provides a methodology for understanding the effects of other concurrent tasks. The design and semantics of capsules also facilitates fully-automatic compile-time checking for common concurrency errors, e.g. data races due to shared data. The future of software design and development will require professionals to be able to write portable systems in the multicore/manycore/cloud computing era. Capsule-oriented programming is one method for assisting programmers trained in sequential programming to write code that is effective and productive in parallel and concurrent programs.
For more information on Hridesh Rajan and his Laboratory for Software Design, please visit http://design.cs.iastate.edu