Beispielzentrierte Programmierung ist ein Ansatz in der Softwareentwicklung , der es Nutzern ermöglicht, Software zu erstellen, indem sie kleine Beispiele finden und zu einem größeren Ganzen zusammenfügen. Unterstützt wird dieser Ansatz durch Tools, die es einer integrierten Entwicklungsumgebung (IDE) ermöglichen, Codebeispiele oder API- Dokumentation zu den in der IDE auftretenden Codierungsvorgängen anzuzeigen . Programmierer, die die IDE verlassen, um Fehler zu beheben, greifen häufig auf Online-Quellen zurück. [ 1 ] Ziel der beispielzentrierten Programmierung ist es, den Zeitaufwand für die Online-Suche zu reduzieren. Idealerweise integriert die Benutzeroberfläche in der beispielzentrierten Programmierung Hilfebeispiele, sodass Programmierer die IDE nicht verlassen müssen. Diese Art von „Sofortdokumentation“ soll Programmierunterbrechungen minimieren. [ 2 ] Nicht nur Experten profitieren von dieser Funktion; auch Anfänger nutzen die Vorteile einer integrierten Wissensdatenbank, ohne häufig im Internet suchen zu müssen. [ 1 ]
Hintergrund
Das Wachstum des Internets hat die Softwareentwicklung grundlegend verändert. Der enorme Zuwachs an Informationsressourcen und die Demokratisierung des Zugangs und der Verbreitung sind Hauptfaktoren für die Entwicklung beispielzentrierter Programmierung für Endanwender . Tutorials sind innerhalb von Sekunden im Internet verfügbar und erweitern so den Kreis derer, die sie schreiben: Designer, Wissenschaftler oder Hobbyprogrammierer. Im Jahr 2012 programmierten 13 Millionen Menschen beruflich, doch nur drei Millionen davon waren tatsächlich professionelle Programmierer. Die Verbreitung von Online-Code-Repositories, Dokumentationen, Blogs und Foren ermöglicht es Programmierern, Anwendungen iterativ zu entwickeln, indem sie Beispiele suchen, modifizieren und kombinieren.
Die Nutzung des Internets ist integraler Bestandteil eines opportunistischen Programmieransatzes, bei dem die Entwicklungsgeschwindigkeit und -freundlichkeit Vorrang vor der Robustheit und Wartbarkeit des Codes haben. Programmierer aller Erfahrungsstufen, ob Anfänger oder Experten, nutzen das Internet häufig, um Prototypen zu erstellen , Ideen zu entwickeln und Neues zu entdecken. [ 3 ]
Um Software schnell zu entwickeln, kombinieren Programmierer oft verschiedene bestehende Systeme. Im Rahmen dieses Prozesses müssen sie häufig nach geeigneten Komponenten suchen und neue Fähigkeiten erlernen, weshalb sie begonnen haben, das Internet zu diesem Zweck zu nutzen.
Bei der Softwareentwicklung verbringen Programmierer 19 % ihrer Programmierzeit im Internet. [ 3 ] Nutzer verwenden das Internet für verschiedene Aktivitäten. Die Gründe für die Internetnutzung variieren hinsichtlich Art und Dauer. Programmierer verbringen die meiste Zeit damit, neue Konzepte zu erlernen, am wenigsten Zeit damit, sich Details bereits bekannter Konzepte in Erinnerung zu rufen, und nutzen das Internet zwischendurch, um ihr vorhandenes Wissen zu vertiefen. [ 3 ]
Beispielzentrierte Programmierung versucht, das Problem zu lösen, dass man während des Programmierens die Entwicklungsumgebung verlassen muss, um nach Referenzen und Beispielen zu suchen. Um beispielsweise API-Dokumentation und Beispielcode zu finden, besuchen Programmierer traditionell entweder die Website der Sprachreferenz oder verwenden Suchmaschinen und stellen API-spezifische Suchanfragen. [ 2 ] Beim Erlernen neuer Fähigkeiten nutzen Programmierer Web-Tutorials für bedarfsgerechtes Lernen. Darüber hinaus verzichten Programmierer bewusst darauf, sich komplizierte Syntax zu merken, und nutzen stattdessen das Web als externes Gedächtnis, auf das sie bei Bedarf zugreifen können. [ 3 ]
Vorteile
Zu den Vorteilen der beispielzentrierten Programmierung gehören unter anderem:
- Vermeidung von Anwendungsfehlern [ 4 ] [ 5 ]
- Reduzierung der Zeit für die Suche nach Codebeispielen [ 1 ] [ 2 ]
- Reduzierung des Zeitaufwands für die Suche nach API-Dokumentation [ 2 ]
- Klärung des vorhandenen Wissens und Erinnerung an vergessene Details [ 1 ]
Emergent Programming
Emergenz lässt sich als ein Prozess definieren, bei dem größere Einheiten, Muster und Regelmäßigkeiten durch Interaktionen zwischen kleineren oder einfacheren Einheiten entstehen, die selbst solche Eigenschaften nicht aufweisen. Die große Menge an öffentlich im Web verfügbarem Code kann genutzt werden, um diese Art von Mustern und Regelmäßigkeiten zu finden. Durch die Modellierung der Programmierpraxis von Entwicklern lassen sich Algorithmen zur Erkennung gängiger Idiome und ungewöhnlicher Codeformen entwickeln. [ 5 ]
Dieser Prozess ist durch die Menge an Code begrenzt, die Programmierer bereit und in der Lage sind zu teilen. Da mehr Code geschrieben als online geteilt wird, entsteht viel doppelte Arbeit. Um das Potenzial der Schwarmintelligenz voll auszuschöpfen, sollte der Aufwand für die Online-Veröffentlichung von Code reduziert werden. [ 6 ]
Beispiele
- Blaupause [ 1 ]
Blueprint ist ein Plugin für Adobe Flash Builder , das Suchanfragen automatisch mit Codekontext anreichert, eine codezentrierte Ansicht der Suchergebnisse bietet, die Suchfunktion in den Editor integriert und eine Verknüpfung zwischen kopiertem Code und dessen Quellcode beibehält. Es wurde entwickelt, um Programmierer bei der Websuche zu unterstützen und ihnen zu helfen, vergessene Details leichter wiederzuerkennen und vorhandenes Wissen zu festigen.
Es zeigt Ergebnisse aus einer Vielzahl von Webseiten an, sodass Benutzer Suchergebnisse schnell durchsuchen und auswerten können.
Blueprint ist aufgabenspezifisch, das heißt, es sucht gezielt nach Beispielen in der jeweiligen Programmiersprache.
- Redprint [ 2 ]
Redprint ist eine browserbasierte Entwicklungsumgebung für PHP mit integrierten API-spezifischen Anzeigeschnittstellen für „Sofortbeispiele“ und „Sofortdokumentation“. Die Prototyp-IDE wurde von Anant Bhardwaj , damals an der Stanford University, entwickelt . Seine Annahme war, dass aufgabenspezifische Beispielschnittstellen Programmierer dazu zwingen, den gefundenen Beispielcode zu verstehen. Daher bietet Redprint auch eine API-spezifische Suchschnittstelle. [ 2 ] Diese API-spezifische Suchschnittstelle findet relevante API-spezifische Beispiele und Dokumentationen.
- Codex [ 5 ]
Codex ist eine Wissensdatenbank, die gängige Best Practices für Ruby dokumentiert . Sie nutzt von Entwicklern beigesteuerte Daten und durchsucht den gesamten Code nach Mustern. Sollte jemand auf ungewöhnliche Weise programmieren, weist Codex ihn darauf hin, dass er etwas falsch macht.
Codex verwendet statistisches Linting, um schlecht geschriebenen Code oder Code, der sich syntaktisch von gut geschriebenem Code unterscheidet, zu finden und den Benutzer zu warnen, Musterannotation, um gängige Programmieridiome automatisch zu entdecken und sie mithilfe von Crowdsourcing mit Metadaten zu versehen, und Bibliotheksgenerierung, um ein Hilfspaket zu erstellen, das aufkommende Softwarepraktiken kapselt.
- Codelets [ 4 ]
Ein Codelet ist ein Block aus Beispielcode – ein interaktives Hilfs-Widget, das dem Benutzer hilft, das Beispiel zu verstehen und zu integrieren.
- Bing Codesuche [ 7 ]
Bing Code Search ist eine Erweiterung für Microsoft Visual Studio, die von einem Team aus Mitarbeitern von Visual Studio, Bing und Microsoft Research entwickelt wurde und es Entwicklern ermöglicht, Codebeispiele und Dokumentationen von Bing direkt aus IntelliSense heraus zu suchen .
Bing Code Search bezieht seine Codebeispiele von MSDN, StackOverflow, Dotnetperls und CSharp411.
- Codota
Codota unterstützt Entwickler bei der Suche nach typischen Java -Codebeispielen, indem es Millionen von Code-Snippets analysiert, die auf Plattformen wie GitHub und Stack Overflow verfügbar sind . Codota ordnet diese Beispiele nach Kriterien wie der Häufigkeit der Codierungsmuster, der Glaubwürdigkeit der Quelle und der Klarheit des Codes. Das Codota-Plugin für die IDEs IntelliJ IDEA und Android Studio ermöglicht es Entwicklern, Codebeispiele für die Verwendung von Java- und Android-APIs zu erhalten, ohne ihren Editor verlassen zu müssen.
- UpCodeIn
UpCodeIn ist eine Quellcode-Suchmaschine, mit der Entwickler Softwarekomponenten aus dem Internet finden und wiederverwenden können. Ein Alleinstellungsmerkmal von UpCodeIn im Vergleich zu anderen Quellcode-Suchmaschinen ist die Möglichkeit, Code anhand bestimmter Syntaxelemente zu finden. So lassen sich beispielsweise Methoden mit spezifischen Parametertypen, Annotationen oder Variablen finden. UpCodeIn unterstützt die Syntax vieler Programmiersprachen wie Java, JavaScript, Python und C#.
Siehe auch
- Entstehung
- Liste der Themen zur Mensch-Computer-Interaktion
- Nutzererfahrung
- Benutzererlebnisdesign
- Web-Usability
- Crowdsourcing
Referenzen
- Scaffidi , Christopher; Brandt, Joel; Burnett, Margaret ; Dove , Andrew ; Myers , Brad (2012). „SIG: End-user programming“. CHI '12 Extended Abstracts on Human Factors in Computing Systems . S. 1193–1996 . doi : 10.1145/ 2212776.2212421 . ISBN 9781450310161. S2CID 17748945 .
- ^ a b c d e f Bhardwaj, Anant; Luciano, Date; Klemmer, Scott (2011). „Redprint“. Proceedings of the 24th annual ACM symposium adjunct on User interface software and technology . pp. 21– 22. doi : 10.1145/2046396.2046408 . ISBN 9781450310147. S2CID 23031454 .
- ^ a b c d Brandt, Joel; Guo, Philip; Lewenstein, Joel; Dontcheva, Mira; Klemmer, Scott (2009). „Zwei Studien zum opportunistischen Programmieren“. Proceedings der SIGCHI-Konferenz über Mensch-Computer-Interaktion . S. 1589–1598 . doi : 10.1145/1518701.1518944 . ISBN 9781605582467S2CID 2907348 .
- Oney , Stephen; Brandt, Joel ( 2012). „Codelets“. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems . S. 2697–2706 . doi : 10.1145/2207676.2208664 . ISBN 9781450310154S2CID 9811795 .
- ^ a b c Fast, Ethan; Steffee, Daniel; Wang, Lucy; Brandt, Joel; Bernstein, Michael (2014). „Emergent, crowd-scale programming practice in the IDE“. Proceedings of the SIGCHI Conference on Human Factors in Computing Systems . S. 2491–2500 . CiteSeerX 10.1.1.645.4136 . doi : 10.1145/2556288.2556998 . ISBN 9781450324731. S2CID 2840903 .
- ^ Lieber, Thomas; Miller, Rob (2012). „Programmieren für alle“. Begleitender Tagungsband des 25. jährlichen ACM-Symposiums über Benutzerschnittstellensoftware und -technologie . S. 101–102 . doi : 10.1145/2380296.2380342 . ISBN 9781450315821. S2CID 1319863 .
- ^ Shiban, Ala (17. Februar 2014). „Einführung der Bing-Codesuche für C#“ . blogs.msdn.com . Abgerufen am 8. Dezember 2014 .