Entwickler verbringen einen großen Teil ihres Arbeitsalltags mit dem Schreiben von Code. Automatische Textvervollständigung ist mittlerweile ein Standard, an den wir uns gewöhnt haben. Sowohl unsere Smartphones als auch unsere Mailprogramme bieten intelligente Vorschläge für das nächste Wort, das wir schreiben. Code schreiben Entwickler aber immer noch zu einem großen Teil komplett selbst.
Nur wenige nutzen bisher Tools zur automatischen Code-Vervollständigung, von bekannten Extensions wie Intellicode für Microsofts Visual Studio Code einmal abgesehen. Die Intellicode-Erweiterung für Visual Studio Code stellt KI-gestützte Intellisense-Vorschläge für Python, Java, TypeScript und JavaScript bereit. Intellisense sagt mithilfe künstlicher Intelligenz die API voraus, die ein Entwickler mit der größten Wahrscheinlichkeit verwenden will. Dafür verwendet sie den aktuellen Codekontext und orientiert sich am Programmierstil des Entwicklers, so die Doku.
Da tut sich was
Seit September verfügt Googles Dart-Software-Development-Kit über ein Feature namens ML Complete, eine KI-basierte Code-Vervollständigung für Dart. Während das Tool das erste smarte Auto-Completion-Tool aus dem Hause Google ist, entwickelt Kite, ein Startup aus San Francisco, seit 2014 ein ganz ähnliches Tool für die automatische Vervollständigung von Python-Code. Außerdem hatte im vergangenen Jahr ein weiteres Projekt für Aufsehen gesorgt: Tabnine ist eine automatische Vervollständigung für Python, JavaScript, Java, C++, C, PHP und einige weitere Sprachen.
Das studentische Projekt Deep Tabnine
Entwickelt wurde Tabnine von Jacob Jackson, einem kanadischen Informatikstudenten. Tabnine basiert auf Open AIs GPT-2, einem Deep-Learning-Language-Modell, das ursprünglich für die automatische Vervollständigung natürlicher Sprache gedacht war. In natürlicher Sprache ist der Kontext eines Worts lokal definiert. Um die Bedeutung eines Wortes zu verstehen, würde sich ein NLP-Modell dementsprechend auf vorherige Wörter beziehen. Um Code zu verstehen, bräuchte ein Modell jedoch Zugriff auf nicht-lokale Informationen. Trainiert wurde das Modell mithilfe von Code-Dateien von GitHub. Alle Vorschläge, die Deep Tabnine generiert, basieren auf daraus abgeleiteten Mustern. Damit ist das Tool vor allem hilfreich fürs Schreiben von allgemein viel genutzten Codestrukturen.
Kite – das Startup aus San Francisco
Kite gibt es momentan ausschließlich für Python. Von Anfang an sei klar gewesen, dass man das Tool auf eine dynamisch typisierte Sprache münzen wollte. Diese seien schwieriger zu analysieren und die dafür derzeit noch verfügbaren Tools seien immer noch nicht so ausgereift wie jene für statisch typisierte Sprachen wie zum Beispiel C.
Python machte in der Entscheidung schließlich das Rennen gegen JavaScript – einfach weil Pythons Ökosystem nicht ganz so groß ist, so Adam Smith, der CEO des Startups, gegenüber t3n. Zum Zeitpunkt der Entscheidung habe sich das noch nicht in diesem Maße abgezeichnet, seitdem sei die Nutzerbasis der fast 30 Jahre alten Sprache aber kontinuierlich weitergewachsen. Das komme Kite natürlich entgegen.
Noch befinde sich die semantische Code-Vervollständigung jedoch in den Kinderschuhen – sie funktioniere ähnlich gut wie die semantische Websuche in ihrer Anfangszeit. Wie lange es dauere, bis die Vorschläge von Kite vergleichbar mit dem heutigen Stand der semantischen Websuche sein werden, sei nicht absehbar, so Smith.
Kite mache nicht lediglich Vorschläge basierend auf vorhergehendem Code oder auf Basis von Trainingsdatensätzen, sondern beziehe die Bedeutung des Codes innerhalb einer Codebase mit ein, so Smith weiter. Ähnlich wie die semantische Websuche von vorhergehenden Ergebnissen lernt und Verbindungen zwischen Entitäten herstellen kann, beziehe Kite bei den Vorschlägen die gesamte Codebase ein, um möglichst sinnvolle Vorschläge zu generieren. So könne das Tool sogenannte intelligente Snippets bereitstellen – größere Codeteile, in denen der Nutzer dann nur noch Variablen- und Funktionsnamen ergänzen muss.
Auch cool: Außer der Code-Vervollständigungsfunktionalität bietet Kite eine Copilot-Desktop-App, die es ermöglicht, Python-Docs via Mouse-Hover oder Klick direkt aufzurufen, auch ohne Internetverbindung.
Auf Deep Tabnine angesprochen, bezeichnet Smith das Projekt als „sehr beeindruckend“ – er sei mit dem Entwickler dahinter auch bekannt und schon gespannt auf dessen weiteren Werdegang und die Weiterentwicklung des Tools.
Kite ist gratis und angeblich genauer, Tabnine unterstützt dafür 23 Sprachen
Der prominenteste Unterschied zwischen Tabnine und Kite ist die Beschränkung Kites auf eine Sprache, während Tabnine mittlerweile 23 verschiedene unterstützt. Für Python-Entwickler, die eine versuchsweise Verwendung eines der Tools in Erwägung ziehen, dürfte die Wahl wahrscheinlich aber auf Kite fallen – Kite ist gratis, für die Verwendung von Tabnine fällt jährlich ein Subscription-Beitrag an. Laut eines von Kite selbst durchgeführten Vergleichs sind die Vorschläge von Kite außerdem sehr viel präziser. Auch in Tabnine gibt es allerdings ein Feature namens Semantic Completion. Damit kombiniert Jacksons Tool Deep Learning mit semantischer Vervollständigung. Tabnine ist laut der Gegenüberstellung zudem sehr speicherintensiv und hat eine höhere Latenz als Kite.
Wer eines oder beide Tools nutzt – wir freuen uns, wenn ihr Lust habt, über eure Erfahrungen damit zu berichten.
Vielleicht auch spannend für dich: