Computer programmeert computer
Computersoftware die door computers wordt geschreven: volgens Martin Vechev, professor in de informatica aan de Eidgenössische Technische Hochschule te Zürich, zeker geen science fiction. Vechev is een van de grondleggers van een nieuw onderzoeksgebied waarin computerwetenschappers het programmeren verregaand willen automatiseren...
Computersoftware die door computers wordt geschreven: volgens Martin Vechev, professor in de informatica aan de Eidgenössische Technische Hochschule te Zürich, zeker geen science fiction. Vechev is een van de grondleggers van een nieuw onderzoeksgebied waarin computerwetenschappers het programmeren verregaand willen automatiseren. Binnen afzienbare tijd al zullen ‘normale’ programmeurs net zo goed kunnen programmeren als de beste experts dat nu doen, dankzij hulpprogramma’s die software-ontwikkelaars veel werk uit handen nemen.
Dit wordt mogelijk dankzij machinaal leren in combinatie met bestaande reusachtige openbare software-databanken. Daarin zijn al miljoenen programma’s opgeslagen, bestaande uit vele miljarden regels code. ‘Big Code’, zoals Vechev dat noemt.
Computers kunnen in die bestaande code patronen herkennen en leren welke patronen in welke context worden gebruikt. Op die manier leren ze de betekenis van die code en de regels die voor het gebruik ervan gelden. Dit is enigszins vergelijkbaar met de manier waarop vertaalprogramma’s als Google Translate woorden in hun context analyseren en daaruit betekenis en gebruiksregels proberen af te leiden.
Toekomstige hulpprogramma's voor programmeurs zullen mogelijkerwijs op dezelfde manier functioneren als de aanvullingsfuncties die ons helpen tekstberichtjes op de smartphone te schrijven. De programmeur schrijft bijvoorbeeld de eerste paar honderd regels code, en op basis daarvan stelt het hulpprogramma (de assistent) een mogelijk vervolg voor, dat de programmeur dan kan accepteren of verwerpen.
De kern van dergelijke assistenten wordt gevormd door waarschijnlijkheidsmodellen, opgebouwd op basis van een grote hoeveelheid bestaande programma’s en programmafragmenten. Deze modellen worden dan gebruikt om een voortzetting van het programma te suggereren. Vechev en zijn team hebben al dergelijke assistenten ontwikkeld, bijvoorbeeld de vrij beschikbare online-programma’s JS Nice en APK Deguard. Hiermee kunnen gebruikers hun code testen, waarna mogelijkheden worden getoond om die programma’s te verbeteren.
Dit wordt mogelijk dankzij machinaal leren in combinatie met bestaande reusachtige openbare software-databanken. Daarin zijn al miljoenen programma’s opgeslagen, bestaande uit vele miljarden regels code. ‘Big Code’, zoals Vechev dat noemt.
Computers kunnen in die bestaande code patronen herkennen en leren welke patronen in welke context worden gebruikt. Op die manier leren ze de betekenis van die code en de regels die voor het gebruik ervan gelden. Dit is enigszins vergelijkbaar met de manier waarop vertaalprogramma’s als Google Translate woorden in hun context analyseren en daaruit betekenis en gebruiksregels proberen af te leiden.
Toekomstige hulpprogramma's voor programmeurs zullen mogelijkerwijs op dezelfde manier functioneren als de aanvullingsfuncties die ons helpen tekstberichtjes op de smartphone te schrijven. De programmeur schrijft bijvoorbeeld de eerste paar honderd regels code, en op basis daarvan stelt het hulpprogramma (de assistent) een mogelijk vervolg voor, dat de programmeur dan kan accepteren of verwerpen.
De kern van dergelijke assistenten wordt gevormd door waarschijnlijkheidsmodellen, opgebouwd op basis van een grote hoeveelheid bestaande programma’s en programmafragmenten. Deze modellen worden dan gebruikt om een voortzetting van het programma te suggereren. Vechev en zijn team hebben al dergelijke assistenten ontwikkeld, bijvoorbeeld de vrij beschikbare online-programma’s JS Nice en APK Deguard. Hiermee kunnen gebruikers hun code testen, waarna mogelijkheden worden getoond om die programma’s te verbeteren.