Programmata dal computer

Il professor Martin Vechev dell'ETH automatizza la programmazione. ? uno dei primi scienziati al mondo a far sì che i computer scrivano da soli il software. ? uno dei fondatori di un nuovo campo di ricerca che oggi è in rapida crescita.

Codice di programmazione
Gli informatici vogliono automatizzare in larga misura la programmazione (Immagine: Colorbox).

Software scritto dai computer: l'idea è affascinante. Ed è realistica, dice Martin Vechev, professore di informatica. ? uno dei fondatori di un nuovo campo di ricerca in cui gli informatici vogliono automatizzare in larga misura la programmazione. Esistono già programmi di assistenza che facilitano il lavoro degli sviluppatori di software. E presto, grazie a questi programmi di assistenza, i normali sviluppatori saranno in grado di programmare come solo i migliori esperti sanno fare oggi, dice Vechev. "Tra dieci anni, l'automazione sarà così avanzata che i computer saranno in grado di scrivere brevi programmi autonomamente", prevede Vechev.

Questo è possibile grazie all'apprendimento automatico e agli enormi database di software che già oggi esistono e sono pubblicamente accessibili. Milioni di programmi informatici sono archiviati in database pubblici, per un totale di diversi miliardi di linee di codice. Vechev chiama questo immenso bacino di codice programma "big code". Come sviluppatore di software, è facile perdere il conto. Ma i computer possono aiutare ad analizzare queste quantità inimmaginabili di dati e a renderli utilizzabili.

I computer sono in grado di riconoscere gli schemi nel codice esistente e di imparare quali schemi vengono utilizzati in quale contesto. In questo modo, non solo riconoscono i singoli caratteri e comandi, ma anche il loro significato e le regole del loro utilizzo. Il modo in cui i computer apprendono queste regole è paragonabile a quello dei programmi di traduzione linguistica, come il noto Google Translate. "Anche questi programmi di traduzione utilizzano l'apprendimento automatico per analizzare le parole nel loro contesto e trarre conclusioni sul loro significato e uso e sulle regole grammaticali", spiega Vechev.

Assistente alle persone in formazione

I futuri programmi di assistenza per gli sviluppatori dovrebbero funzionare in modo simile alle funzioni di completamento che oggi ci aiutano a comporre i messaggi di testo sui nostri smartphone: Uno sviluppatore di software scrive le prime cento righe di codice, ad esempio, e il programma di assistenza le analizza e le confronta con il codice esistente nei database. Su questa base, il computer fornisce suggerimenti per il proseguimento, che lo sviluppatore può accettare o rifiutare. Il computer utilizza anche questo feedback per comprendere le intenzioni del programmatore e migliorare costantemente i suggerimenti.

Il cuore di questi programmi di assistenza sono i cosiddetti modelli di probabilità. Essi sono costruiti a partire da un gran numero di programmi e frammenti di programmi disponibili. Il programma di assistenza utilizza i modelli per mostrare all'utente le continuazioni più probabili. Vechev e il suo team sviluppano costantemente modelli di probabilità migliori. Recentemente il suo gruppo ne ha sviluppato uno, chiamato PHOG, che attualmente è considerato il modello più preciso per l'analisi del codice. Il modello funziona non solo con i linguaggi di programmazione, ma anche con il linguaggio naturale. Inoltre, a differenza di altri modelli, non solo fornisce risposte, ma rende anche comprensibile all'utente la scelta di tali risposte. "Chiunque può utilizzare il modello PHOG per sviluppare programmi di assistenza basati su di esso", afferma Vechev.

In uso

Il professore dell'ETH e il suo team stanno anche sviluppando programmi di assistenza di questo tipo, come ad esempio i due programmi online disponibili gratuitamente. pagina esternaJS Nizza e pagina esternaAPK Deguard. Si tratta di un tipo di programma di correzione per il codice. Gli utenti possono usarli per controllare i loro programmi e farsi suggerire come migliorarli per renderli più comprensibili agli estranei. Può anche essere utilizzato per decifrare il contenuto di programmi deliberatamente programmati per essere difficili da capire, ad esempio per nascondere un malware. Ad oggi, più di 200.000 sviluppatori ed esperti di sicurezza informatica in tutto il mondo hanno utilizzato il programma di assistenza JS Nice.

L'anno scorso Vechev e il suo ex dottorando Veselin Raychev hanno fondato l'ETH spin-off Deepcode. L'azienda si è prefissata il compito di creare nuovi programmi di assistenza per gli sviluppatori basati sulle ricerche del laboratorio di Vechev. Sono ipotizzabili anche altre applicazioni: Programmi che trovano e correggono gli errori di programmazione.

"A lungo termine, vogliamo sviluppare un software in grado di risolvere sfide di programmazione intellettualmente difficili meglio di un essere umano", afferma Vechev. "Qualche anno fa, siamo stati tra i primi a porci l'obiettivo di imparare dal 'big code'. Oggi molti colleghi e aziende di software sono interessati. Il campo di ricerca sta crescendo rapidamente".

Questo articolo è pubblicato nell'attuale numero di "Il globo" pubblicato.

JavaScript è stato disabilitato nel browser