Justin Gottschlich fra Intel Labs leder et team af maskinprogrammeringsforskere. Deres mål er at automatisere softwareudvikling for at reducere kodningsfejl og imødegå mangel på uddannede ekspertprogrammører. Kredit:Walden Kirsch/Intel Corporation
Vores ekspert:Justin Gottschlich leder Machine Programming Research (MPR)-teamet i Systems and Software Research Lab. Justins nydannede forskergruppe fokuserer på det banebrydende løfte om maskinprogrammering, som er en fusion af maskinlæring, formelle metoder, programmeringssprog, compilere og computersystemer.
Hans enkle forklaring på maskinprogrammering:MPR bruger former for maskinlæring og andre automatiske metoder til at skabe software, der er i stand til at skabe sin egen software. Det kaldes maskinprogrammering og handler grundlæggende om at automatisere softwareudvikling og vedligeholdelse. Når det er fuldt ud realiseret, maskinprogrammering vil gøre det muligt for alle at udtrykke deres kreativitet og udvikle deres egen software uden at skrive en eneste linje kode.
Maskinprogrammerings løfte:I nutidens teknologiske landskab, software er integreret i næsten alt, hvad vi laver. Det styrer mange aspekter af vores mobile enheder - bærbare computere, tabletter, telefoner. Det forbinder os til internettet og driver vores sociale medier feeds. Det virtualiserer vores datacentre og gør vores hjem mere intelligente. Men at udvikle og vedligeholde software er en tidskrævende og fejltilbøjelig proces, siger Justin. "Jeg tror på, at vi kan skabe et samfund, hvor alle kan skabe software, men maskiner vil håndtere "programmeringsdelen", " siger han. "Således, 'maskinprogrammering'."
Mangel på menneskelige programmører:Et kerneproblem for Intel og andre førende teknologivirksomheder, ifølge Justin, er, at de er ved at løbe tør for seniorudviklere - en mangel, der krymper mængden af programmering på tværs af alle brancher. Ifølge code.org, der er 500, 000 åbne programmeringsstillinger tilgængelige i USA alene - sammenlignet med en årlig afgrøde på 50, 000 dimitterende datalogi hovedfag. En lignende mangel kan findes i hele EU. På arbejdsmarkedet for programmering, Justin siger, i bedste fald er det kun 10 % af de mennesker, der besætter disse job, der har uddannelsen i datalogi til at blive avancerede udviklere på topniveau. Med nutidens heterogene hardware-CPU'er, GPU'er, FPGA'er, ASIC'er, neuromorfe og, snart, kvantechips – det bliver svært, måske umuligt, at finde udviklere, der kan korrekt, effektivt, og programmer sikkert på tværs af al den hardware.
Nu er tiden inde:Maskinprogrammering er en sammensmeltning af forskellige felter. Den bruger automatisk programmeringsteknik, fra præcise (f.eks. formel programsyntese) til probabilistisk (f.eks. differentierbar programmering) metoder. Den bruger og lærer også af alt, hvad vi har bygget i hardware og software til dato. Forskere har beskæftiget sig med maskinprogrammering siden 1950'erne, siger Justin. "Men i dag er anderledes. Vi er ved et vendepunkt med nye maskinlæringsalgoritmer, ny og forbedret hardware, og rige og tætte programmeringsdata. Dette er de tre essentielle ingredienser, som vi mener muliggør maskinprogrammering." Et eksempel er illustreret af nyere forskning i genetisk algoritme (GA) fra Justins team, som illustrerer, hvordan fitnessfunktionen af en genetisk algoritme - en kompliceret maskinlæringsheuristik udviklet af ekspertprogrammører - kan automatiseres. Justin siger, at dette arbejde sandsynligvis ikke ville have været muligt for blot et par år siden.
Nægter at acceptere fejl:Næsten al storstilet software i dag (f.eks. operativsystemer, browsere, sociale medieplatforme) omfatter nøjagtighed, ydeevne eller sikkerhedsfejl. "Vores seneste NeurIPS '19 papir giver tidlige beviser for, at visse typer fejl, der historisk har unddraget sig selv ekspertprogrammeringsdetektion, automatisk kan detekteres med maskinprogrammering, kræver ingen menneskelig indgriben, " siger Justin. "Det næste skridt er automatisk at rette dem."
Fra 500,- 000 linjer kode til 500:Justin peger på et velkendt eksempel på maskinprogrammerings fordele. Google Oversæt, en tjeneste, der automatisk oversætter mellem sprog, blev bygget af ingeniører, der håndkodede omkring 500, 000 linjer ved hjælp af klassiske programmeringsteknikker. Med fremkomsten af maskinprogrammering, Google omskrev sin kode, delvist ved hjælp af differentierbar programmering (et lille stykke af den samlede maskinprogrammeringskage). Denne omskrivning reducerede kodebasen fra 500, 000 linjer til 500 linjer, en 1, 000x reduktion. "Ikke kun krympede kodestørrelsen med 1, 000 gange, " siger Justin, "systemets nøjagtighed blev faktisk forbedret - det er utroligt."
Flere programmeringsjob, ikke færre:Maskinprogrammering vil ikke eliminere job, Justin hævder, men skaber dem i stedet - muligvis millioner af dem. De mere underlige aspekter af programmering vil blive automatiseret, han siger, som er målet. Med maskinprogrammering, tilføjer han, "vores blå himmel vision er så lang, som du kan udtrykke dine ideer (som vi kalder det - hensigt) på en eller anden måde, som maskinen kan genkende - det være sig naturligt sprog, visuelle diagrammer eller bevægelser – maskinprogrammering bygger en vej for dig til at skabe din egen software." For at begynde at bygge disse avancerede maskinprogrammeringssystemer, Justin siger, vi vil i høj grad stole på et fællesskab af programmører og videnskabsmænd – dem, der kan arbejde på tværs af platforme, maskinlæring og formelle teknikker, heterogen hardware, og mange programmeringssprog. Justin og teamet skitserer deres fremtidige vision for maskinprogrammering i et papir udgivet i fællesskab med MIT-forskere, "De tre søjler i maskinprogrammering."