Liberating the programmer with prorogued programming

  • Authors:
  • Mehrdad Afshari;Earl T. Barr;Zhendong Su

  • Affiliations:
  • University of California, Davis, Davis, CA, USA;University of California, Davis, Davis, CA, USA;University of California, Davis, Davis, CA, USA

  • Venue:
  • Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
  • Year:
  • 2012

Quantified Score

Hi-index 0.00

Visualization

Abstract

Programming is the process of expressing and refining ideas in a programming language. Ideally, we want our programming language to flexibly fit our natural thought process. Language innovations, such as procedural abstraction, object and aspect orientation, have helped increase programming agility. However, they still lack important features that a programmer could exploit to quickly experiment with design and implementation choices. We propose prorogued programming, a new paradigm more closely aligned with a programmer's thought process. A prorogued programming language (PPL) supports three basic principles: 1) proroguing concerns: the ability to defer a concern, to focus on and finish the current concern; 2) hybrid computation: the ability to involve the programmer as an integral part of computation; and 3) executable refinement: the ability to execute any intermediate program refinements. Working in a PPL, the programmer can run and experiment with an incomplete program, and gradually and iteratively reify the missing parts while catching design and implementation mistakes early. We describe the prorogued programming paradigm, our design and realization of the paradigm using Prorogued C#, our extension to C#, and demonstrate its utility through a few use cases.