Example-centric programming: Difference between revisions

Content deleted Content added
Citation bot (talk | contribs)
m Alter: template type, journal. Add: year, citeseerx, isbn. Removed parameters. | You can use this bot yourself. Report bugs here. | User-activated.
Line 1:
'''Example-centric programming''' is an approach to [[software development]] that helps the user to create software by locating and modifying small examples into a larger whole. That approach can be helped by tools that allow an [[integrated development environment]] (IDE) to show code examples or [[API]] documentation related to coding behaviors occurring in the IDE. “Borrow” tactics are often employed from online sources, by programmers leaving the IDE to troubleshoot.<ref name="blueprint">{{cite journalbook|last1=Scaffidi|first1=Christopher|last2=Brandt|first2=Joel|last3=Burnett|first3=Margaret|author3-link=Margaret Burnett|last4=Dove|first4=Andrew|last5=Myers|first5=Brad|title=SIG: end-user programming|journal=CHI '12 Extended Abstracts on Human Factors in Computing Systems|date=2012|pages=1193–1996|doi=10.1145/2212776.2212421|url=http://dl.acm.org/citation.cfm?id=2212776.2212421&coll=DL&dl=GUIDE&CFID=597181533&CFTOKENisbn=269593649781450310161}}</ref>
The purpose of example-centric programming is to reduce the time spent by developers searching online. Ideally, in example-centric programming, the [[user interface]] integrates with help module examples for assistance without programmers leaving the IDE. The idea for this type of “instant documentation” is to reduce programming interruptions.<ref name="redprint">{{cite journalbook|last1=Bhardwaj|first1=Anant|last2=Luciano|first2=Date|last3=Klemmer|first3=Scott|title=Redprint: integrating API specific "instant example" and "instant documentation" display interface in IDEs|journal=Proceedings of the 24th annualAnnual ACM symposiumSymposium adjunctAdjunct on User interfaceInterface softwareSoftware and technologyTechnology|date=2011|pages=21–22|doi=10.1145/2046396.2046408|urlisbn=http://dl.acm.org/citation.cfm?id=20464089781450310147}}</ref> The usage of this feature is not limited to experts, as some novices reap the benefits of an integrated knowledge base, without resorting to frequent web searches or browsing.<ref name="blueprint" />
 
==Background==
Line 6:
Prevalence of online code repositories, documentation, blogs and forums—enables programmers to build applications iteratively searching for, modifying, and combining examples.
 
Using the web is integral to an opportunistic approach to programming when focusing on speed and ease of development over code robustness and maintainability. There is a widespread use of the web by programmers, novices and experts alike, to [[software prototyping|prototype]], ideate, and discover.<ref name="original">{{cite journalbook|last1=Brandt|first1=Joel|last2=Guo|first2=Philip|last3=Lewenstein|first3=Joel|last4=Dontcheva|first4=Mira|last5=Klemmer|first5=Scott|title=Two studies of opportunistic programming: interleaving web foraging, learning, and writing code|journal=Proceedings of the SIGCHI Conference on Human Factors in Computing Systems|date=2009|pages=1589–1598|doi=10.1145/1518701.1518944|isbn=9781605582467}}</ref>
 
To develop software quickly programmers often mash up various existing systems. As part of this process, programmers must often search for suitable components and learn new skills, thus they began using the web for this purpose.
Line 16:
==Benefits==
Some of the benefits of example-centric programming include:
*Prevention of usage errors <ref name=codelets>{{cite journalbook|last1=Oney|first1=Stephen|last2=Brandt|first2=Joel|title=Codelets: linking interactive documentation and example code in the editor|journal=Proceedings of the SIGCHI Conference on Human Factors in Computing Systems|date=2012|pages=2697–2706|doi=10.1145/2207676.2208664|isbn=9781450310154}}</ref><ref name=codex>{{cite journalbook|last1=Fast|first1=Ethan|last2=Steffee|first2=Daniel|last3=Wang|first3=Lucy|last4=Brandt|first4=Joel|last5=Bernstein|first5=Michael|title=Emergent, crowd-scale programming practice in the IDE|journal=Proceedings of the SIGCHI Conference on Human Factors in Computing Systems|date=2014|pages=2491–2500|doi=10.1145/2556288.2556998|isbn=9781450324731|citeseerx=10.1.1.645.4136}}</ref>
*Reduction of time searching for code examples <ref name="blueprint" /><ref name="redprint" />
*Reduction of time searching for API documentation <ref name="redprint" />
Line 25:
Emergence can be defined as a process whereby larger entities, patterns, and regularities arise through interactions among smaller or simpler entities that themselves do not exhibit such properties. The extensive amount of code publicly available on the web can be used to find this type of patterns and regularities. By modeling how developers use programming languages in practices, algorithms for finding common idioms and detecting unlikely code can be created.<ref name="codex" />
 
This process is limited to the amount of code that programmers are willing and able to share. Because people write more code than they share online there is a lot of duplicated effort. To fully use the power of the crowd, the effort required to publish code online should be reduced.<ref name=ditty>{{cite journalbook|last1=Lieber|first1=Thomas|last2=Miller|first2=Rob|title=Programming with everybody: tightening the copy-modify-publish feedback loop|journal=Adjunct proceedingsProceedings of the 25th annualAnnual ACM symposiumSymposium on User interfaceInterface softwareSoftware and technologyTechnology|pages=101–102|doi=10.1145/2380296.2380342|year=2012|isbn=9781450315821}}</ref>
 
==Examples==
Line 36:
 
;Redprint <ref name="redprint" />
Redprint is a browser-based development environment for [[PHP]] that integrates API specific "instant example" and "instant documentation" display interfaces. The prototype IDE was developed by [[Anant Bhardwaj]], then at [[Stanford University]] on the premise that task-specific example interfaces leave programmers having to understand the example code that has been found, and thus Redprint also includes an API specific search interface.<ref name="redprint">{{cite journalbook|last1=Bhardwaj|first1=Anant|last2=Luciano|first2=Date|last3=Klemmer|first3=Scott|title=Redprint: integrating API specific "instant example" and "instant documentation" display interface in IDEs|journal=Proceedings of the 24th annualAnnual ACM symposiumSymposium adjunctAdjunct on User interfaceInterface softwareSoftware and technologyTechnology|date=2011|pages=21–22|doi=10.1145/2046396.2046408|urlisbn=http://dl.acm.org/citation.cfm?id=20464089781450310147}}</ref> The API specific search interface searches for relevant API specific examples and documentation.
 
;Codex <ref name="codex" />