science >> Wetenschap >  >> Elektronica

Waarom meer softwareontwikkeling naar de machines moet gaan

Justin Gottschlich van Intel Labs leidt een team van onderzoekers op het gebied van machineprogrammering. Hun doel is om softwareontwikkeling te automatiseren om codeerfouten te verminderen en een tekort aan opgeleide deskundige programmeurs aan te pakken. Krediet:Walden Kirsch/Intel Corporation

Onze expert:Justin Gottschlich leidt het team Machine Programming Research (MPR) in het Systems and Software Research Lab. De nieuw gevormde onderzoeksgroep van Justin richt zich op de baanbrekende belofte van machineprogrammering, wat een samensmelting is van machine learning, formele methoden, programmeertalen, compilers en computersystemen.

Zijn eenvoudige uitleg van machineprogrammering:MPR gebruikt vormen van machine learning en andere automatische methoden om software te maken die zijn eigen software kan maken. Het wordt machineprogrammering genoemd en gaat in wezen over het automatiseren van softwareontwikkeling en -onderhoud. Wanneer volledig gerealiseerd, machineprogrammering stelt iedereen in staat zijn creativiteit te uiten en zijn eigen software te ontwikkelen zonder een enkele regel code te hoeven schrijven.

De belofte van machineprogrammering:in het huidige technologische landschap, software is geïntegreerd in bijna alles wat we doen. Het bestuurt veel aspecten van onze mobiele apparaten:laptops, tabletten, telefoons. Het verbindt ons met internet en stuurt onze sociale media-feeds aan. Het virtualiseert onze datacenters en maakt onze huizen intelligenter. Maar het ontwikkelen en onderhouden van software is een tijdrovend en foutgevoelig proces, zegt Justin. "Ik geloof dat we een samenleving kunnen creëren waarin iedereen software kan maken, maar machines zullen het 'programmeer'-gedeelte afhandelen, "zegt hij. "Dus, 'machineprogrammering.'"

Een tekort aan menselijke programmeurs:een kernprobleem voor Intel en andere toonaangevende technologiebedrijven, volgens Justinus, is dat ze bijna geen senior ontwikkelaars meer hebben - een tekort dat de hoeveelheid programmering in alle sectoren beperkt. Volgens code.org, er zijn 500, 000 open programmeerposities beschikbaar in de VS alleen, vergeleken met een jaarlijkse oogst van 50, 000 afstuderende informatica majors. Een soortgelijk tekort is te vinden in de hele Europese Unie. Op de arbeidsmarkt voor programmeren Justine zegt, in het beste geval heeft slechts 10% van de mensen die deze banen vervullen de informatica-opleiding om geavanceerde ontwikkelaars van het hoogste niveau te worden. Met de heterogene hardware van tegenwoordig:CPU's, GPU's, FPGA's, ASIC's, neuromorf en, spoedig, kwantumchips - het zal moeilijk worden, misschien onmogelijk, om ontwikkelaars te vinden die correct kunnen, efficiënt, en veilig programmeren op al die hardware.

Dit is het moment:machineprogrammering is een samensmelting van verschillende velden. Het maakt gebruik van automatische programmeertechniek, van nauwkeurig (bijv. formele programmasynthese) naar probabilistische (bijv. differentieerbare programmering) methoden. Het gebruikt ook en leert van alles wat we tot nu toe in hardware en software hebben ingebouwd. Onderzoekers hebben zich sinds de jaren vijftig beziggehouden met machineprogrammering, zegt Justin. "Maar vandaag is anders. We staan ​​op een keerpunt met nieuwe algoritmen voor machine learning, nieuwe en verbeterde hardware, en rijke en dichte programmeergegevens. Dit zijn de drie essentiële ingrediënten die volgens ons machineprogrammering mogelijk maken." Een voorbeeld wordt geïllustreerd door recent onderzoek naar genetische algoritmen (GA) van het team van Justin, die illustreert hoe de fitnessfunctie van een genetisch algoritme - een gecompliceerde heuristiek voor machinaal leren ontwikkeld door deskundige programmeurs - kan worden geautomatiseerd. Justin zegt dat dit werk een paar jaar geleden waarschijnlijk niet mogelijk was geweest.

Weigeren om bugs te accepteren:bijna alle grootschalige software van tegenwoordig (bijv. besturingssystemen, browsers, social media platforms) omvat nauwkeurigheid, prestatie- of beveiligingsfouten. "Ons nieuwste NeurIPS '19-document levert vroeg bewijs dat bepaalde soorten bugs die in het verleden zelfs de detectie van deskundige programmeurs hebben ontweken, automatisch kunnen worden gedetecteerd met machineprogrammering. waarbij geen menselijke tussenkomst nodig is, " zegt Justin. "De volgende stap is om ze automatisch te repareren."

vanaf 500, 000 regels code tot 500:Justin wijst op een bekend voorbeeld van de voordelen van machineprogrammering. Google Vertalen, een dienst die automatisch vertaalt tussen talen, werd gebouwd door ingenieurs die ongeveer 500 met de hand codeerden, 000 regels met behulp van klassieke programmeertechnieken. Met de komst van machineprogrammering, Google herschreef zijn code, gedeeltelijk met behulp van differentieerbare programmering (een klein deel van de totale machineprogrammeertaart). Dat herschrijven verminderde de codebasis van 500, 000 lijnen tot 500 lijnen, een 1, 000x reductie. "Niet alleen is de codegrootte met 1 gekrompen, 000 keer, " Justin zegt, "de nauwkeurigheid van het systeem is zelfs verbeterd - het is ongelooflijk."

Meer programmeer banen, niet minder:machineprogrammering zal geen banen elimineren, Justin stelt, maar creëer ze in plaats daarvan - mogelijk miljoenen van hen. De meer ondergeschikte aspecten van programmeren zullen worden geautomatiseerd, hij zegt, wat het doel is. Met machineprogrammering, hij voegt toe, "onze visie op de blauwe lucht is zo lang als je je ideeën (zoals we het noemen - intentie) kunt uitdrukken op een manier die de machine kan herkennen - of het nu natuurlijke taal is, visuele diagrammen of gebaren - machineprogrammering bouwt een pad voor u om uw eigen software te maken." Om te beginnen met het bouwen van deze geavanceerde machineprogrammeersystemen, Justine zegt, we zullen sterk afhankelijk zijn van een gemeenschap van programmeurs en wetenschappers - degenen die op verschillende platforms kunnen werken, machine learning en formele technieken, heterogene hardware, en vele programmeertalen. Justin en team schetsen hun toekomstige visie op machineprogrammering in een paper dat gezamenlijk is gepubliceerd met MIT-onderzoekers, "De drie pijlers van machineprogrammering."