Knowledge

Example-centric programming

Source đź“ť

50:. Tutorials are available on the web in seconds thus broadening the space of who writes it: designers, scientists, or hobbyists. By 2012 13 million program as a part of their job, yet only three million of those are actual professional programmers. Prevalence of online code repositories, documentation, blogs and forums—enables programmers to build applications iteratively searching for, modifying, and combining examples. 69:
Example-centric programming tries to solve the issue of having to get out of the development environment to look for references and examples while programming. For instance, traditionally, to find API documentation and sample code, programmers will either visit the language reference website or go to
132:
that automatically augments queries with code context, presents a code-centric view of search results, embeds the search experience into the editor, and retains a link between copied code and its source. It is designed to help programmers with web searches and allow them to easily remember forgotten
247:
UpCodeIn is a source code search engine that allows developers to find and reuse software components from the Internet. A unique feature of UpCodeIn compared to other source code search engines is its ability to find code for syntax element, for example you can find methods with specific parameter
110:
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
31:
documentation related to coding behaviors occurring in the IDE. “Borrow” tactics are often employed from online sources, by programmers leaving the IDE to troubleshoot. The purpose of example-centric programming is to reduce the time spent by developers searching online. Ideally, in example-centric
36:
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. The usage of this feature is not limited to experts, as some novices reap the benefits of an integrated knowledge base,
65:
When developing software programmers spend 19% of their programming time on the web. Individuals use the web to accomplish several different kinds of activities. The intentions behind web use vary in form and time spent. Programmers spend most of the time learning a new concept, the least time is
179:
Codex uses statistical linting to find poorly written code, or code which is syntactically different from well written code, and warn the user, pattern annotation to automatically discover common programming idioms and annotate them with metadata using crowdsourcing, and library generation to
159:
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. The API specific search interface searches for relevant API specific examples and documentation.
114:
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.
53:
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
45:
The growth of the web has fundamentally changed the way software is built. Vast increase in information resources and the democratization of access and distribution are main factors in the development of example-centric programming for
61:
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.
74:
for just-in-time learning. Additionally, programmers deliberately choose not to remember complicated syntax and instead use the web as an external memory that can be accessed when needed.
176:
data from developers and searches all code, looking for patterns, that way if someone is coding in a strange way, Codex lets them know that they are doing something wrong.
111:
and regularities. By modeling how developers use programming languages in practices, algorithms for finding common idioms and detecting unlikely code can be created.
231:. Codota ranks these examples by criteria such as commonality of the coding patterns, credibility of the origin and clarity of the code. The Codota plugin for the 262: 200:
developed by a team made of people from Visual Studio, Bing and Microsoft Research that allows developers to search code examples and documentation from
23:
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
641: 505:
Fast, Ethan; Steffee, Daniel; Wang, Lucy; Brandt, Joel; Bernstein, Michael (2014). "Emergent, crowd-scale programming practice in the IDE".
66:
spent reminding themselves of details of a concept they already know, and in between they use the web to clarify their existing knowledge.
626: 188:
A codelet is a block of example code an interactive helper widget that assists the user in understanding and integrating the example.
24: 573: 532: 476: 432: 384: 332: 598: 151:
that integrates API specific "instant example" and "instant documentation" display interfaces. The prototype IDE was developed by
415:
Brandt, Joel; Guo, Philip; Lewenstein, Joel; Dontcheva, Mira; Klemmer, Scott (2009). "Two studies of opportunistic programming".
248:
type, annotation, variables. UpCodeIn understand syntax of many programming languages like Java, JavaScript, Python and C#.
646: 220: 169: 651: 239:
IDEs allows developers to get code examples for using Java and android APIs without having to leave their editor.
136:
It displays results from a varied set of web pages enabling users to browse and evaluate search results rapidly.
656: 139:
Blueprint is task-specific, meaning that it will specifically search for examples in the programming language.
197: 510: 272: 201: 55: 47: 20: 515: 156: 129: 70:
search engines and make API specific queries. When trying to learn something new, programmers use
579: 538: 482: 438: 390: 338: 211:
Bing Code Search gathers its code samples from MSDN, StackOverflow, Dotnetperls and CSharp411.
569: 558:
Adjunct proceedings of the 25th annual ACM symposium on User interface software and technology
528: 472: 428: 380: 369:
Proceedings of the 24th annual ACM symposium adjunct on User interface software and technology
328: 561: 520: 464: 420: 372: 320: 312: 267: 236: 152: 33: 635: 282: 277: 232: 228: 173: 394: 342: 583: 542: 486: 442: 205: 223:
code examples by analyzing millions of code snippets available on sites such as
565: 524: 468: 424: 376: 324: 257: 105: 507:
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
461:
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
417:
Proceedings of the SIGCHI Conference on Human Factors in Computing Systems
180:
construct a utility package that encapsulates emergent software practice.
71: 95:
Clarification of existing knowledge and reminding of forgotten details
224: 367:
Bhardwaj, Anant; Luciano, Date; Klemmer, Scott (2011). "Redprint".
556:
Lieber, Thomas; Miller, Rob (2012). "Programming with everybody".
315:; Dove, Andrew; Myers, Brad (2012). "SIG: End-user programming". 317:
CHI '12 Extended Abstracts on Human Factors in Computing Systems
148: 28: 82:
Some of the benefits of example-centric programming include:
168:
Codex is a knowledge base that records common practices for
147:
Redprint is a browser-based development environment for
37:
without resorting to frequent web searches or browsing.
92:Reduction of time searching for API documentation 459:Oney, Stephen; Brandt, Joel (2012). "Codelets". 89:Reduction of time searching for code examples 8: 306: 304: 302: 300: 298: 454: 452: 410: 408: 406: 404: 362: 360: 358: 356: 354: 352: 514: 263:List of human–computer interaction topics 133:details and clarify existing knowledge. 500: 498: 496: 294: 599:"Introducing Bing Code Search for C#" 311:Scaffidi, Christopher; Brandt, Joel; 219:Codota helps developers find typical 7: 196:Bing Code Search is an extension to 25:integrated development environment 14: 597:Shiban, Ala (17 February 2014). 27:(IDE) to show code examples or 1: 86:Prevention of usage errors 17:Example-centric programming 673: 642:Human–computer interaction 128:Blueprint is a plugin for 103: 58:, ideate, and discover. 566:10.1145/2380296.2380342 525:10.1145/2556288.2556998 469:10.1145/2207676.2208664 425:10.1145/1518701.1518944 377:10.1145/2046396.2046408 325:10.1145/2212776.2212421 198:Microsoft Visual Studio 509:. pp. 2491–2500. 463:. pp. 2697–2706. 419:. pp. 1589–1598. 319:. pp. 1193–1996. 273:User experience design 647:Computer programming 560:. pp. 101–102. 100:Emergent programming 48:end-user development 21:software development 157:Stanford University 130:Adobe Flash Builder 371:. pp. 21–22. 19:is an approach to 652:Software features 313:Burnett, Margaret 192:Bing Code Search 32:programming, the 664: 627:Joel Brandt Talk 614: 613: 611: 609: 594: 588: 587: 553: 547: 546: 518: 502: 491: 490: 456: 447: 446: 412: 399: 398: 364: 347: 346: 308: 672: 671: 667: 666: 665: 663: 662: 661: 657:Software design 632: 631: 623: 618: 617: 607: 605: 596: 595: 591: 576: 555: 554: 550: 535: 516:10.1.1.645.4136 504: 503: 494: 479: 458: 457: 450: 435: 414: 413: 402: 387: 366: 365: 350: 335: 310: 309: 296: 291: 268:User experience 254: 121: 108: 102: 80: 43: 12: 11: 5: 670: 668: 660: 659: 654: 649: 644: 634: 633: 630: 629: 622: 621:External links 619: 616: 615: 603:blogs.msdn.com 589: 574: 548: 533: 492: 477: 448: 433: 400: 385: 348: 333: 293: 292: 290: 287: 286: 285: 280: 275: 270: 265: 260: 253: 250: 245: 244: 237:Android Studio 217: 216: 204:directly from 194: 193: 186: 185: 166: 165: 153:Anant Bhardwaj 145: 144: 126: 125: 120: 117: 101: 98: 97: 96: 93: 90: 87: 79: 76: 42: 39: 34:user interface 13: 10: 9: 6: 4: 3: 2: 669: 658: 655: 653: 650: 648: 645: 643: 640: 639: 637: 628: 625: 624: 620: 604: 600: 593: 590: 585: 581: 577: 575:9781450315821 571: 567: 563: 559: 552: 549: 544: 540: 536: 534:9781450324731 530: 526: 522: 517: 512: 508: 501: 499: 497: 493: 488: 484: 480: 478:9781450310154 474: 470: 466: 462: 455: 453: 449: 444: 440: 436: 434:9781605582467 430: 426: 422: 418: 411: 409: 407: 405: 401: 396: 392: 388: 386:9781450310147 382: 378: 374: 370: 363: 361: 359: 357: 355: 353: 349: 344: 340: 336: 334:9781450310161 330: 326: 322: 318: 314: 307: 305: 303: 301: 299: 295: 288: 284: 283:Crowdsourcing 281: 279: 278:Web usability 276: 274: 271: 269: 266: 264: 261: 259: 256: 255: 251: 249: 242: 241: 240: 238: 234: 233:IntelliJ IDEA 230: 229:StackOverflow 226: 222: 214: 213: 212: 209: 207: 203: 199: 191: 190: 189: 183: 182: 181: 177: 175: 171: 163: 162: 161: 158: 154: 150: 142: 141: 140: 137: 134: 131: 123: 122: 118: 116: 112: 107: 99: 94: 91: 88: 85: 84: 83: 77: 75: 73: 72:web tutorials 67: 63: 59: 57: 51: 49: 40: 38: 35: 30: 26: 22: 18: 606:. Retrieved 602: 592: 557: 551: 506: 460: 416: 368: 316: 246: 218: 210: 206:IntelliSense 195: 187: 178: 174:crowdsourced 167: 146: 138: 135: 127: 113: 109: 81: 68: 64: 60: 52: 44: 16: 15: 636:Categories 608:8 December 289:References 155:, then at 124:Blueprint 104:See also: 41:Background 511:CiteSeerX 258:Emergence 143:Redprint 106:Emergence 56:prototype 395:23031454 343:17748945 252:See also 243:UpCodeIn 184:Codelets 119:Examples 78:Benefits 584:1319863 543:2840903 487:9811795 443:2907348 172:. Uses 582:  572:  541:  531:  513:  485:  475:  441:  431:  393:  383:  341:  331:  225:GitHub 215:Codota 164:Codex 580:S2CID 539:S2CID 483:S2CID 439:S2CID 391:S2CID 339:S2CID 610:2014 570:ISBN 529:ISBN 473:ISBN 429:ISBN 381:ISBN 329:ISBN 235:and 227:and 221:Java 202:Bing 170:Ruby 562:doi 521:doi 465:doi 421:doi 373:doi 321:doi 149:PHP 29:API 638:: 601:. 578:. 568:. 537:. 527:. 519:. 495:^ 481:. 471:. 451:^ 437:. 427:. 403:^ 389:. 379:. 351:^ 337:. 327:. 297:^ 208:. 612:. 586:. 564:: 545:. 523:: 489:. 467:: 445:. 423:: 397:. 375:: 345:. 323::

Index

software development
integrated development environment
API
user interface
end-user development
prototype
web tutorials
Emergence
Adobe Flash Builder
PHP
Anant Bhardwaj
Stanford University
Ruby
crowdsourced
Microsoft Visual Studio
Bing
IntelliSense
Java
GitHub
StackOverflow
IntelliJ IDEA
Android Studio
Emergence
List of human–computer interaction topics
User experience
User experience design
Web usability
Crowdsourcing

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.

↑