Rice University dataloger (fra venstre) Vijay Murali, Chris Jermaine, Swarat Chaudhuri og Letao Qi skabte en software-kodningsapplikation kaldet Bayou, der kan hjælpe menneskelige programmører ved at skrive bidder af kode som svar på nøgleord. Kredit:Jeff Fitlow/Rice University
Dataloger ved Rice University har skabt en dyb læring, software-kodningsapplikation, der kan hjælpe menneskelige programmører med at navigere i det voksende væld af ofte udokumenterede applikationsprogrammeringsgrænseflader, eller API'er.
Kendt som Bayou, Rice-applikationen blev oprettet gennem et initiativ finansieret af Defense Advanced Research Projects Agency, der sigtede på at udvinde viden fra online kildekodelagre som GitHub. Et papir om Bayou vil blive præsenteret 1. maj i Vancouver, Britisk Columbia, ved den sjette internationale konference om læringsrepræsentationer, en førende afsætningsmulighed for deep learning-forskning. Brugere kan prøve det på askbayou.com.
At designe applikationer, der kan programmere computere, er en længe søgt gral af den gren af datalogi, der kaldes kunstig intelligens (AI).
"Folk har forsøgt i 60 år at bygge systemer, der kan skrive kode, men problemet er, at disse metoder ikke er så gode med tvetydighed, " sagde Bayou medskaber Swarat Chaudhuri, lektor i datalogi ved Rice. "Du skal normalt give en masse detaljer om, hvad målprogrammet gør, og nedskrivning af disse detaljer kan være lige så meget arbejde som bare at skrive koden.
"Bayou er en betydelig forbedring, " sagde han. "En udvikler kan give Bayou en meget lille mængde information - kun nogle få nøgleord eller prompter, virkelig - og Bayou vil prøve at læse programmørens tanker og forudsige det program, de ønsker."
Chaudhuri sagde, at Bayou trænede sig selv ved at studere millioner af linjer med menneskeskreven Java-kode. "Det har dybest set studeret alt på GitHub, og det trækker på det for at skrive sin egen kode."
Bayou medskaber Chris Jermaine, en professor i datalogi, der sammen med Chaudhuri leder Rice's Intelligent Software Systems Laboratory, sagde Bayou er særlig nyttig til at syntetisere eksempler på kode til specifikke software API'er.
"Programmering i dag er meget anderledes, end det var for 30 eller 40 år siden, " sagde Jermaine. "I dag er computere i vores lommer, på vores håndled og i milliarder af husholdningsapparater, køretøjer og andre enheder. De dage, hvor en programmør kunne skrive kode fra bunden, er for længst forbi."
Bayou arkitekt Vijay Murali, en forsker ved laboratoriet, sagde, "Moderne softwareudvikling handler om APl'er. Disse er systemspecifikke regler, værktøjer, definitioner og protokoller, der tillader et stykke kode at interagere med et specifikt operativsystem, database, hardwareplatform eller et andet softwaresystem. Der er hundredvis af API'er, og det er meget svært for udviklere at navigere i dem. De bruger meget tid på spørgsmål-svar-websteder som Stack Overflow for at bede andre udviklere om hjælp."
Murali sagde, at udviklere nu kan begynde at stille nogle af disse spørgsmål hos Bayou, som vil give et øjeblikkeligt svar.
"Den øjeblikkelige feedback kunne løse problemet med det samme, og hvis det ikke gør, Bayous eksempelkode burde føre til et mere informeret spørgsmål til deres menneskelige jævnaldrende, " sagde Murali.
Jermaine sagde, at holdets primære mål er at få udviklere til at forsøge at udvide Bayou, som er udgivet under en tilladelig open source-licens.
"Jo mere information vi har om, hvad folk ønsker fra et system som Bayou, jo bedre kan vi gøre det, " sagde han. "Vi vil have så mange mennesker til at bruge det, som vi kan få." Bayou er baseret på en metode kaldet neural skitseindlæring, som træner et kunstigt neuralt netværk til at genkende mønstre på højt niveau i hundredtusindvis af Java-programmer. Det gør den ved at lave en "skitse" for hvert program, den læser og derefter forbinde denne skitse med den "hensigt", der ligger bag programmet.
Når en bruger stiller Bayou spørgsmål, systemet foretager en vurdering af, hvilket program det bliver bedt om at skrive. Derefter opretter den skitser til flere af de mest sandsynlige kandidatprogrammer, som brugeren måtte ønske sig.
"Baseret på det gæt, en separat del af Bayou, et modul, der forstår Java-detaljerne på lavt niveau og kan lave automatisk logisk ræsonnement, kommer til at generere fire eller fem forskellige bidder af kode, " sagde Jermaine. "Det vil præsentere dem for brugeren som hits på en websøgning. 'Dette er højst sandsynligt det rigtige svar, men her er tre mere, der kunne være det, du leder efter.'"