science.ORF.at: Ihr Forschungsgebiet ist die sogenannte Programmsynthese. Was ist das?
Sumit Gulwani: Als "Programmsynthese" bezeichnet man eine Anwendung automatischer Programme, die andere Programme schreiben. Diese Technologie ist vor allem für Menschen interessant, die Zugang zu einem Computer besitzen, jedoch nicht programmieren können. Aber sie können beschreiben, was sie von ihrem Computer wollen: Die Übersetzung dieser Wünsche bzw. Aufgaben in ein Programm - das ist Programmsynthese.
Wie funktioniert das?
Im Prinzip kann man auf zwei Arten beschreiben, was der Computer tun sollte. Eine Möglichkeit sind Input-Output-Beispiele: Ich könnte etwa verlangen, dass Vor- und Nachnamen in anderer Reihenfolge angezeigt werden. Das Eingabebeispiel wäre dann "Sumit Gulwani" und der Output "Gulwani, Sumit ". Das Programm lernt dadurch, was es bei anderen Namen tun soll.

Sumit Gulwani
Sumit Gulwani studierte Computerwissenschaften am Indian Institute of Technology (IIT) in Kanpur, machte an der Universität Berkeley seinen PhD und arbeitet nun im Microsoft-Forschungslabor in Redmont.
Gulwani kooperiert u.a. mit dem österreichischen Forschungsnetzwerk ARiSE und hielt am 11.5. an der TU Wien den Vortrag "Program Synthesis for automating End-user programming and Education".
Und die zweite Möglichkeit ?
Die zweite Möglichkeit, einem Computer eine Aufgabe mitzuteilen, ist die natürliche Sprache. In diesem Beispiel könnte man etwa schreiben: "Nimm einen Namen und formatiere ihn als 'Nachname, Vorname'." Dafür braucht es freilich eine weitere Technologie, die natürliche Sprache erkennt und verarbeitet - wir nennen das "natural language processing".
Wie weit ist die Programmsynthese gediehen? Wie "klug" sind Computer beim Schreiben neuer Programme?
Sie können zur Zeit zehn bis 20 Zeilen lange Programme schreiben, etwa Sortier-Algorithmen oder Rechenvorschriften für die Multiplikation von Matrizen herstellen. Letzteres lernt man bereits in der Schule, es ist aber auch in der Computerwissenschaft von großer Bedeutung. Die Programmierung solcher Algorithmen ist keine triviale Aufgabe. Nicht zuletzt deshalb, weil sie in einer vernünftigen Zeitspanne zu einem Ergebnis kommen müssen.
Letztlich geht es aber nicht darum, besonders komplizierte Algorithmen zu entwickeln. Eigentlich im Gegenteil: Um Endverbraucher bei ihrer Arbeit mit dem Computer zu unterstützen, brauchen wir möglichst simple Algorithmen.
Könnte die Programmsynthese etwa den Download eines Apps für Smartphones ersetzen?
Ich würde sagen: eher ergänzen als ersetzen, aber Telefone sind ein gutes Beispiel. User werden in Zukunft ihre eigenen Applikationen entwickeln, und zwar solche, die auf ihre persönlichen Bedürfnisse zugeschnitten sind und die es daher auf dem Markt gar nicht gibt.
Ein Beispiel: Vor ein paar Tagen kam meine Mutter aus Indien in die USA, um mich zu besuchen. Als sie ankam, fragte sie mich, ob ich eine Applikation entwickeln könnte, die ihr das Telefonieren mit ihrer Tochter in Indien erleichtert.
Jetzt muss sie nämlich zunächst die Nummer eines Telefonanbieters wählen, dann muss sie einen PIN-Code eingeben, dann die Nummer ihrer Tochter. Wenn es nicht funktioniert, muss sie das Ganze wiederholen. Falls es wieder nicht funktioniert, versucht sie es bei einem anderen Anbieter. Das zu automatisieren wäre eine großartige Sache.
Und haben Sie das App für ihre Mutter entwickelt?
Leider nein, es fehlt mir momentan die Zeit dafür: Denn ich bräuchte sicher ein paar Tage, um die Programme in diesem Mobiltelefon zu verstehen. Wir schaffen die Grundlagen für eine Software, der meine Mutter in Zukunft ihre Wünsche mitteilen kann. Damit wäre sie in der Lage, das benötigte Programm selbst zu entwickeln.
Eine andere Anwendung der Programmsynthese liegt im Bildungsbereich.
Genau, mathematische oder physikalische Probleme könnte man auch in Form eines Programmes darstellen. Mit Hilfe der Programmsynthese kann man automatische Lösungen herstellen, das haben wir bereits bei Geometrie-Problemen verwirklicht. In Zukunft wollen wir den Schülern auch Hinweise auf den richtigen Lösungsweg geben - bzw. ihnen sagen, wo sie Fehler gemacht haben. Wir wollen künstliche Tutoren schaffen, die Lehrer bei ihrer Arbeit unterstützen.
Wenn Computer sich selbst programmieren, könnte eine sprachliche Rückbezüglichkeit, "Selbstreferentialität" entstehen, die in der theoretischen Informatik traditionell als großes Problem gilt. Ist das ein Problem für ihren Forschungszweig?
Nein. Es könnten logische Probleme entstehen, wenn wir behaupten würden, jede Art von Programm automatisch herstellen zu können. Aber das tun wir nicht. Firmen werden ihre Softwareentwickler nicht entlassen, weil Maschinen bald ihre Aufgaben übernehmen. Dennoch könnte die Technologie zu einer Revolution führen: nicht bei den Softwareentwicklern, sondern bei den End-Usern, ihren Laptops, Telefonen und - in Zukunft - vielleicht auch bei Robotern.
Man kann die Frage stellen: Was werden solche persönlichen Assistenten in Zukunft tun? Sie werden sicher nicht meine Dissertation schreiben, aber einfache und wiederkehrende Aufgaben werden sie übernehmen können: etwa das Kaufen von Büchern in Geschäften.
Sie arbeiten im größten Forschungslabor von Microsoft. Warum haben sie sich für Microsoft als Arbeitgeber entschieden?
Aus zwei Gründen. Der eine ist: Hier habe ich die Möglichkeit, mit meiner Arbeit das Leben von Millionen von Menschen zu beeinflussen. Der andere Grund ist der Kontakt mit anderen Wissenschaftlern: In meinem Forschungszentrum arbeiten mehr als 300 Computerwissenschaftler mit verschiedensten Schwerpunkten. In dieser Umgebung ist es sehr wahrscheinlich, dass interdisziplinäre Kooperationen entstehen. Im akademischen Bereich ist das nicht immer so. Schlichtweg deswegen, weil viel weniger Leute am selben Ort arbeiten.
Wie frei sind sie in ihrer Forschung?
Wir können tun, was wir wollen.
Was ist in ihrem Metier eigentlich besser bezahlt: akademische oder industrielle Forschung?
Industrielle Forschung ist in der Regel besser bezahlt. In den USA ist der Unterschied nicht so groß, in Indien, wo ich herkomme, verdient ein Industrieforscher hingegen zehn Mal so viel wie ein Fachkollege an der Universität. Dieses Missverhältnis bewirkt, dass kaum gute Leute an den Universitäten bleiben. Das halte ich für ein Problem.
Zum Schluss eine Runde Science fiction: Wozu werden Computer in, sagen wir, 50 Jahren imstande sein?
In Bezug auf mein Forschungsgebiet würde ich sagen: Die Beziehung zwischen Mensch und Computer wird viel enger und harmonischer sein. Computer werden nicht die Intelligenz von Menschen erreichen - aber sie werden die Menschen selbst intelligenter machen. Nehmen wir etwa das Beispiel der Taschenrechner: Früher war die Multiplikation großer Zahlen Teil des Lehrstoffes.
Heute ist sie das nicht mehr, weil es Maschinen gibt, die diese Aufgabe übernehmen. Aber mit Hilfe dieser Maschinen lösen Schüler heute Probleme, die vor 100 Jahren nur Wissenschaftler lösen konnten.
In 50 Jahren werden Computer dafür sorgen, dass sich Schüler viel mehr Wissen aneignen können als heute. Sie werden den IQ des Planeten heben.
Interview: Robert Czepel, science.ORF.at
Mehr zu diesem Thema: