la guida

GitHub Copilot: come usare l’assistente AI per la programmazione



Indirizzo copiato

GitHub Copilot è un assistente AI che supporta la programmazione, utilizzabile con una licenza annuale. Addestrato sul vasto database di codici di GitHub, offre suggerimenti di codice basati sul contesto e migliora la produttività. Sebbene sollevi questioni legali e di sicurezza, promette di rivoluzionare lo sviluppo software, specialmente nell’open source

Pubblicato il 14 feb 2024

Antonio Cisternino

Università di Pisa



github

GitHub, il popolare sito per la gestione di codici e tra i maggiori repository di software open source al mondo, ha rilasciato la nuova versione in produzione dell’assistente basato su AI chiamato Copilot.

La tecnologia era già in parte disponibile ma con l’ultimo rilascio è possibile interagire con un assistente di intelligenza artificiale capace di assistere ragionando sul codice esistente e contribuendo a generare codice nuovo. Cerchiamo di capire quali sono le novità e le implicazioni del suo uso nello sviluppo del software.

Esaminiamo l’uso di Copilot all’interno di Visual Studio Code, il cui funzionamento è analogo a quello degli altri editor.

Usare GitHub Copilot

GitHub Copilot richiede, come succede spesso per le tecnologie basate su AI generativa, una licenza specifica, che per sviluppatori indipendenti costa circa 100$ all’anno, la metà circa della licenza per i business (è importante notare come per docenti e studenti di istituti che hanno aderito all’iniziativa campus di GitHub la licenza è gratuita). È possibile anche attivare una versione di prova del servizio per poterne provare le capacità.

Copilot può essere utilizzato all’interno di editor molto diffusi sia proprietari come Visual Studio che open come Visual Studio Code. Copilot può inoltre essere utilizzato all’intero della command line di GitHub (il comando gh).

Immagine che contiene testo, schermata, Elementi grafici, graficaDescrizione generata automaticamente

La prima cosa da fare è installare l’estensione Copilot all’intero di Visual Studio Code cercandola nel marketplace delle estensioni. Vanno installate due estensioni:

  • GitHub Copilot
  • GitHub Copilot Chat
Immagine che contiene testo, schermata, software, Software multimedialeDescrizione generata automaticamente

Alla prima esecuzione le estensioni richiedono l’account GitHub per poter attivare la funzione.

Per fare qualche esempio ho creato un progetto ASP.NET MVC:

dotnet new mvc -o copilottest

Aprendo il file HomeController.cs generato nello scheletro di applicazione appare il codice C# dell’applicazione. Selezionando la vista della chat di Copilot è possibile fare domande sul codice, come ad esempio chiedere spiegazione su un frammento di codice come nel seguente esempio:

Immagine che contiene testo, schermata, software, Software multimedialeDescrizione generata automaticamente

È interessante come sia possibile anche richiedere la modifica del codice, come ad esempio generare i commenti del codice:

Immagine che contiene testo, schermata, software, Software multimedialeDescrizione generata automaticamente

L’assistente mostra il codice generato e si può decidere se consolidarlo nel sorgente vero e proprio. È possibile chiedere anche la scrittura di codice a partire da una specifica espressa in base a un requisito. Nel seguente esempio abbiamo chiesto di aggiungere una URL all’applicazione Web che consenta di sommare due numeri usando i parametri della richiesta nel Web browser; il Copilot propone il codice spiegandone il funzionamento:

Immagine che contiene testo, schermata, software, Software multimedialeDescrizione generata automaticamente

Copilot funziona anche proponendo un completamento del codice che si sta scrivendo basandosi sul contesto. Se vogliamo aggiungere un metodo capace di sottrarre due numeri possiamo cominciare a scrivere e non appena l’assistente comprende l’intenzione propone il completamento corretto:

Immagine che contiene testo, schermata, Carattere, lineaDescrizione generata automaticamente

Ma come funziona GitHub copilot ?

Ormai sappiamo bene che addestrare un’intelligenza artificiale generativa richiede grandi moli di dati che saranno usati dalla rete neurale per apprendere la struttura dei dati in input che saranno poi usati per generare nuova informazione. Anche nel caso di GitHub Copilot l’addestramento è stato effettuato utilizzando l’enorme base di codice ospitata dalla piattaforma, patrimonio che ha portato Microsoft ad acquisirla a giugno 2018.

Il nodo del copyright

Anche nel caso di GitHub copilot si pone il problema se l’addestramento dell’AI generativa rientri nel cosiddetto FAIR use dei sorgenti, oppure l’AI abbia ottenuto informazioni protette da copyright per fare business. Non è un caso che molte aziende abbiano proibito l’uso di queste tecnologie nella paura che la proprietà intellettuale possa essere messa a rischio. Va però detto che la produttività aumenta così tanto che molti dipendenti cercano di aggirare le restrizioni imposte pur di beneficiarne. L’evoluzione del quadro giuridico sul perimetro di addestramento dell’intelligenza artificiale e la tutela della proprietà intellettuale contribuiranno a determinarne l’uso, anche se sicuramente l’impiego nella scrittura di codice aperto non può che beneficiare, anche perché l’assistente tende a proporre schemi di programmazione che tendono a seguire le best practices offrendo spesso spunti al programmatore che contribuiscono alla propria crescita come sviluppatore.

GitHub Copilot ha usato il modello Codex di OpenAI, ma non è chiaro come la collezione sia aggiornata al passare del tempo, anche se è presumibile che ci si limiti ad usare codice con licenza aperta per ridurre il rischio di contenzioso legale. Alcuni sostengono che comunque anche l’uso dei codici aperti al fine di addestrare una AI vada oltre i termini della licenza, ma ad oggi i tentativi di sostenere questa tesi non hanno prodotto risultati significativi.

L’AI e la cybersecurity

L’uso di codice generato da un’intelligenza artificiale tende ad alterare il processo di verifica degli aspetti non funzionali come, ad esempio, quelli della cybersecurity: come sappiamo che il codice proposto non si riveli insicuro? Si tratta di una questione di non poco conto, da una parte l’AI potrebbe aver appreso pattern di programmazione molto usati ma insicuri (magari non ancora noti), dall’altra il programmatore è davvero capace di prestare attenzione a tutti i dettagli senza concentrarsi solo sulla realizzazione delle funzionalità?

Come sempre la qualità del codice dipenderà dallo spirito critico del programmatore e nell’uso che intende fare dei suggerimenti dell’AI. Se si accettano pattern e algoritmi che non si conoscono e non si comprendono è possibile che il codice risultante sia non corretto o vulnerabile, d’altra parte la conoscenza dell’AI è tale da superare le conoscenze di un programmatore medio probabilmente suggerendo pattern più corretti e sicuri dettati dalla conoscenza degli esperti.

Sarà cruciale che i processi che verificano l’integrità e la correttezza dei programmi scritti verifichino attentamente il risultato mediante tecniche di testing per assicurare che si comporti secondo le specifiche e le attese.

Va anche detto che Copilot può essere utilizzato per valutare le proprietà del codice, chiedendo l’analisi sia in termini di correttezza che di sicurezza, questa possibilità abbatte i costi di verifica di codici sorgenti, anche vecchi, contribuendo ad individuarne potenziali vulnerabilità.

Ecco un esempio di richiesta di valutazione che produce alcune raccomandazioni del tutto ragionevoli nel semplice progetto usato:

Immagine che contiene testo, schermata, software, Software multimedialeDescrizione generata automaticamente

I programmi si scriveranno da soli?

Ci si potrebbe interrogare sul fatto di quale sia il ruolo del programmatore in un mondo in cui un programma (Copilot) scrive altri programmi. In realtà la cosiddetta “metaprogrammazione” ovverosia la scrittura di programmi da parte di altri programmi è una disciplina vecchia quanto l’informatica: un compilatore non è altro che un programma che, dato un codice sorgente scritto in un linguaggio di programmazione, genera il codice macchina equivalente a quel programma. Quello che l’AI porta quindi è semplicemente la capacità di generare una bozza di algoritmo, ma non sostituisce, almeno per ora il programmatore, quantomeno colui che è in grado di comprendere il codice generato.

Le figure professionali a rischio

Esistono però figure professionali a rischio: i programmatori di siti Web, ad esempio, non sviluppano codice complesso e normalmente non hanno abbastanza conoscenze per apprezzarne le sofisticazioni. Il codice che scrivono è spesso abbastanza semplice e regolare ed assolutamente generabile dall’intelligenza artificiale.

È quindi lecito aspettarsi una diminuzione nella richiesta di programmatori di applicazioni (grazie alla produttività aumentata con l’AI generativa). Allo stesso tempo saranno richieste maggiori competenze a questi programmatori in modo da non subire il codice generato dal processo ma poterne governare lo sviluppo in modo consapevole.

Come Copilot cambia il rapporto con la scrittura di codice

Personalmente uso Copilot da oltre un anno e posso dire che è cambiato molto il mio rapporto con la scrittura di codice: è aumentata significativamente la mia produttività, riesco a commentare il codice (o meglio, a chiedere di commentare all’AI), e riesco ad automatizzare la scrittura del codice di “plumbing” ovverosia quel codice noioso da scrivere, sempre uguale, ma necessario al funzionamento di un programma. Riesco anche a concentrarmi di più sugli aspetti critici dei sistemi che sviluppo lasciando i dettagli all’automazione dell’AI generativa. Quello che non smette mai di sorprendermi è come l’AI sia capace di adattarsi al mio stile di programmazione, mimando il mio modo di dare nomi alle variabili e agli altri oggetti del programma. Non si tratta quindi solo di scrivere codice corretto ma anche di generare codice che sia comprensibile per poter essere manutenuto in futuro.

Conclusioni

Quindi se si è programmatori è bene investire sulle proprie competenze senza cercare scorciatoie, perché saranno le competenze nella programmazione a caratterizzare il mercato del lavoro nel futuro.

EU Stories - La coesione innova l'Italia

Tutti
Video & Podcast
Analisi
Social
Iniziative
Podcast
Centro Servizi Territoriali: uno strumento per accompagnare gli enti nell’attuazione della politica di coesione. Il podcast “CapCoe. La coesione riparte dalle persone”
Podcast
EU Stories, il podcast | Politiche di coesione e comunicazione: una sinergia per il futuro
Opinioni
La comunicazione dei fondi europei da obbligo ad opportunità
eBook
L'analisi della S3 in Italia
Norme UE
European Accessibility Act: passi avanti verso un’Europa inclusiva
Agevolazioni
A febbraio l’apertura dello sportello Mini Contratti di Sviluppo
Quadri regolamentari
Nuovi Orientamenti sull’uso delle opzioni semplificate di costo
Coesione
Nuovo Bauhaus Europeo (NEB): i premi che celebrano innovazione e creatività
Dossier
Pubblicato il long form PO FESR 14-20 della Regione Sicilia
Iniziative
400 milioni per sostenere lo sviluppo delle tecnologie critiche nel Mezzogiorno
Formazione
“Gian Maria Volonté”: dalle aule al mondo del lavoro, focus sui tirocini della Scuola d’Arte Cinematografica
TRANSIZIONE ENERGETICA
Il ruolo del finanziamento BEI per lo sviluppo del fotovoltaico in Sicilia
Formazione
“Gian Maria Volonté”: dalla nascita ai progetti futuri, focus sulla Scuola d’Arte Cinematografica. Intervista al coordinatore Antonio Medici
MedTech
Dalla specializzazione intelligente di BionIT Labs una innovazione bionica per la disabilità
Finanza sostenibile
BEI e E-Distribuzione: investimenti per la sostenibilità energetica
Professioni
Servono competenze adeguate per gestire al meglio i fondi europei
Master
Come formare nuove professionalità per governare e gestire al meglio i fondi europei?
Programmazione UE
Assunzioni per le politiche di coesione: prossimi passi e aspettative dal concorso nazionale. Il podcast “CapCoe. La coesione riparte dalle persone”
innovazione sociale
Rigenerazione urbana: il quartiere diventa un hub dell’innovazione. La best practice di San Giovanni a Teduccio
Programmazione europ
Fondi Europei: la spinta dietro ai Tecnopoli dell’Emilia-Romagna. L’esempio del Tecnopolo di Modena
Interventi
Riccardo Monaco e le politiche di coesione per il Sud
Iniziative
Implementare correttamente i costi standard, l'esperienza AdG
Finanziamenti
Decarbonizzazione, 4,8 miliardi di euro per progetti cleantech
Formazione
Le politiche di Coesione UE, un corso gratuito online per professionisti e giornalisti
Interviste
L’ecosistema della ricerca e dell’innovazione dell’Emilia-Romagna
Interviste
La ricerca e l'innovazione in Campania: l'ecosistema digitale
Iniziative
Settimana europea delle regioni e città: un passo avanti verso la coesione
Iniziative
Al via il progetto COINS
Eventi
Un nuovo sguardo sulla politica di coesione dell'UE
Iniziative
EuroPCom 2024: innovazione e strategia nella comunicazione pubblica europea
Iniziative
Parte la campagna di comunicazione COINS
Interviste
Marco De Giorgi (PCM): “Come comunicare le politiche di coesione”
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politiche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Podcast
Centro Servizi Territoriali: uno strumento per accompagnare gli enti nell’attuazione della politica di coesione. Il podcast “CapCoe. La coesione riparte dalle persone”
Podcast
EU Stories, il podcast | Politiche di coesione e comunicazione: una sinergia per il futuro
Opinioni
La comunicazione dei fondi europei da obbligo ad opportunità
eBook
L'analisi della S3 in Italia
Norme UE
European Accessibility Act: passi avanti verso un’Europa inclusiva
Agevolazioni
A febbraio l’apertura dello sportello Mini Contratti di Sviluppo
Quadri regolamentari
Nuovi Orientamenti sull’uso delle opzioni semplificate di costo
Coesione
Nuovo Bauhaus Europeo (NEB): i premi che celebrano innovazione e creatività
Dossier
Pubblicato il long form PO FESR 14-20 della Regione Sicilia
Iniziative
400 milioni per sostenere lo sviluppo delle tecnologie critiche nel Mezzogiorno
Formazione
“Gian Maria Volonté”: dalle aule al mondo del lavoro, focus sui tirocini della Scuola d’Arte Cinematografica
TRANSIZIONE ENERGETICA
Il ruolo del finanziamento BEI per lo sviluppo del fotovoltaico in Sicilia
Formazione
“Gian Maria Volonté”: dalla nascita ai progetti futuri, focus sulla Scuola d’Arte Cinematografica. Intervista al coordinatore Antonio Medici
MedTech
Dalla specializzazione intelligente di BionIT Labs una innovazione bionica per la disabilità
Finanza sostenibile
BEI e E-Distribuzione: investimenti per la sostenibilità energetica
Professioni
Servono competenze adeguate per gestire al meglio i fondi europei
Master
Come formare nuove professionalità per governare e gestire al meglio i fondi europei?
Programmazione UE
Assunzioni per le politiche di coesione: prossimi passi e aspettative dal concorso nazionale. Il podcast “CapCoe. La coesione riparte dalle persone”
innovazione sociale
Rigenerazione urbana: il quartiere diventa un hub dell’innovazione. La best practice di San Giovanni a Teduccio
Programmazione europ
Fondi Europei: la spinta dietro ai Tecnopoli dell’Emilia-Romagna. L’esempio del Tecnopolo di Modena
Interventi
Riccardo Monaco e le politiche di coesione per il Sud
Iniziative
Implementare correttamente i costi standard, l'esperienza AdG
Finanziamenti
Decarbonizzazione, 4,8 miliardi di euro per progetti cleantech
Formazione
Le politiche di Coesione UE, un corso gratuito online per professionisti e giornalisti
Interviste
L’ecosistema della ricerca e dell’innovazione dell’Emilia-Romagna
Interviste
La ricerca e l'innovazione in Campania: l'ecosistema digitale
Iniziative
Settimana europea delle regioni e città: un passo avanti verso la coesione
Iniziative
Al via il progetto COINS
Eventi
Un nuovo sguardo sulla politica di coesione dell'UE
Iniziative
EuroPCom 2024: innovazione e strategia nella comunicazione pubblica europea
Iniziative
Parte la campagna di comunicazione COINS
Interviste
Marco De Giorgi (PCM): “Come comunicare le politiche di coesione”
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politiche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati

Articolo 1 di 2