Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/2556288.2556998acmconferencesArticle/Chapter ViewAbstractPublication PageschiConference Proceedingsconference-collections
research-article

Emergent, crowd-scale programming practice in the IDE

Published: 26 April 2014 Publication History

Abstract

While emergent behaviors are uncodified across many domains such as programming and writing, interfaces need explicit rules to support users. We hypothesize that by codifying emergent programming behavior, software engineering interfaces can support a far broader set of developer needs. To explore this idea, we built Codex, a knowledge base that records common practice for the Ruby programming language by indexing over three million lines of popular code. Codex enables new data-driven interfaces for programming systems: statistical linting, identifying code that is unlikely to occur in practice and may constitute a bug; pattern annotation, automatically discovering common programming idioms and annotating them with metadata using expert crowdsourcing; and library generation, constructing a utility package that encapsulates and reflects emergent software practice. We evaluate these applications to find Codex captures a broad swatch of programming practice, statistical linting detects problematic code snippets, and pattern annotation discovers nontrivial idioms such as basic HTTP authentication and database migration templates. Our work suggests that operationalizing practice-driven knowledge in structured domains such as programming can enable a new class of user interfaces.

References

[1]
Ahmadzadeh, M., Elliman, D., and Higgins, C. An analysis of patterns of debugging among novice computer science students. In Proc. ITiCSE 2005.
[2]
Ayewah, N., et al. Using static analysis to find bugs. In IEEE Software 2008.
[3]
Baxter, I.D., et al. Clone detection using abstract syntax trees. In Proc. ICSM 1998.
[4]
Bernstein, M.S., et al. Direct answers for search queries in the long tail. In Proc. CHI 2012.
[5]
Brandt, J., Dontcheva, M., Weskamp, M., and Klemmer, S.R. Example-centric programming: integrating web search into the development environment. In Proc. CHI 2010.
[6]
Brandt, J., et al. Opportunistic programming: Writing code to prototype, ideate, and discover. In IEEE Software 2009.
[7]
Brandt, J., et al. Two studies of opportunistic programming: interleaving web foraging, learning, and writing code. In Proc. CHI 2009.
[8]
Buse, R.P.L. and Weimer, W. Synthesizing api usage examples. In Proc. ICSE 2012.
[9]
Ducasse, S., Rieger, M., and Demeyer, S. A language independent approach for detecting duplicated code. In Proc. ICSM 1999.
[10]
Engler, D., et al. Bugs as deviant behavior: a general approach to inferring errors in systems code. In Proc. SOSP 2001.
[11]
Fourney, A., Mann, R., and Terry, M. Query-feature graphs: bridging user vocabulary and system functionality. In Proc. UIST 2011.
[12]
Gabel, M. and Su, Z. A study of the uniqueness of source code. In Proc. FSE 2010.
[13]
Gamma, E., Helm, R., Johnson, R., and Vlissides, J. Design Patterns: Elements of Reusable Object-Oriented Software. 1994.
[14]
Goldman, M., Little, G., and Miller, R.C. Collabode: collaborative coding in the browser. In Proc. CHASE 2011.
[15]
Goldman, M. and Miller, R.C. Codetrail: Connecting source code and web resources. In Proc. VL/HCC 2009J.
[16]
Grechanik, M., et al. Exemplar: Executable examples archive. In Proc. ICSE 2010.
[17]
Greenberg, S. and Witten, I.H. How users repeat their actions on computers: Principles for design of history mechanisms. In Proc. CHI '88.
[18]
Hartmann, B., MacDougall, D., Brandt, J., and Klemmer, S.R. What would other programmers do: suggesting solutions to error messages. In Proc. of CHI 2010.
[19]
Hartmann, B., Wu, L., Collins, K., and Klemmer, S.R. Programming by a sample: rapidly creating web applications with d.mix. In Proc. UIST 2007.
[20]
Hindle, A., et al. On the naturalness of software. In Proc. ICSE 2012.
[21]
Holmes, R., Walker, R.J., and Murphy, G.C. Strathcona example recommendation tool. In Proc. FSE 2005.
[22]
Hummel, O., Janjic, W., and Atkinson, C. Code conjurer: Pulling reusable software out of thin air. IEEE Software 2008.
[23]
Kim, M., Bergman, L., Lau, T., and Notkin, D. An ethnographic study of copy and paste programming practices in oopl. In Proc. ISESE 2004.
[24]
Ko, A.J. and Myers, B.A. Designing the whyline: a debugging interface for asking questions about program behavior. In Proc. the CHI 2004.
[25]
Kumar, R., et al. Webzeitgeist: Design Mining the Web. In Proc. CHI 2013.
[26]
Mandelin, D., Xu, L., Bodík, R., and Kimelman, D. Jungloid mining: helping to navigate the api jungle. In Proc. PLDI 2005.
[27]
Matejka, J., Li, W., Grossman, T., and Fitzmaurice, G. CommunityCommands. In Proc. UIST 2009.
[28]
Mooty, M., Faulring, A., Stylos, J., and Myers, B.A. Calcite: Completing code completion for constructors using crowds. In Proc. VL/HCC 2010.
[29]
Sahavechaphan, N. and Claypool, K. Xsnippet: mining for sample code. In Proc. OOPSLA 2006.
[30]
Seacord, R.C., Plakosh, D., and Lewis, G.A. Modernizing Legacy Systems: Software Technologies, Engineering Process and Business Practices. 2003.
[31]
Simon, I., Morris, D., and Basu, S. MySong: automatic accompaniment generation for vocal melodies. In Proc. CHI 2008.
[32]
Stylos, J. and Myers, B.A. Mica: A web-search tool for finding api components and examples. In Proc. VL/HCC 2006.
[33]
Thummalapenta, S. and Xie, T. Parseweb: a programmer assistant for reusing open source code on the web. In Proc. ASE 2007.
[34]
Urma, R.G. and Mycroft, A. Programming language evolution via source code query languages. In Proc. PLATEAU 2012.
[35]
Ye, Y. and Fischer, G. Supporting reuse by delivering task-relevant and personalized information. In Proc. ICSE 2002.

Cited By

View all
  • (2023)Localizing Non-functional Code Bugs in User Interfaces Using Deep Learning TechniquesModel and Data Engineering10.1007/978-3-031-49333-1_27(381-394)Online publication date: 22-Dec-2023
  • (2022)Static Analysis of Information Systems for IoT Cyber Security: A Survey of Machine Learning ApproachesSensors10.3390/s2204133522:4(1335)Online publication date: 10-Feb-2022
  • (2022)Deep features extraction to assess mobile user interfacesMultimedia Tools and Applications10.1007/s11042-022-11978-181:9(12945-12960)Online publication date: 22-Feb-2022
  • Show More Cited By

Index Terms

  1. Emergent, crowd-scale programming practice in the IDE

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image ACM Conferences
    CHI '14: Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
    April 2014
    4206 pages
    ISBN:9781450324731
    DOI:10.1145/2556288
    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: 26 April 2014

    Permissions

    Request permissions for this article.

    Check for updates

    Author Tags

    1. data mining
    2. programming tools

    Qualifiers

    • Research-article

    Conference

    CHI '14
    Sponsor:
    CHI '14: CHI Conference on Human Factors in Computing Systems
    April 26 - May 1, 2014
    Ontario, Toronto, Canada

    Acceptance Rates

    CHI '14 Paper Acceptance Rate 465 of 2,043 submissions, 23%;
    Overall Acceptance Rate 6,199 of 26,314 submissions, 24%

    Upcoming Conference

    CHI '25
    CHI Conference on Human Factors in Computing Systems
    April 26 - May 1, 2025
    Yokohama , Japan

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • Downloads (Last 12 months)18
    • Downloads (Last 6 weeks)2
    Reflects downloads up to 09 Nov 2024

    Other Metrics

    Citations

    Cited By

    View all
    • (2023)Localizing Non-functional Code Bugs in User Interfaces Using Deep Learning TechniquesModel and Data Engineering10.1007/978-3-031-49333-1_27(381-394)Online publication date: 22-Dec-2023
    • (2022)Static Analysis of Information Systems for IoT Cyber Security: A Survey of Machine Learning ApproachesSensors10.3390/s2204133522:4(1335)Online publication date: 10-Feb-2022
    • (2022)Deep features extraction to assess mobile user interfacesMultimedia Tools and Applications10.1007/s11042-022-11978-181:9(12945-12960)Online publication date: 22-Feb-2022
    • (2021)An inquisitive code editor for addressing novice programmers' misconceptions of program behaviorProceedings of the 43rd International Conference on Software Engineering: Joint Track on Software Engineering Education and Training10.1109/ICSE-SEET52601.2021.00026(165-170)Online publication date: 25-May-2021
    • (2021)An empirical investigation of command-line customizationEmpirical Software Engineering10.1007/s10664-021-10036-y27:2Online publication date: 14-Dec-2021
    • (2021)Visual Intelligence through Human InteractionArtificial Intelligence for Human Computer Interaction: A Modern Approach10.1007/978-3-030-82681-9_9(257-314)Online publication date: 5-Nov-2021
    • (2020)Quality assessment of crowdsourced test casesScience China Information Sciences10.1007/s11432-019-2859-863:9Online publication date: 10-Aug-2020
    • (2018)A Survey of Attention Management Systems in Ubiquitous Computing EnvironmentsProceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies10.1145/32142612:2(1-27)Online publication date: 5-Jul-2018
    • (2018)A Survey of Machine Learning for Big Code and NaturalnessACM Computing Surveys10.1145/321269551:4(1-37)Online publication date: 31-Jul-2018
    • (2018)Semi-automatic suggestion generation for young novice programmers in an open-ended contextProceedings of the 17th ACM Conference on Interaction Design and Children10.1145/3202185.3202762(405-412)Online publication date: 19-Jun-2018
    • Show More Cited By

    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