Vom Computer programmiert
ETH-Professor Martin Vechev automatisiert das Programmieren. Als einer der weltweit ersten Wissenschaftler bringt er Computer dazu, Software selbst zu schreiben. Er gehört zu den Begründern eines neuen Forschungsfeldes, das heute rasant wächst.
Computersoftware, die von Computern geschrieben wird: die Idee ist faszinierend. Und sie ist realistisch, sagt Martin Vechev, Professor für Informatik. Er gehört zu den Begründern eines neuen Forschungsfelds, in dem Computerwissenschaftler das Programmieren weitgehend automatisieren möchten. Bereits gibt es Hilfsprogramme, die Softwareentwicklern die Arbeit erleichtern. Und schon bald würden dank solcher Assistenzprogramme normale Entwickler so gut programmieren können wie heute nur die besten Experten, sagt Vechev. «In zehn Jahren wird die Automatisierung so weit fortgeschritten sein, dass Computer autonom kurze Programme schreiben können», prophezeit er.
Möglich ist dies dank maschinellen Lernens und dank bereits heute vorhandener riesiger Datenbanken für Software, die öffentlich zugänglich sind. In öffentlichen Datenbanken sind Millionen von Computerprogrammen gespeichert mit insgesamt mehreren Milliarden Zeilen von Programmcode. «Big Code» nennt Vechev diesen immensen Fundus an Programmcode. Als Softwareentwickler verliert man da schnell den Überblick. Doch Computer können helfen, diese unvorstellbar grossen Datenmengen auszuwerten und nutzbar zu machen.
Computer können in bestehendem Code Muster erkennen, und sie können lernen, welche Muster in welchem Kontext verwendet werden. Auf diese Weise erfassen sie nicht nur die einzelnen Zeichen und Befehle, sondern auch deren Bedeutung und die Regeln ihrer Verwendung. Die Art, wie die Computer diese Regeln lernen, ist vergleichbar mit jener von Sprach-Übersetzungsprogrammen wie dem bekannten Google Translate. «Auch diese Übersetzungsprogramme nutzen das maschinelle Lernen, um Wörter in ihrem Kontext zu analysieren und daraus Rückschlüsse auf ihre Bedeutung und Verwendung und auf grammatikalische Regeln zu ziehen», erklärt Vechev.
Lernender Assistent
Künftige Assistenzprogramme für Entwickler sollen ähnlich funktionieren wie die Vervollständigungsfunktionen, die uns heute helfen, auf dem Smartphone Textnachrichten zu verfassen: Ein Software-Entwickler schreibt dann beispielsweise die ersten hundert Zeilen Code, sein Assistenzprogramm analysiert diese und vergleicht sie mit bestehendem Code in Datenbanken. Darauf basierend macht der Computer Vorschläge für die Fortsetzung, die der Entwickler annehmen oder ablehnen kann. Auch solche Rückmeldungen nutzt der Computer, um die Absicht des Programmierers zu verstehen und um die Vorschläge ständig zu verbessern.
Kern dieser Assistenzprogramme sind sogenannte Wahrscheinlichkeitsmodelle. Sie werden aus einer grossen Menge verfügbarer Programme und Programmfragmente aufgebaut. Das Assistenzprogramm nutzt die Modelle, um dem Nutzer die wahrscheinlichsten Fortsetzungen anzuzeigen. Vechev und sein Team sind daran, ständig bessere Wahrscheinlichkeitsmodelle zu entwickeln. Kürzlich hat seine Gruppe eines entwickelt – genannt PHOG –, das als das derzeit präziseste Modell gilt, um Code auszuwerten. Das Modell funktioniert nicht nur mit Programmiersprachen, sondern auch mit natürlicher Sprache. Ausserdem liefert es im Gegensatz zu anderen Modellen nicht nur Antworten, sondern macht die Wahl dieser Antworten für die Nutzer auch nachvollziehbar. «Jedermann kann das PHOG-Modell nutzen, um darauf aufbauend Assistenzprogramme zu entwickeln », sagt Vechev.
Im Einsatz
Auch der ETH-Professor und sein Team entwickeln solche Assistenzprogramme, zum Beispiel die beiden frei verfügbaren Onlineprogramme externe Seite JS Nice und externe Seite APK Deguard. Das sind eine Art Korrekturprogramme für Code. Nutzer können damit ihre Programme überprüfen und sich Vorschläge anzeigen lassen, wie die Programme verbessert werden können, damit sie für Aussenstehende besser nachvollziehbar sind. Auch kann damit der Inhalt von Programmen entziffert werden, die absichtlich schwer verständlich programmiert wurden, etwa um Schadsoftware zu verschleiern. Mehr als 200 000 Entwickler und IT-Sicherheitsleute weltweit haben das Assistenzprogramm JS Nice bis jetzt verwendet.
Im vergangenen Jahr gründeten Vechev und sein früherer Doktorand Veselin Raychev den ETH-Spin-off Deepcode. Die Firma hat sich zur Aufgabe gesetzt, basierend auf Forschung aus Vechevs Labor neue Assistenzprogramme für Entwickler zu schaffen. Es sind denn auch weitere Anwendungen denkbar: Programme, die Programmierfehler finden und beheben.
«Langfristig möchten wir Software entwickeln, die intellektuell schwierige Herausforderungen beim Programmieren besser lösen kann als ein Mensch», sagt Vechev. «Vor wenigen Jahren waren wir unter den Ersten, die sich zum Ziel gesetzt haben, von ‹Big Code› zu lernen. Heute zeigen sich viele Kollegen und Softwarefirmen interessiert. Das Forschungsfeld wächst schnell.»
Dieser Artikel ist in der aktuellen Ausgabe von «Globe» erschienen.