Can principles of cognition lower the barriers to programming?
Empirical studies of programmers: second workshop
Contracts: specifying behavioral compositions in object-oriented systems
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
Literate programming
The reuse of uses in Smalltalk programming
ACM Transactions on Computer-Human Interaction (TOCHI)
Cognitive tools for locating and comprehending software objects for reuse
ICSE '91 Proceedings of the 13th international conference on Software engineering
API documentation from source code comments: a case study of Javadoc
SIGDOC '99 Proceedings of the 17th annual international conference on Computer documentation
The Cornell program synthesizer: a syntax-directed programming environment
Communications of the ACM
What programmers really want: results of a needs assessment for SDK documentation
Proceedings of the 20th annual international conference on Computer documentation
Using HCI Techniques to Design a More Usable Programming System
HCC '02 Proceedings of the IEEE 2002 Symposia on Human Centric Computing Languages and Environments (HCC'02)
Six Learning Barriers in End-User Programming Systems
VLHCC '04 Proceedings of the 2004 IEEE Symposium on Visual Languages - Human Centric Computing
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
DocWizards: a system for authoring follow-me documentation wizards
Proceedings of the 18th annual ACM symposium on User interface software and technology
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Mica: A Web-Search Tool for Finding API Components and Examples
VLHCC '06 Proceedings of the Visual Languages and Human-Centric Computing
Expressive programs through presentation extension
Proceedings of the 6th international conference on Aspect-oriented software development
Assieme: finding and leveraging implicit references in a web search interface for programmers
Proceedings of the 20th annual ACM symposium on User interface software and technology
Designing interactions that combine pen, paper, and computer
Designing interactions that combine pen, paper, and computer
Hacking, Mashing, Gluing: Understanding Opportunistic Design
IEEE Pervasive Computing
Automated Software Engineering
Two studies of opportunistic programming: interleaving web foraging, learning, and writing code
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Codetrail: Connecting source code and web resources
VLHCC '08 Proceedings of the 2008 IEEE Symposium on Visual Languages and Human-Centric Computing
Improving API documentation using API usage information
VLHCC '09 Proceedings of the 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC)
Example-centric programming: integrating web search into the development environment
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Apatite: a new interface for exploring APIs
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
Recommendation Systems for Software Engineering
IEEE Software
Registration-based language abstractions
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
HyperSource: bridging the gap between source and code-related web sites
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
SnipMatch: using source code context to enhance snippet retrieval and parameterization
Proceedings of the 25th annual ACM symposium on User interface software and technology
Proceedings of the 12th International Conference on Interaction Design and Children
SNIPR: complementing code search with code retargeting capabilities
Proceedings of the 2013 International Conference on Software Engineering
Authoring multi-stage code examples with editable code histories
Proceedings of the 26th annual ACM symposium on User interface software and technology
Hi-index | 0.01 |
Programmers frequently use instructive code examples found on the Web to overcome cognitive barriers while programming. These examples couple the concrete functionality of code with rich contextual information about how the code works. However, using these examples necessitates understanding, configuring, and integrating the code, all of which typically take place after the example enters the user's code and has been removed from its original instructive context. In short, a user's interaction with an example continues well after the code is pasted. This paper investigates whether treating examples as "first-class" objects in the code editor - rather than simply as strings of text - will allow programmers to use examples more effectively. We explore this through the creation and evaluation of Codelets. A Codelet is presented inline with the user's code, and consists of a block of example code and an interactive helper widget that assists the user in understanding and integrating the example. The Codelet persists throughout the example's lifecycle, remaining accessible even after configuration and integration is done. A comparative laboratory study with 20 participants found that programmers were able to complete tasks involving examples an average of 43% faster when using Codelets than when using a standard Web browser.