Una nuova rete neurale potrebbe aiutare i computer a codificare se stessi

AI che scrive il codice del computer

La signora Tech





La programmazione del computer non è mai stata facile. I primi programmatori scrivevano programmi a mano, scarabocchiando simboli su carta millimetrata prima di convertirli in grandi pile di schede perforate che potevano essere elaborate dal computer. Un segno fuori posto e potrebbe essere necessario rifare tutto.

Al giorno d'oggi i programmatori utilizzano una serie di potenti strumenti che automatizzano gran parte del lavoro, dalla rilevazione degli errori durante la digitazione al test del codice prima che venga distribuito. Ma in altri modi, poco è cambiato. Un errore sciocco può ancora mandare in crash un intero software. E man mano che i sistemi diventano sempre più complessi, rintracciare questi bug diventa sempre più difficile. A volte possono essere necessari giorni a team di programmatori per correggere un singolo bug, afferma Justin Gottschlich, direttore del gruppo di ricerca sulla programmazione delle macchine presso Intel.

Ecco perché alcune persone pensano che dovremmo semplicemente far programmare le macchine da sole. La generazione automatizzata di codice è stata un argomento di ricerca caldo per diversi anni. Microsoft sta costruendo la generazione di codice di base nei suoi strumenti di sviluppo software ampiamente utilizzati, Facebook ha creato un sistema chiamato Odore che completa automaticamente piccoli programmi e DeepMind ha sviluppato una rete neurale che può inventare versioni più efficienti di algoritmi semplici rispetto a quelli ideati dall'uomo. Anche il modello linguistico GPT-3 di OpenAI può farlo sforna semplici pezzi di codice , come i layout di pagine Web, da prompt in linguaggio naturale.



Gottschlich e i suoi colleghi lo chiamano programmazione della macchina . Lavorando con un team di Intel, MIT e Georgia Institute of Technology di Atlanta, ha sviluppato un sistema chiamato Somiglianza del codice dedotto dalla macchina , o MISIM, che può estrarre il significato di un pezzo di codice, ciò che il codice sta dicendo al computer di fare, più o meno allo stesso modo in cui i sistemi di elaborazione del linguaggio naturale (NLP) possono leggere un paragrafo scritto in inglese.

MISIM può quindi suggerire altri modi in cui il codice potrebbe essere scritto, offrendo correzioni e modi per renderlo più veloce o più efficiente. La capacità dello strumento di capire cosa sta cercando di fare un programma gli consente di identificare altri programmi che fanno cose simili. In teoria, questo approccio potrebbe essere utilizzato da macchine che hanno scritto il proprio software, attingendo a un mosaico di programmi preesistenti con una supervisione o un input umano minimi.

MISIM funziona confrontando frammenti di codice con milioni di altri programmi che ha già visto, presi da un gran numero di repository online. Per prima cosa traduce il codice in un modulo che cattura ciò che fa ma ignora come è scritto, perché due programmi scritti in modi molto diversi a volte fanno la stessa cosa. MISIM utilizza quindi una rete neurale per trovare altro codice con un significato simile. In un prestampa , Gottschlich e i suoi colleghi riferiscono che MISIM è 40 volte più preciso dei sistemi precedenti che tentano di farlo, incluso Aroma.



MISIM è un entusiasmante passo avanti, afferma Veselin Raychev, CTO presso l'azienda svizzera DeepCode, i cui strumenti di rilevamento dei bug, tra i più avanzati sul mercato, utilizzano reti neurali addestrate su milioni di programmi per suggerire miglioramenti ai programmatori mentre scrivono .

Ma l'apprendimento automatico non è ancora eccezionale per prevedere se qualcosa sia o meno un bug, afferma Raychev. Questo perché è difficile insegnare a una rete neurale cosa è o non è un errore a meno che non sia stato etichettato come tale da un essere umano.

Ci sono molte ricerche interessanti in corso con reti neurali profonde e correzione di bug, dice, ma praticamente non sono ancora lì, con un margine molto ampio. In genere, gli strumenti di rilevamento dei bug dell'IA producono molti falsi positivi, afferma.



MISIM aggira questo problema utilizzando l'apprendimento automatico per individuare le somiglianze tra i programmi piuttosto che identificare direttamente i bug. Confrontando un nuovo programma con un software esistente noto per essere corretto, può avvisare il programmatore di differenze importanti che potrebbero essere errori.

Intel prevede di utilizzare lo strumento come sistema di raccomandazione del codice per gli sviluppatori interni, suggerendo modi alternativi per scrivere codice più veloci o più efficienti. Ma poiché MISIM non è legato alla sintassi di un programma specifico, potrebbe potenzialmente fare molto di più. Ad esempio, potrebbe essere utilizzato per tradurre il codice scritto in un vecchio linguaggio come COBOL in un linguaggio più moderno come Python. Questo è importante perché molte istituzioni, incluso il governo degli Stati Uniti , si basano ancora su software scritti in linguaggi che pochi programmatori sanno come mantenere o aggiornare.

In definitiva, Gottschlich pensa che questa idea potrebbe essere applicata al linguaggio naturale. Combinata con la NLP, la capacità di lavorare con il significato del codice separatamente dalla sua rappresentazione testuale potrebbe un giorno consentire alle persone di scrivere software semplicemente descrivendo ciò che vogliono fare a parole, dice.



Costruire piccole app per il tuo telefono, o cose del genere che ti aiuteranno nella vita di tutti i giorni, penso che non siano troppo lontane, afferma Gottschlich. Mi piacerebbe vedere 8 miliardi di persone creare software nel modo più naturale per loro.

nascondere