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.