Computersoftware, die von Computern geschrieben wird, ist laut Martin Vechev, Professor der Informatik an der Eidgenössischen Technische Hochschule von Zürich sicher keine Science-Fiction. Vechev ist einer der Begründer eines neuen Forschungsgebiets, in dem Computerwissenschaftler das Programmieren weitestgehend automatisieren wollen. Schon in absehbarer Zeit dürften „normale“ Programmierer genauso gut programmieren können, wie dies heute die besten Experten tun – dank Hilfsprogrammen, die den Software-Entwicklern die meiste Arbeit abnehmen.

Dies wird durch automatisiertes Lernen in Verbindung mit riesigen, jetzt schon öffentlich zugänglichen Software-Datenbanken möglich. In diesen Datenbanken sind bereits Millionen von Programmen mit vielen Milliarden Zeilen Code gespeichert: „Big Code“, wie Vechev dies nennt.

Computer können in dem bestehenden Code Muster erkennen und lernen, welche Muster in welchem Kontext gebraucht werden. Auf diese Weise erfassen sie nicht nur die einzelnen Zeichen und Befehle, sondern auch deren Bedeutung und die Regeln ihrer Verwendung. Dies ist vergleichbar mit der Art, wie Übersetzungsprogramme wie Google Translate Wörter im Kontext analysieren und daraus auf ihre Bedeutung und die grammatikalischen Regeln schließen.

Künftige Hilfsprogramme für Entwickler sollen ähnlich funktionieren wie die Auto-Vervollständigungsfunktionen bei Smartphones. Ein Software-Entwickler schreibt die ersten paar hundert Zeilen Code und das Hilfs- oder Assistenzprogramm macht auf dieser Basis Vorschläge für die Fortsetzung, die der Entwickler annehmen oder ablehnen kann.
 
Kern dieser Assistenzprogramme sind Wahrscheinlichkeitsmodelle, aufgebaut aus einer großen Menge verfügbarer Programme und Programmfragmente. Diese Modelle schlagen die wahrscheinlichsten Programmfortsetzungen vor. Vechev und sein Team haben schon solche Wahrscheinlichkeitsmodelle entwickelt, zum Beispiel die frei nutzbaren Online-Programme JS Nice und APK Deguard. Damit können Programmierer ihren Code testen, wobei Möglichkeiten gezeigt werden, wie die Programme verbessert werden könnten.