Revolution in der Programmierung:
Wie GitHub Copilot die Softwareentwicklung transformiert
Seit der Einführung von ChatGPT3 im November 2022 hat generative KI im Mainstream Einzug gehalten. Künstliche Intelligenz zeichnet sich in Umgebungen aus, in denen Muster und Regelmäßigkeiten vorherrschen, was sie für den Bereich der Programmierung besonders geeignet macht. Diese Eignung ergibt sich aus der Kernkompetenz der KI, Muster zu erkennen und daraus zu lernen.
Mittlerweile geht KI-Programmierunterstützung weit darüber hinaus, bestehenden Code in das Chat-Fenster von Large Language Models (wie ChatGPT, Gemini, Claude3, …) zu kopieren. Es gibt Tools, die direkt in die Entwicklungsumgebungen integriert sind und einen Workflow ermöglichen, bei dem man die Entwicklungsumgebung nicht verlassen muss. In diesem Blog-Beitrag möchten wir einen der Key-Player am Markt vorstellen: GitHub Copilot.
Tim Küllmey, Consultant Data Management
GitHub Copilot – ein Überblick
GitHub Copilot [1] dient als KI-gesteuerte Suchmaschine, die natürliche Spracheingaben in fertigen Code übersetzt. Dieses Tool, basierend auf OpenAI’s Codex (ein Modell speziell für Programmierung), lernt aus Milliarden von Codezeilen, die in GitHub Repositories gespeichert sind. Es beherrscht dutzende Programmiersprachen und verwendet Wahrscheinlichkeiten, um den kontextspezifisch besten Code vorzuschlagen.
GitHub Copilot zeigt seine Stärken besonders bei repetitiven Aufgaben, indem es Entwicklern hilft, sich auf komplexere Probleme zu konzentrieren. Es passt sich dem Stil und den Konventionen des aktuellen Projekts an, wobei Entwickler zwischen verschiedenen Vorschlägen wählen und diese anpassen können. Die Integration erfolgt nahtlos in Entwicklungsumgebungen wie Visual Studio und VS Code, was die Produktivität erhöht und alltägliche Entwicklungsprozesse vereinfacht. Obwohl Copilot mit der Zeit immer besser wird und breit genutzt wird (27% aller GitHub-Entwickler nutzen es, in manchen Sprachen sind es sogar über 40%), bleibt es ein Assistenzsystem. Aktuell ist es nicht möglich, komplette Projekte von GitHub Copilot automatisch programmieren zu lassen, sondern man kann sich konzeptionelle Beratung einholen, einzelne Funktionalitäten programmieren lassen, bestehenden Code verbessern lassen und man kann es zum gezielten Debuggen von Fehlern nutzen. Eine weitere große Stärke ist die Möglichkeit, sich bestehenden Programmcode erläutern zu lassen. Das erleichtert den Einstieg in eine neue Codebase erheblich. Mit diesen Erklärungen kann der Code schnell und ohne viele Nachfragen bei Kollegen verstanden werden. GitHub Copilot ist kostenpflichtig, mit verschiedenen Abonnements für private und professionelle Nutzung, wobei eine kostenlose Testversion angeboten wird. [2]
Für einen kurzen Überblick wie GitHub Copilot in der Praxis verwendet wird empfehlen wir folgendes Youtube Video von den VSC Code Entwicklern.
Vorteile
- Verbesserte Effizienz beim Kodieren:
GitHub Copilot schlägt während des Tippens zum Kontext passende Codeblöcke vor, was den Kodierungsprozess erheblich beschleunigt, insbesondere bei sich wiederholenden Aufgaben. - Fokus auf konzeptionelle Ebene:
Indem routinemäßige Kodierungsaufgaben übernommen werden, können sich Entwickler auf komplexere, übergreifende und kreativere Aspekte ihrer Projekte konzentrieren. - Verbesserte Effizienz beim Debuggen:
Copilot kann helfen Fehlermeldungen zu verstehen und den Bug im Code zu lokalisieren und direkt einen entsprechenden Fix vorzuschlagen. - Bildungswerkzeug:
Neue Entwickler können bestehenden Code analysieren lassen, was die Einarbeitungszeit in neue Sprachen und Frameworks erleichtern kann.
Nachteile
- Potenzielle Fehler:
Der von der KI generierte Code ist nicht unfehlbar und kann Fehler oder Bugs einführen, die der Entwickler erkennen und korrigieren muss. - Verminderte Auseinandersetzung mit detaillierter Code-Logik:
Eine starke Abhängigkeit von der KI für das Kodieren kann dazu führen, dass sich Entwickler weniger mit der zugrunde liegenden Logik des generierten Codes beschäftigen. - Abhängigkeit von einer Internetverbindung:
Copilot benötigt eine aktive Internetverbindung, um zu funktionieren, was in Umgebungen mit schlechter Konnektivität eine Einschränkung sein kann. - Datensicherheit:
Man muss GitHub und OpenAI vertrauen, dass der Code nur analysiert, aber nicht für deren Trainingsdaten gespeichert wird.
Studien zur Produktivität und Codequalität
Eine spannende Frage, die sich stellt, ist, in welchem Ausmaß GitHub Copilot die Produktivität steigert. Eine gemeinsame Studie aus dem Jahre 2022 von GitHub und dem MIT (Massachusetts Institute of Technology) hat untersucht, wie viel schneller Entwickler einen HTTP-Server in JavaScript implementieren, wenn sie GitHub Copilot nutzen. Das Ergebnis ist, dass der Einsatz von GitHub Copilot die Zeit zur Lösung der Aufgabe um 56% reduziert hat. [3] Weitere interessante Erkenntnisse sind, dass besonders Programmieranfänger und ältere Programmierer ihre Produktivität mittels GitHub Copilot steigern konnten.
Eine andere Studie aus 2023 hat die Code-Qualität von generiertem Code untersucht. Dazu wurde das HumanEval Dataset verwendet. Das HumanEval Dataset ist eine Sammlung von Programmieraufgaben, die zur Bewertung von Code-Synthesemodellen in KI-gestützten Codierungswerkzeugen verwendet wird. Es enthält eine Vielzahl von Problemen, bei denen Funktionen basierend auf einer Beschreibung und einer Funktionsunterschrift implementiert werden sollen. Die Autoren beobachteten, dass GitHub Copilot für 46,3% der Probleme den korrekten Code erzeugen konnte, während es bei 30,5% der Probleme nicht in der Lage war eine korrekte Lösung bereitzustellen. Die generierten Lösungen für die verbleibenden 23,2% der Probleme waren teilweise korrekt. [4]
Aktuell ist die Anzahl an Studien zu KI-Programmierassistenz noch sehr eingeschränkt. Aber die ersten Ergebnisse für GitHub Copilot zeigen eindeutig, dass AI-Tools in der Entwicklung zu massiven Produktivitätsgewinnen führen. Allerdings ist das Zusammenspiel mit dem Entwickler entscheidend, da nur in knapp der Hälfte der Fälle vollständig korrekter Code erzeugt wird. Das heißt, in den meisten Fällen ist weiterer User-Input nötig, um funktionalen Code zu erzeugen.
Persönliche Erfahrung
Aus meiner persönlichen Erfahrung hat die Verwendung von GitHub Copilot meine Herangehensweise an Programmierprojekte verändert. Ich nutze GitHub Copilot in allen Stadien meiner Arbeit. Zunächst lasse ich mich bei der Erstellung der generellen Programmstruktur unterstützen, indem ich den Anwendungsfall beschreibe. Dann lasse ich mir einzelne Funktionen generieren. Kommt es zu Fehlern, kopiere ich die Fehlermeldungen zu GitHub Copilot und lasse mich beim Debuggen unterstützen. Die Verwendung von GitHub Copilot fühlt sich an, als hätte man einen erfahrenen Entwickler neben sich sitzen, der sofort Ratschläge und Beispiele anbietet und hat bei mir zu einer deutlich erhöhten Produktivität geführt.
Einführung in das Tutorial
Für diejenigen, die daran interessiert sind, GitHub Copilot in ihren Entwicklungsworkflow zu integrieren, habe ich ein ca. 60-minütiges Tutorial erstellt. Es zeigt an einem einfachen Beispiel, wie man GitHub Copilot effizient einsetzt. Ob Sie ein Anfänger sind, der KI-unterstütztes Programmieren verstehen möchte, oder ein erfahrener Entwickler, der seine Produktivität steigern möchte, dieses Tutorial bietet Ihnen Hands-on-Erfahrung, die Sie danach in eigenen Projekten vertiefen können. Voraussetzung für das Tutorial ist, dass man die Grundkonzepte der Programmierung (z.B. was ist eine Funktion, wie verbinde ich verschiedene Funktionen, was ist Python?) versteht. Ich ermutige Sie, dieses Tutorial zu besuchen, um die Möglichkeiten von GitHub Copilot kennenzulernen.
Zusammenfassung und Ausblick
GitHub Copilot hat sich als wertvolles Werkzeug für Entwickler etabliert, das nicht nur die Programmierung beschleunigt, sondern auch den Einstieg in neue Projekte erleichtert. Die KI-gesteuerte Plattform unterstützt sowohl Anfänger als auch erfahrene Entwickler bei der Code-Erstellung und beim Debugging, indem sie intelligente Vorschläge macht und auf Basis von Millionen von Codezeilen lernt. Trotz einiger Herausforderungen, wie der Abhängigkeit von einer Internetverbindung und Datenschutzbedenken, zeigt die Resonanz in der Entwicklergemeinde, dass die Vorteile die Nachteile überwiegen.
GitHub Copilot stellt nur die Spitze des Eisbergs bei KI-unterstütztem Programmieren dar. Mit laufenden Entwicklungen können wir noch ausgefeiltere Werkzeuge erwarten, die den Entwicklungsprozess weiter vereinfachen werden. Gleichzeit scheint es aber auch noch ein weiter Weg, bis die Programmierung vollständig autonom geschehen kann, der menschliche Input zu Steuerung des Prozesses ist noch immer essenziell.