Nel nutrito parterre di assistenti alla programmazione c’è spazio anche per GitHub Copilot, ottimizzato per la programmazione in Python, C++, C#, Go, JavaScript, Ruby e TypeScript ma in grado di fornire suggerimenti per altri linguaggi, oltre a lavorare con diversi framework.
GitHub usa un’Intelligenza artificiale per comprendere il codice che sta esaminando e propone soluzioni. Va da sé che, quando si usa il verbo comprendere, si fa riferimento a una mera contestualizzazione di superficie, giacché nessun assistente alla programmazione ha realmente contezza degli obiettivi del codice né riesce a inquadrarlo in un contesto specifico come, invece, sa fare un operatore umano.
Usando il linguaggio naturale, sviluppatori e programmatori possono fare leva su GitHub Copilot affinché intervenga in loro vece, lasciando che scriva codice.
A fronte di ogni innovazione, tuttavia, sorgono problemi da affrontare e risolvere e, come sempre più spesso accade, le soluzioni si dipanano dal punto di vista etico a quello legale.
Introduzione a GitHub Copilot e all’assistenza nella programmazione
GitHub Copilot è quello che viene definito un AI pair programmer, ossia una tecnologia per la programmazione in coppia. Già questo dice tutto: non lavora da solo e né è ragionevole pretendere che possa sostituire l’uomo. Questo solleva il primo quesito etico: nel caso in cui un errore di programmazione causasse un danno, di chi sarebbe la responsabilità? Ma ci sono questioni decisamente più terre-à-terre e le esamineremo in seguito.
Può fornire assistenza in vari linguaggi di programmazione ed è usufruibile gratuitamente da studenti, insegnanti e persone che sviluppano o mantengono progetti Open source.
GitHub Copilot è alimentato da OpenAI Codex, una versione di produzione modificata di GPT-3, ossia un Large language model che fa leva sul Deep learning per generare testo.
Storia e sviluppo di GitHub Copilot
Sviluppato da GitHub e OpenAI, è stato annunciato alla fine del mese di giugno del 2021, limitatamente all’editor di codice Visual Studio Code. Pochi mesi dopo, siamo alla fine di ottobre dello stesso anno e sempre rimanendo nell’ambito dell’anteprima tecnica, il plug-in GitHub Copilot per l’editor Neovim è stato reso accessibile al pubblico.
A seguire, a fine marzo del 2022, è stata annunciata la versione per Visual Studio e, a giugno, GitHub ha sancito il termine della fase di anteprima tecnica, rilasciando Copilot come servizio per gli sviluppatori.
Caratteristiche principali e funzionalità
GitHub Copilot offre diversi atout i quali, in definitiva, fanno leva sul linguaggio naturale, ossia sulla capacità di “comprendere” il contesto in cui si muove.
Tra le caratteristiche e le funzionalità principali possiamo annoverare:
- il completamento automatico: fornisce suggerimenti per continuare la stesura del codice
- il supporto: GitHub Copilot può essere usato con diversi linguaggi di programmazione
- il miglioramento: l’AI impara da sé stessa e più viene impiegata più si perfeziona
- l’integrazione: può essere usato in diversi ambienti di sviluppo integrato (IDE), tra i quali JetBrains, Visual Studio, Visual Studio Code e Neovim
- i commenti: i commenti, ossia quelle note (introdotte dai simboli # oppure ‘’’) che gli sviluppatori inseriscono per spiegare cosa fa una porzione di codice, possono essere convertite automaticamente in codice eseguibile.
Paradossalmente, le caratteristiche e i punti di forza di GitHub Copilot nascondono anche parte delle sue debolezze così, il fatto che possa apprendere da sé lascia chiaramente intendere che è perfettibile e quindi non ciecamente affidabile.
Integrazione dell’AI nella produttività degli sviluppatori software
I vantaggi che l’AI apporta alla produttività sono abbastanza comuni a prescindere dagli ambiti in cui questa viene impiegata.
A pesare sui piatti della bilancia intervengono l’aumento della produttività, il miglioramento dell’efficienza (e quindi anche della qualità del codice). Poiché l’AI si presta all’automazione di flussi e processi, va da sé che gli automatismi possono anche essere applicati a intere porzioni di codice.
L’atout più pregiato delle AI è però misurabile sulla lunga distanza: favorire l’innovazione e consentire di affrontare problemi complessi rendendoli più abbordabili. E ciò non crea soltanto vantaggi competitivi tra imprese del medesimo comparto, ma può essere determinante nell’avanzamento di un intero sistema economico, politico e sociale.
Come GitHub Copilot migliora efficienza e concentrazione
Sapere di avere “qualcuno” al proprio fianco mentre si lavora, “qualcuno” su cui fare affidamento anche per suddividere i carichi di lavoro, facilita la concentrazione su ciò che si sta facendo, riuscendo ad aumentare il focus e quindi anche la velocità di esecuzione.
I dati più recenti dicono che Copilot può aumentare la concentrazione degli sviluppatori fino al 74%, la loro efficienza fino all’88% e l’automazione delle attività ricorsive si avvicina al 100%. Dati che riportiamo per correttezza, sottolineando però che si tratta di risultati sortiti da ricerche effettuate da GitHub e, come si suole dire, l’oste è la persona meno indicata per giudicare il proprio vino.
Diritti d’autore e proprietà Intellettuale: la sfida di GitHub Copilot
Quello dei diritti d’autore è un tema enorme che miscela aspetti pratici a quelli più filosofici e persino etici.
L’Ue si sta interessando al problema della violazione dei diritti d’autore, perché è aspetto fondante non solo della tutela intellettuale propriamente detta, ma anche perché può rappresentare un freno nello sviluppo delle stesse AI.
Alla fine del 2022 GitHub Copilot è stata investita da una bufera giuridica. Secondo lo sviluppatore Tim Davis, Copilot avrebbe usato grandi porzioni di un suo codice protetto da diritto d’autore.
Più in generale Microsoft, OpenAI e GitHub sono finite al centro di una class action che lamenta danni per almeno 9 miliardi di dollari.
GitHub si è fatta prendere in contropiede, sostenendo di avere alcune misure per impedire la diffusione di codice protetto da diritti d’autore ma di dovere lavorare ancora molto per perfezionarle.
Trovare una soluzione è certamente possibile, ma richiederà del tempo (e molti dibattiti).
Implicazioni legali del codice generato dall’AI
Non ci sono Paesi che hanno già formulato leggi per la tutela della proprietà intellettuale nell’ambito delle AI. Un argomento che necessita di due elementi inalienabili, ovvero:
- stabilire in modo chiaro chi detiene i diritti del risultato di un’AI
- stabilire in che modo tali diritti possono essere tutelati.
Le implicazioni legali sfociano nell’etica e, benché Europa e Giappone siano al lavoro per dipanare questa matassa, la soluzione non appare essere dietro l’angolo.
A complicare l’intera faccenda subentrano gli ordinamenti giuridici dei diversi Paesi.
La conservazione del codice e la privacy delle aziende
GitHub Copilot non inventa, attinge a codice accessibile online e questo pone un quesito di non poco conto. Chi produce codice con Copilot potrebbe farne un uso proprietario, ben sapendo che parte di tale codice è in realtà Open, andando così a monetizzare un software architettato anche su codice libero.
Non di meno, occorre ancora comprendere quanto GitHub Copilot sia conforme al Digital Millennium Copyright Act (DMCA) che impone di non rimuovere informazioni sul diritto d’autore.
Per quanto riguarda la privacy, la questione può considerarsi ancora più intricata. GitHub Copilot raccoglie informazioni dai dati, dai prompt e dai suggerimenti. Di fatto:
- i dati sono quelli generati da chi fa uso dell’AI durante il coding
- il prompt è formato dal codice e dalle informazioni che Copilot invia a GitHub per generare suggerimenti
- i suggerimenti sono ciò che Copilot restituisce dopo avere ricevuto un prompt.
GitHub certifica di non conservare i suggerimenti e di scartare i prompt dopo essere stati elaborati. I dati, tuttavia, vengono conservati per 24 mesi e, dove necessario, condivisi con Microsoft (che ha acquistato GitHub nel 2018).
Benché nasca qualche dubbio in materia di privacy, va anche detto che Microsoft è molto attenta alle norme nazionali e sovranazionali che la proteggono.
Vulnerabilità e sicurezza nel codice suggerito
GitHub Copilot usa un’infrastruttura Azure crittografata e, sempre grazie all’Intelligenza artificiale, previene codifiche insicure.
Ciò non toglie – e si ritorna all’etica – che non si possa partire dal presupposto secondo il quale il codice generato sia sicuro. È fuori da ogni logica pretenderlo, così come è fuori da ogni logica rifugiarsi dietro alle debolezze del codice generato da GitHub Copilot per rispondere di eventuali danni causate dalla vulnerabilità del codice stesso.
Chi usa GitHub Copilot deve analizzare il codice in modo approfondito per implementare quelle misure che ne riducono la vulnerabilità.
Best practice per la verifica del codice AI-generated
Cercando di restituire un’immagine visibile, si può affermare di trovarci davanti a una casa di due piani. Il primo dei due include verifiche che si sovrappongono a quelle del software sviluppato interamente dall’uomo. Una fitta rete di verifiche contenute nelle oltre 140 pagine di raccomandazioni elencate dall’Agenzia per l’Italia digitale.
Il secondo piano riguarda una prettamente il codice prodotto anche solo parzialmente con le AI e richiamano l’esigenza di:
- la revisione del codice attraverso un processo di peer review
- la firma del codice diventa essenziale per garantirne l’integrità e questo, a sua volta, rimanda a un’espressa best practice per gestire il modo in cui si tiene traccia delle firme
- la validazione dei dati in ingresso deve prevedere le possibili vulnerabilità e quindi essere ingegnerizzata mediante meccanismi opportuni per la convalida.
L’operatore umano deve in ogni caso rivedere tutto il codice, anche per mettersi al riparo da eventuali conseguenze legali e reputazionali.
L’impatto di Copilot sulla professione del programmatore
Secondo Antonio Cisternino, professore all’Università di Pisa, il segno di Copilot (e delle AI di sostegno del coding) si farà sentire, riducendo la domanda di programmatori, soprattutto in riferimento a chi ha competenze di base.
Al di là del fatto che oggi sia prematuro stimare in che modo o in che percentuale la domanda di programmatori possa restringersi, è opportuno concentrarsi sulla necessità di nuovi programmi formativi, di diffondere la cultura computazionale – legata all’uso delle AI in generale – e di fornire una preparazione adeguata ai lavoratori e ai cittadini del futuro.
Collaborazione Uomo-Macchina: sostituzione o assistenza?
Le previsioni condividono il destino di essere potenzialmente sbagliate. Per quanto riguarda la collaborazione uomo-macchina si parlerà però tanto di sostituzione quanto di assistenza. La macchina sostituirà l’uomo nello svolgimento dei compiti più elementari, usuranti o rischiosi e lo affiancherà in quelli più elevati.
Così, anche nell’ambito della programmazione, chi ha conoscenze di base sarà sostituito e chi ha skill più elevate potrà contare su un aiuto instancabile, preciso e (per principio almeno) poco propenso all’errore.
Sviluppare nuove competenze in un’era di automazione
È un tema vasto, che include sì la scuola (anche primaria), ma che dovrebbe tendere a ridisegnare i rapporti tra i mondi dell’istruzione e il mondo del lavoro. Quest’ultimo cambia più in fretta di quanto il secondo sia propenso a fare e, pure formando giovani per il mondo del lavoro come è oggi, finiti i cicli scolastici, industrie e mercati potrebbero avere necessità diverse rispetto a quelle odierne.
Deve cadere il concetto di nozionismo come lo conosciamo, le competenze devono essere meno didascaliche e più concettuali. Una missione impervia, perché la metamorfosi dello sviluppo delle competenze resterà sempre un passo indietro rispetto alle tecnologie, ma colmare le distanze è possibile.