Programmieren und KI: Künstliche Intelligenz in der Softwareentwicklung

Seite 5: Fazit

Inhaltsverzeichnis

Sorgen, dass die KI menschliche Softwareentwickler bald überflüssig machen wird, muss man sich wohl nicht machen. Der Weg zu einer KI, die für beliebige Programmieraufgaben zuverlässig Code hoher Qualität generiert, ist noch weit. In spezialisierten Bereichen leistet die KI-basierte Codegenerierung aber heute schon Erstaunliches. Die Programmsynthese aus logischen Spezifikationen ist insbesondere dann sinnvoll, wenn es um Anwendungen geht, bei denen Programmierfehler teuer oder gefährlich sind, etwa im Bereich der cyber-physischen Systeme.

Die Codegenerierung aus Beispielen mit SyGuS skaliert noch nicht bis zum Entwickeln vollständiger Applikationen, kann aber das Erstellen kniffliger Programmstücke wie SQL-Abfragen vereinfachen. Die Codesynthese aus Sprachmodellen schließlich kann noch nicht mit den Qualitätsansprüchen der klassischen Methoden mithalten, ist aber gerade im schnellen Prototyping oft verblüffend kreativ. Der Einsatz in Designtools und Low-Code-Entwicklungsplattformen ist erfolgversprechend.

Für die Forschung besteht die Herausforderung jetzt darin, die Erfolge der Sprachmodelle bei der Verarbeitung natürlicher Sprache auf die Programmiersprachen mit ihrer sehr viel präziseren Semantik zu übertragen. Welches Potenzial in diesem Weg steckt, lässt der Erfolg des etablierten Code-Completion-Werkzeugs Tabnine erahnen. Genau wie der GitHub Copilot macht Tabnine Programmierern während des Editierens Vorschläge, wie die Codezeile weitergehen könnte. Tabnine setzt auf GPT-2 auf, dem Vorgänger von GPT-3. Das Tool trainiert auf Millionen von Open-Source-Programmen und zusätzlich auf der individuellen Codebasis des Programmierers. Tabnine "kennt" dadurch nicht nur die Syntax verschiedenster Programmiersprachen, sondern auch gängige Ausdrücke, typische Variablennamen und die richtige Verwendung von Bibliotheken.

Künftig sollte es möglich sein, die einfache Benutzbarkeit und das Hintergrundwissen der Sprachmodelle mit der mathematischen Präzision der Programmsynthese aus logischen Spezifikationen zu verbinden. Hybride Algorithmen, die Deep Learning mit klassischen Methoden der Logik kombinieren, könnten helfen, die komplexe Codesynthese aus logischen Spezifikationen besser in den Griff zu bekommen. Darüber hinaus könnten Sprachmodelle Nutzer beim Entwerfen und Verstehen der logischen Spezifikationen unterstützen. Denn selbst wenn die KI dem Menschen irgendwann einmal das Programmieren komplett abnehmen sollte, muss man ihr immer noch sagen, welche Funktion die Software nun eigentlich erbringen soll.

Prof. Dr. Bernd Finkbeiner lehrt Informatik an der Universität des Saarlandes und forscht im Bereich automatischer Methoden für die Programmverifikation und -synthese am CISPA Helmholtz-Zentrum für Informationssicherheit in Saarbrücken.

Frederik Schmitt promoviert im Bereich Deep Learning und Programmsynthese an der Universität des Saarlandes und arbeitet als wissenschaftlicher Mitarbeiter am CISPA Helmholtz-Zentrum für Informationssicherheit in Saarbrücken.

(nb)