Informatici della Rice University (da sinistra) Vijay Murali, Chris Jermain, Swarat Chaudhuri e Letao Qi hanno creato un'applicazione di codifica software chiamata Bayou che può aiutare i programmatori umani scrivendo pezzi di codice in risposta a parole chiave. Credito:Jeff Fitlow/Rice University
Gli scienziati informatici della Rice University hanno creato un deep learning, un'applicazione di codifica software che può aiutare i programmatori umani a navigare nella crescente moltitudine di interfacce di programmazione delle applicazioni spesso non documentate, o API.
Conosciuto come Bayou, l'applicazione Rice è stata creata attraverso un'iniziativa finanziata dalla Defense Advanced Research Projects Agency volta a estrarre conoscenza da repository di codice sorgente online come GitHub. Un paper su Bayou sarà presentato il 1 maggio a Vancouver, British Columbia, alla Sesta Conferenza Internazionale sulle Rappresentazioni dell'Apprendimento, uno sbocco principale per la ricerca sull'apprendimento profondo. Gli utenti possono provarlo su askbayou.com.
La progettazione di applicazioni in grado di programmare i computer è un graal a lungo cercato del ramo dell'informatica chiamato intelligenza artificiale (AI).
"Per 60 anni le persone hanno cercato di costruire sistemi in grado di scrivere codice, ma il problema è che questi metodi non sono così buoni con l'ambiguità, "ha detto il co-creatore di Bayou Swarat Chaudhuri, professore associato di informatica alla Rice. "Di solito è necessario fornire molti dettagli su ciò che fa il programma di destinazione, e scrivere questi dettagli può essere un lavoro tanto quanto scrivere il codice.
"Bayou è un notevole miglioramento, " ha detto. "Uno sviluppatore può dare a Bayou una quantità molto piccola di informazioni:solo poche parole chiave o suggerimenti, davvero e Bayou cercherà di leggere la mente del programmatore e prevedere il programma che vogliono."
Chaudhuri ha detto che Bayou si è allenato studiando milioni di righe di codice Java scritto dall'uomo. "In pratica ha studiato tutto su GitHub, e attinge a questo per scrivere il proprio codice."
Il co-creatore di Bayou Chris Jermaine, un professore di informatica che co-dirige l'Intelligent Software Systems Laboratory della Rice con Chaudhuri, detto Bayou è particolarmente utile per sintetizzare esempi di codice per specifiche API software.
"La programmazione di oggi è molto diversa rispetto a 30 o 40 anni fa, " disse Jermaine. "I computer oggi sono nelle nostre tasche, ai nostri polsi e in miliardi di elettrodomestici, veicoli e altri dispositivi. I giorni in cui un programmatore poteva scrivere codice da zero sono ormai lontani."
architetto Bayou Vijay Murali, un ricercatore presso il laboratorio, disse, "Lo sviluppo di software moderno è incentrato sugli APl. Queste sono regole specifiche del sistema, utensili, definizioni e protocolli che consentono a un pezzo di codice di interagire con uno specifico sistema operativo, Banca dati, piattaforma hardware o un altro sistema software. Ci sono centinaia di API, e la loro navigazione è molto difficile per gli sviluppatori. Trascorrono molto tempo in siti di domande e risposte come Stack Overflow chiedendo aiuto ad altri sviluppatori."
Murali ha affermato che gli sviluppatori possono ora iniziare a porre alcune di queste domande a Bayou, che darà una risposta immediata.
"Quel feedback immediato potrebbe risolvere subito il problema, e se non lo fa, Il codice di esempio di Bayou dovrebbe portare a una domanda più informata per i loro coetanei umani, " Disse Murai.
Jermaine ha detto che l'obiettivo principale del team è convincere gli sviluppatori a provare ad estendere Bayou, che è stato rilasciato sotto una licenza open-source permissiva.
"Più informazioni abbiamo su ciò che le persone vogliono da un sistema come Bayou, meglio possiamo farlo, " ha detto. "Vogliamo che quante più persone possibile lo usino." Bayou si basa su un metodo chiamato apprendimento dello schizzo neurale, che addestra una rete neurale artificiale per riconoscere modelli di alto livello in centinaia di migliaia di programmi Java. Lo fa creando uno "schizzo" per ogni programma che legge e quindi associando questo schizzo con l'"intento" che sta dietro al programma.
Quando un utente fa domande a Bayou, il sistema giudica quale programma gli viene chiesto di scrivere. Quindi crea schizzi per molti dei programmi candidati più probabili che l'utente potrebbe desiderare.
"Sulla base di questa ipotesi, una parte separata di Bayou, un modulo che comprende i dettagli di basso livello di Java e può eseguire ragionamenti logici automatici, genererà quattro o cinque diversi blocchi di codice, " ha detto Jermaine. "Sta per presentare quelli all'utente come risultati su una ricerca web. 'Questa è molto probabilmente la risposta corretta, ma qui ce ne sono altri tre che potrebbero essere quello che stai cercando.'"