Justin Gottschlich från Intel Labs leder ett team av maskinprogrammeringsforskare. Deras mål är att automatisera mjukvaruutveckling för att minska kodningsfel och åtgärda bristen på utbildade expertprogrammerare. Kredit:Walden Kirsch/Intel Corporation
Vår expert:Justin Gottschlich leder Machine Programming Research (MPR)-teamet i Systems and Software Research Lab. Justins nybildade forskargrupp fokuserar på det banbrytande löftet om maskinprogrammering, som är en fusion av maskininlärning, formella metoder, programmeringsspråk, kompilatorer och datorsystem.
Hans enkla förklaring av maskinprogrammering:MPR använder former av maskininlärning och andra automatiska metoder för att skapa mjukvara som kan skapa sin egen mjukvara. Det kallas maskinprogrammering och handlar i grunden om att automatisera mjukvaruutveckling och underhåll. När det är fullt insett, maskinprogrammering kommer att göra det möjligt för alla att uttrycka sin kreativitet och utveckla sin egen mjukvara utan att skriva en enda rad kod.
Maskinprogrammeringslöfte:I dagens tekniska landskap, programvara är integrerad i nästan allt vi gör. Den styr många aspekter av våra mobila enheter – bärbara datorer, tabletter, telefoner. Det ansluter oss till internet och driver våra sociala medier. Det virtualiserar våra datacenter och gör våra hem mer intelligenta. Men att utveckla och underhålla programvara är en tidskrävande och felbenägen process, säger Justin. "Jag tror att vi kan skapa ett samhälle där alla kan skapa mjukvara, men maskiner kommer att hantera "programmeringsdelen", säger han. Alltså, "maskinprogrammering."
Brist på mänskliga programmerare:Ett kärnproblem för Intel och andra ledande teknikföretag, enligt Justin, är att de har ont om senior utvecklare – en brist som krymper mängden programmering inom alla branscher. Enligt code.org, det finns 500, 000 lediga programmeringsplatser tillgängliga bara i USA – jämfört med en årlig skörd på 50, 000 utexaminerade datavetenskaper. En liknande brist kan hittas i hela Europeiska unionen. På arbetsmarknaden för programmering, Justin säger, i bästa fall har bara 10 % av de personer som fyller dessa jobb utbildning i datavetenskap för att bli avancerade utvecklare på toppnivå. Med dagens heterogena hårdvara—CPU:er, GPU:er, FPGA, ASIC, neuromorfa och, snart, kvantchips – det kommer att bli svårt, kanske omöjligt, för att hitta utvecklare som kan korrekt, effektivt, och programmera säkert över all den hårdvaran.
Nu är det dags:Maskinprogrammering är en fusion av olika områden. Den använder automatisk programmeringsteknik, från exakt (t.ex. formell programsyntes) till probabilistisk (t.ex. differentierbar programmering) metoder. Den använder och lär sig också av allt vi har byggt i hårdvara och mjukvara hittills. Forskare har sysslat med maskinprogrammering sedan 1950-talet, säger Justin. "Men idag är annorlunda. Vi befinner oss i en brytpunkt med nya maskininlärningsalgoritmer, ny och förbättrad hårdvara, och rik och tät programmeringsdata. Det här är de tre viktiga ingredienserna som vi tror möjliggör maskinprogrammering." Ett exempel illustreras av nyligen genomförd genetisk algoritm (GA) forskning från Justins team, som illustrerar hur fitnessfunktionen hos en genetisk algoritm – en komplicerad maskininlärningsheuristik utvecklad av expertprogrammerare – kan automatiseras. Justin säger att detta arbete sannolikt inte skulle ha varit möjligt för bara några år sedan.
Att vägra acceptera buggar:Nästan all storskalig programvara idag (t.ex. operativsystem, webbläsare, sociala medieplattformar) inkluderar noggrannhet, prestanda- eller säkerhetsbuggar. "Vårt senaste NeurIPS '19-dokument ger tidiga bevis för att vissa typer av buggar som historiskt har undgått att ens expertprogrammerares upptäckt kan upptäckas automatiskt med maskinprogrammering, kräver ingen mänsklig inblandning, " säger Justin. "Nästa steg är att automatiskt fixa dem."
Från 500, 000 rader kod till 500:Justin pekar på ett välkänt exempel på maskinprogrammerings fördelar. Google översätt, en tjänst som automatiskt översätter mellan språk, byggdes av ingenjörer som handkodade runt 500, 000 rader med klassisk programmeringsteknik. Med tillkomsten av maskinprogrammering, Google skrev om sin kod, delvis med hjälp av differentierbar programmering (en liten bit av den totala maskinprogrammeringspajen). Den omskrivningen minskade kodbasen från 500, 000 rader till 500 rader, en 1, 000x minskning. "Kodstorleken minskade inte bara med 1, 000 gånger, " säger Justin, "noggrannheten i systemet förbättrades faktiskt - det är otroligt."
Fler programmeringsjobb, inte färre:Maskinprogrammering kommer inte att eliminera jobb, Justin hävdar, utan skapar dem istället – möjligen miljoner av dem. De mer underliga aspekterna av programmering kommer att automatiseras, han säger, vilket är målet. Med maskinprogrammering, han lägger till, "vår blå himmel är så lång som du kan uttrycka dina idéer (som vi kallar det - avsikt) på något sätt som maskinen kan känna igen - vare sig det är naturligt språk, visuella diagram eller gester – maskinprogrammering bygger en väg för dig att skapa din egen programvara." För att börja bygga dessa avancerade maskinprogrammeringssystem, Justin säger, vi kommer att förlita oss mycket på en gemenskap av programmerare och forskare – de som kan arbeta över plattformar, maskininlärning och formella tekniker, heterogen hårdvara, och många programmeringsspråk. Justin och teamet beskriver sin framtida vision av maskinprogrammering i en artikel som publicerades tillsammans med MIT-forskare, "De tre pelarna för maskinprogrammering."