Ancora prima di essere un assistente di intelligenza artificiale per programmatori e sviluppatori, GitHub Copilot si inserisce nella vasta schiera delle tecnologie che cooperano con l’uomo. Non ci sono soltanto bracci robotici o interi macchinari che facilitano il compito degli operatori umani così come non ci sono soltanto assistenti che lo aiutano a svolgere i compiti di routine quotidiani.
Anche chi programma ha un valido alleato che, almeno per il momento, non metterà in crisi la professione di chi scrive software. Un mondo ancora imperfetto che promette di cambiare le regole della stesura di codice. C’è ancora molto lavoro da fare ma i suggerimenti forniti da GitHub Copilot sono già in grado di aumentare la produttività di sviluppatori e programmatori.
Alla scoperta di GitHub Copilot: l’AI cambia l’approccio alla programmazione
GitHub Copilot sfrutta l’AI per assistere i programmatori nella scrittura di codice. È progettato per dare consigli e suggerimenti completando porzioni di codice a seconda del contesto ed è addestrato sul codice pubblicato su GitHub, un immenso repository alimentato da oltre 100milioni di programmatori.
Non sostituisce l’uomo ma fornisce un supporto che gli consente di concentrare maggiori sforzi laddove i problemi richiedono conoscenze più elevate e, nonostante il vantaggio pratico che rappresenta, GitHub Copilot mostra ancora alcuni limiti tra codice di qualità perfettibile e la poca predisposizione a evitare i bug.
Dall’idea alla realizzazione: la storia di GitHub Copilot
Quella di GitHub Copilot è una storia recente e breve che ha necessitato un anno esatto per passare dall’anteprima tecnica al prodotto finito.
A giugno del 2021 GitHub ha annunciato il lancio di Copilot nell’ambiente di sviluppo Visual Studio Code. A ottobre dello stesso anno, quindi quattro mesi dopo, è stato rilasciato come plug-in nello store di JetBrains, azienda che fornisce strumenti per lo sviluppo di software.
A giugno del 2022, dopo un percorso continuo e rapido, GitHub Copilot è uscito dalla fase di anteprima ed è stato messo a disposizione, a pagamento, per tutti i programmatori.
Allargando il focus, GitHub Copilot si erige su OpenAI Codex, versione inizialmente modificata del modello generativo GPT-3. Se lo si osserva da questo punto di vista, è declinazione di un modello linguistico che ha dato il la a diverse tecnologie, non da ultima ChatGPT.
GitHub Copilot: guida alle funzionalità essenziali
Qui passiamo in rassegna le funzionalità essenziali ma Microsoft, che ha comprato GitHub nel 2018, ospita sui propri siti delle guide più esaustive.
L’uso di GitHub Copilot non è gratuito. La licenza ha un costo che varia dai 10 ai 19 dollari al mese (rispettivamente 9,28 euro e 17,63 euro).
Le funzionalità principali riguardano il completamento del codice e il supporto per diversi linguaggi di programmazione. Mentre l’operatore digita codice, GitHub Copilot restituisce suggerimenti pratici per completarlo.
Parallelamente, GitHub Copilot può essere usato con più linguaggi di programmazione come, per esempio, Java, JavaScript, Python e Ruby.
Anche i casi d’uso di GitHub Copilot sono molteplici e si cristallizzano grazie alle estensioni dello stesso Copilot:
- Code generation: GitHub Copilot genera codice funzionale a seconda del contesto specifico. È sufficiente iniziare a scrivere una riga per potere valutare tra le alternative proposte dall’AI e scegliere quella che fa al caso
- Code explanation: è una funzionalità interessante che non va sottovalutata. Copilot spiega dal punto di vista sintattico e logico quali obiettivi si pone una porzione di codice che ha esaminato
- Refactoring: quando lavorano in gruppo, agli sviluppatori fa comodo potere uniformare i nomi delle variabili e rendere il codice più modulare. Copilot si presta a fare questo lavoro di standardizzazione che aiuta a mantenere ordine e pulizia
Non da ultimo, va tenuto presente che GitHub Copilot è lungi dall’essere perfetto ma è un cantiere in continua evoluzione e migliora con costanza.
Potenziare l’efficienza nella programmazione con l’aiuto di GitHub Copilot
La versatilità di GitHub Copilot ha ricadute positive in diverse fasi del processo di programmazione e sviluppo, su tutte vanno citate:
- La riduzione di errori: gli errori, soprattutto quelli di sintassi, non sono rari quando si scrive codice. GitHub supplisce a questo problema completando la scrittura in modo corretto
- La qualità del codice: il suggerimento di modi migliori e più efficienti per completare il codice, GitHub ne ottimizza la qualità
- La riduzione del tempo da dedicare alla documentazione: non è necessario consultare manuali e guide per ricordare funzioni e sintassi, l’operatore umano viene supportato da GitHub Copilot. Questo ha valora anche per chi sta imparando un linguaggio di programmazione
- L’automazione: le attività ripetitive o cicliche vengono riconosciute come tali da Copilot.
Una precisazione però è d’obbligo: occorre trovare un soggettivo punto di equilibrio tra l’apprendimento interamente demandato a GitHub Copilot e quello mediante dall’uomo. Copilot è un supporto, non un professore.
Copyright e IA: le incertezze del codice generato da GitHub Copilot
Le presunte invasioni illecite del copyright è tema che attuale che riguarda tutte le AI generative e GitHub Copilot non fa eccezione. C’è il timore che possa attingere a blocchi di codice che fanno parte di progetti esistenti e protetti da diritti d’autore.
È vero che una parte consistente dei progetti a cui attinge Copilot sono liberamente accessibili ma, parallelamente, ci si muove anche in meandri borderline e questo può – anche in modo involontario – ledere le direttive di alcuni tipi di licenze.
Dal canto suo, GitHub sostiene che il codice generato da Copilot lascia la proprietà intellettuale a chi lo ha sviluppato.
Proteggere la privacy e la proprietà intellettuale
La protezione della privacy e della proprietà intellettuale nell’uso di GitHub Copilot è capitale. Diversi studi hanno palesato la possibilità che i modelli linguistici possono rivelare informazioni sensibili come, per esempio, credenziali di accesso a sistemi aziendali ma anche dati personali.
La soluzione più immediata è quella di proteggere i dati con delle tecniche di crittografia e valutare modelli di crittografia omomorfa che permettono di lavorare su dati già criptati.
Queste misure sono necessarie ma per raggiungere il massimo dell’efficacia occorre inserirle nelle corrette pratiche di cyber security al fine di creare ambienti di lavoro protetti e resilienti.
Cybersecurity nell’era di GitHub Copilot: rischio o innovazione?
La risposta ovvia prevede entrambe le cose. GitHub Copilot è in continua evoluzione e non può essere considerato infallibile. Credere il contrario può inficiare negativamente sia sullo sviluppo di codice sia sulla fase di apprendimento. È uno strumento pensato per aiutare i professionisti (intesi come persone di rodata esperienza) e non per sostituirli o rimpiazzare programmatori in erba. Non “opera in vece di”, ma “in ausilio di” e tenere presente questo confine coincide con il fermarsi agli aspetti innovativi di Copilot senza addentrarsi in quelli che rappresentano un rischio.
Valutazione delle vulnerabilità nel codice suggerito da GitHub Copilot
La revisione del codice generato da un’AI non è un’opzione ma un atto dovuto. Ci sono diversi metodi per valutarne le vulnerabilità e, a prescindere dalla procedura che viene approntata, alcuni aspetti sono da intendere come imprescindibili.
Tra questi spicca la necessità di una revisione peer review del codice e l’uso di firme per garantirne l’integrità.
A ciò si affianca la necessità di validare i dati in ingresso, perché possono essere corresponsabili delle vulnerabilità palesate da Copilot.
Il codice nel suo insieme, e non solo quello generato dalle AI, deve essere controllato da operatori umani. Défaillance, bug o vulnerabilità non possono essere demandate a un assistente AI senza esporsi a facili critiche che possono causare danni di immagine agli sviluppatori e le aziende per le quali lavorano.
Pratiche di sicurezza per il codice generato da IA
Microsoft fornisce indicazioni utili anche in materia di sicurezza del codice generato con GitHub Copilot, invitando in primis a farne uso in modo ponderato.
Tra le pratiche di sicurezza consigliate, oltre al prestare attenzione alle licenze per evitare di violare contenuti protetti da diritto d’autore, vanno annoverate:
- La verifica del codice che, come detto, va demandata all’operatore umano
- La prevenzione delle vulnerabilità, con le pratiche utili a bloccare le porzioni di codice che non garantiscono sicurezza
Non da ultimo, i processi di validazione del codice devono essere organizzati secondo i principi di analisi statica, ovvero un approccio che consente di intercettare problemi di sicurezza (e bug) durante lo sviluppo di un software e non soltanto in procinto del suo rilascio in produzione.
Collaborare con l’IA: il ruolo di GitHub Copilot nel futuro del lavoro
I timori di sostituzione dell’uomo a opera delle Ai sono parzialmente fondati e GitHub Copilot è la cristallizzazione di tali paure. Se si considera l’apporto che Copilot può avere nello svolgimento di compiti ripetitivi allora è onesto parlare di sostituzione.
Per tutto ciò che è di più elevato livello GitHub Copilot, al pari di ogni altra AI generativa, è un assistente e tale resterà per un tempo difficilmente definibile che, per quanto ne sappiamo oggi, può anche essere molto lungo.
È ovvio che più l’uomo riuscirà, con la propria formazione, a garantire quelle prerogative di creatività, coscienza e astrazione, più sarà lungo il tempo durante il quale le AI generative resteranno confinate nel ruolo di assistenti.