Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2384592.2384595acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Liberating the programmer with prorogued programming

Published: 19 October 2012 Publication History

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.

References

[1]
M. Bayne, R. Cook, and M. D. Ernst. Always-available static and dynamic feedback. In ICSE, 2011.
[2]
R. Bodik, S. Chandra, J. Galenson, D. Kimelman, N. Tung, S. Barman, and C. Rodarmor. Programming with angelic nondeterminism. In POPL, 2010.
[3]
F. P. Brooks. The mythical man-month -- essays on software engineering (2nd ed.). Addison-Wesley, 1995.
[4]
S. Chandra, E. Torlak, S. Barman, and R. Bodik. Angelic debugging. In ICSE, 2011.
[5]
D. Chapman. A program testing assistant. Commun. ACM, 25(9):625--634, Sept. 1982.
[6]
M. Czerwinski, E. Horvitz, and S. Wilhite. A diary study of task switching and interruptions. In CHI, pages 175--182, 2004.
[7]
M. de Icaza, M. Safar, S. Peterson, B. Maurer, S. Pouliot, H. Raja, and M. Baulig. Mono C\# compiler. http://www.mono-project.com/CSharp\_Compiler, December 2010.
[8]
E. W. Dijkstra. On the role of scientific thought. Published as EWD:EWD447, Aug. 1974.
[9]
B. N. Freeman-Benson and A. Borning. Integrating constraints with an object-oriented language. In ECOOP, pages 268--286, 1992.
[10]
S. Gulwani. Dimensions in program synthesis. In FMCAD, 2010.
[11]
S. Gulwani. Automating string processing in spreadsheets using input-output examples. In POPL, 2011.
[12]
W. R. Harris and S. Gulwani. Spreadsheet table transformations from examples. In POPL, 2011.
[13]
A. Hejlsberg, M. Torgersen, S. Wiltamuth, and P. Golde. C\# language specification, 2010.
[14]
J. Henry C. Baker and C. Hewitt. The incremental garbage collection of processes. In Proceedings of the 1977 Symposium on Artificial Intelligence and Programming Languages, pages 55--59, 1977.
[15]
S. T. Iqbal and E. Horvitz. Disruption and recovery of computing tasks: field study, analysis, and directions. In CHI, pages 677--686, 2007.
[16]
L. Jiang and Z. Su. Automatic mining of functionally equivalent code fragments via random testing. In ISSTA, pages 81--92, 2009.
[17]
G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In ECOOP, pages 220--242, 1997.
[18]
T. A. Lau, P. Domingos, and D. S. Weld. Version space algebra and its application to programming by demonstration. In ICML, pages 527--534, 2000.
[19]
T. A. Lau, P. Domingos, and D. S. Weld. Learning programs from traces using version space algebra. In K-CAP, pages 36--43, 2003.
[20]
T. A. Lau, S. A. Wolfman, P. Domingos, and D. S. Weld. Programming by demonstration using version space algebra. Machine Learning, 53(1--2):111--156, 2003.
[21]
O. A. L. Lemos, S. K. Bajracharya, J. Ossher, P. C. Masiero, and C. V. Lopes. A test-driven approach to code search and its application to the reuse of auxiliary functionality. Information & Software Technology, 53(4):294--306, 2011.
[22]
O. A. L. Lemos, S. K. Bajracharya, J. Ossher, R. S. Morla, P. C. Masiero, P. Baldi, and C. V. Lopes. CodeGenie: using test-cases to search and reuse source code. In ASE, 2007.
[23]
H. Lieberman and C. Hewitt. A session with tinker: Interleaving program testing with program design. In Proceedings of the 1980 ACM conference on LISP and functional programming, LFP '80, pages 90--99, New York, NY, USA, 1980. ACM.
[24]
A. Milicevic, D. Rayside, K. Yessenov, and D. Jackson. Unifying execution of imperative and declarative code. In ICSE, pages 511--520, 2011.
[25]
S. P. Reiss. Semantics-based code search. In ICSE, pages 243--253, 2009.
[26]
H. Samimi, E. D. Aung, and T. D. Millstein. Falling back on executable specifications. In ECOOP, pages 552--576, 2010.
[27]
A. Solar-Lezama, G. Arnold, L. Tancau, R. Bodik, V. Saraswat, and S. Seshia. Sketching stencils. In PLDI, 2007.
[28]
A. Solar-Lezama, C. G. Jones, and R. Bodik. Sketching concurrent data structures. In PLDI, 2008.
[29]
A. Solar-Lezama, R. Rabbah, R. Bodık, and K. Ebciouglu. Programming by sketching for bit-streaming programs. In PLDI, 2005.
[30]
A. Solar-Lezama, L. Tancau, R. Bodik, S. Seshia, and V. Saraswat. Combinatorial sketching for finite programs. In ASPLOS, 2006.
[31]
L. von Ahn, M. Blum, N. J. Hopper, and J. Langford. CAPTCHA: Using hard AI problems for security. In EUROCRYPT, pages 294--311, 2003.
[32]
L. von Ahn and L. Dabbish. Labeling images with a computer game. In CHI, 2004.
[33]
L. von Ahn, B. Maurer, C. McMillen, D. Abraham, and M. Blum. reCAPTCHA: Human-based character recognition via web security measures. Science, Sept. 2008.
[34]
N. Wirth. Program development by stepwise refinement. CACM, 1971.
[35]
I. H. Witten and D. Mo. TELS: Learning text editing tasks from examples, pages 183--203. MIT Press, Cambridge, MA, USA, 1993.

Cited By

View all
  • (2024)A New Generation of Intelligent Development EnvironmentsProceedings of the 1st ACM/IEEE Workshop on Integrated Development Environments10.1145/3643796.3648452(43-46)Online publication date: 20-Apr-2024
  • (2019)Live functional programming with typed holesProceedings of the ACM on Programming Languages10.1145/32903273:POPL(1-32)Online publication date: 2-Jan-2019
  • (2016)How are programs found? speculating about language ergonomics with Curry-HowardProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986030(212-223)Online publication date: 20-Oct-2016
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
Onward! 2012: Proceedings of the ACM international symposium on New ideas, new paradigms, and reflections on programming and software
October 2012
258 pages
ISBN:9781450315623
DOI:10.1145/2384592
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 19 October 2012

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. executable refinement
  2. human computation
  3. hybrid computation
  4. managing concerns
  5. prorogued programming
  6. workflow improvement

Qualifiers

  • Research-article

Conference

SPLASH '12
Sponsor:

Acceptance Rates

Onward! 2012 Paper Acceptance Rate 13 of 43 submissions, 30%;
Overall Acceptance Rate 40 of 105 submissions, 38%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)7
  • Downloads (Last 6 weeks)3
Reflects downloads up to 02 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2024)A New Generation of Intelligent Development EnvironmentsProceedings of the 1st ACM/IEEE Workshop on Integrated Development Environments10.1145/3643796.3648452(43-46)Online publication date: 20-Apr-2024
  • (2019)Live functional programming with typed holesProceedings of the ACM on Programming Languages10.1145/32903273:POPL(1-32)Online publication date: 2-Jan-2019
  • (2016)How are programs found? speculating about language ergonomics with Curry-HowardProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986030(212-223)Online publication date: 20-Oct-2016
  • (2016)Building white-box abstractions by program refinementProceedings of the 2016 ACM International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software10.1145/2986012.2986025(74-81)Online publication date: 20-Oct-2016
  • (2015)The Oracle Problem in Software Testing: A SurveyIEEE Transactions on Software Engineering10.1109/TSE.2014.237278541:5(507-525)Online publication date: 1-May-2015
  • (2013)Supporting incremental programming with ghostsProceedings of the 2013 International Conference on Software Engineering10.5555/2486788.2487025(1429-1431)Online publication date: 18-May-2013
  • (2013)Declarative mockingProceedings of the 2013 International Symposium on Software Testing and Analysis10.1145/2483760.2483790(246-256)Online publication date: 15-Jul-2013
  • (2013)Supporting incremental programming with ghosts2013 35th International Conference on Software Engineering (ICSE)10.1109/ICSE.2013.6606734(1429-1431)Online publication date: May-2013

View Options

Get Access

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media