Software

Copilot, il software che aiuta a sviluppare software

Sviluppato da GitHub e rilasciato da pochi mesi, è stato progettato come estensione di un editor in modo da non interferire con l’attività di sviluppo ma di essere in grado di fornire suggerimenti in tempo reale nella scrittura di codice con la maggior parte dei linguaggi di programmazione noti [...]
Paolo Dotti

Aton It

GitHub Copilot
  1. Home
  2. Intelligenza Artificiale
  3. Copilot, il software che aiuta a sviluppare software

La macchina che crea se stessa: non è un film di fantascienza, è già disponibile per tutti gli utenti di GitHub una estensione dei principali IDE che aiuta lo sviluppatore a scrivere codice. Anzi, lo scrive per lui. La produzione di software con un elevato livello di affidabilità, usabilità, sicurezza e aderenza ai requisiti fa parte dei risultati di successo dell’arte dello sviluppo; non c’è da stupirsi che gli umani cerchino di affidare alle macchine i compiti più ripetitivi e riutilizzino componenti già sviluppati e collaudati. Copilot offre ancora qualcosa in più: un software che aiuta a sviluppare software. Strumento sviluppato da GitHub e rilasciato da pochi mesi, è stato progettato come estensione di un editor in modo da non interferire con l’attività di sviluppo ma di essere in grado di fornire suggerimenti in tempo reale nella scrittura di codice con la maggior parte dei linguaggi di programmazione noti.

Cos’è Copilot

GitHub presenta Copilot come uno dei suoi scopi principali ovvero far felici gli sviluppatori. Dal 21 giugno 2022 è stato reso disponibile a tutti gli utenti privati con un periodo iniziale gratuito di prova. Con l’annuncio del lancio del prodotto vengono descritte le sue principali caratteristiche.

  • Suggerimenti sul codice basati su intelligenza artificiale: ottenere non solo singole parole o singole righe di codice ma interi blocchi, inerenti al contesto e allo stile con la possibilità di accettare rifiutare o modificare.
  • Utilizzo dell’IDE preferito: GitHub Copilot è integrato con gli ambienti di sviluppo più popolari, Neovim, JetBrains IDEs, Visual Studio, Visual Studio Code.
  • Imparare un linguaggio facendosi aiutare: descrivere in linguaggio naturale il desiderato e lasciare che Copilot suggerisca la sintassi e il codice in uno o più linguaggi di programmazione; un modo per imparare a programmare con un linguaggio che non si conosce.

Quando si scrive codice o anche dei commenti, GitHub Copilot suggerisce il codice successivo e non si tratta solo di parole o di una singola linea, ma metodi completi, interi blocchi di codice fino ad algoritmi complessi. Lo sviluppatore scrivendo un commento o descrivendo quello che gli serve può farsi scrivere il codice nel linguaggio di programmazione preferito.

Una ulteriore funzionalità di Copilot, che può essere disabilitata a scelta, è che può utilizzare lo stesso codice scritto dall’utente per aumentare il suo dataset di addestramento e migliorare la qualità del suo output.

Le ultime novità sono i comandi vocali; “Hey, GitHub!” è una piattaforma che fa uso di Copilot per scrivere codice usando solo comandi vocali, senza utilizzo della tastiera, o quasi.

copilot

Come è stato progettato Copilot: pregi e difetti

Ma attenzione, GitHub Copilot è un “programmatore” dotato di intelligenza artificiale, basato su OpenAI Codex, un prodotto di OpenAI che traduce il linguaggio naturale in codice. Copilot analizza il contesto nel file in scrittura e in altri file aperti nell’editor, proponendo altro codice di conseguenza.

Copilot è stato addestrato sul codice e su tutti i linguaggi disponibili nei repository pubblici indifferentemente dalla bontà o dall’estetica del codice. Nella documentazione di Copilot si sottolinea che essendo addestrato su codice open source potrebbe contenere bugs, parti di codice non sicure, API datate; il codice prodotto non è perfetto e non è detto che sia abbia senso e funzioni. La responsabilità della qualità del codice appartiene sempre alla persona che lo scrive; il programmatore è responsabile del codice che scrive e che si fa scrivere da Copilot.

WHITEPAPER
Gestisci i dati dei tuoi impianti in sicurezza grazie a un sistema OT/IIoT
Big Data
Manifatturiero/Produzione

Per fare un esempio pratico si pensi a un sistema di intelligenza artificiale addestrato per riconoscere le specie animali in fotografie o video; se male addestrato, fornendo un dataset di addestramento non completo ed esaustivo, produrrà errori ogni volta che analizzerà immagini con specie su cui non è stato istruito. Se per alcuni linguaggi, meno popolari, il dataset di addestramento è ridotto, i risultati del codice proposto da Copilot saranno meno affidabili. Ad oggi sembra che uno dei linguaggi più presenti nei repository pubblici sia Javascript, che ovviamente è uno dei meglio supportati da Copilot.

Introduzione a GitHub Copilot

Video: Come funziona Copilot

L’evoluzione del software

I primi software probabilmente venivano scritti in linguaggio assembly che non è proprio il più semplice, ma una volta sviluppati dei componenti riutilizzabili si è passati a linguaggi di più alto livello. Non si riscrive ciò che è già disponibile se questo è già ad un livello ottimale. Ecco che abbiamo a disposizione linguaggi di programmazione con una dotazione di funzionalità già pronte e collaudate, non dobbiamo reinventare la ruota. Oggi i linguaggi di alto livello dispongono di moduli per ogni tipo di integrazione con terze parti o per interagire a basso livello coi sistemi operativi e con dispositivi e periferiche; lo sviluppatore, per esempio, non ha più bisogno di conoscere il protocollo per comunicare con una stampante o con una webcam o dei sensori, è tutto racchiuso in un driver già pronto e collaudato. Siamo anche nell’era dell’intelligenza artificiale, quale occasione migliore di farsi aiutare in maniera corposa nello sviluppo software. Da decenni ormai gli ambienti di sviluppo (IDE – Integrated Development Environment) forniscono suggerimenti, correzioni, completamento automatico (intellisense), riconoscimento della sintassi (syntax highlighting), personalizzazione dello stile di scrittura, integrazione con altri strumenti o componenti e quant’altro.

Free o a canone? Quanto costa Copilot

Copilot è disponibile dalla data di rilascio per tutti gli utenti GitHub con un’offerta di due mesi di prova gratuita e, se si intende continuare a usufruirne, un successivo canone mensile o annuale attualmente di 10 dollari/mese o 100 dollari/anno. Possono utilizzarlo gratuitamente previa verifica studenti, docenti e utenti che manutengono progetti pubblici open source su GitHub.

Molto velocemente dopo la data di rilascio ufficiale è insorta la comunità open source con due motivazioni interconnesse:

  • Copilot è stato creato usando codice open source ma è stato rilasciato a pagamento.
  • Che licenza si dovrebbe adottare per il codice prodotto da Copilot.

Il tema si sviluppa in diversi scenari dipendenti da chi scrive il codice, a quale licenza è soggetto. In seguito a numerosi dibattiti la SFC (Software Freedom Conservancy) ha lanciato un sito dove invita gli sviluppatori di progetti open source ad abbandonare la piattaforma GitHub. Ovviamente è implicito l’invito a usare sistemi alternativi a Copilot; basta fare una ricerca in internet per trovare almeno una decina di suggerimenti, ma tra i tanti, a volte specifici per un singolo ambiente di sviluppo o un singolo linguaggio ne citiamo due in particolare:

  • GPT-Code-Clippy (GPT-CC) è una versione open source di Copilot; utilizza un modello GPT-3 per generare codice ed è addestrato su codice pubblicamente disponibile.
  • Tabnine, capace di auto-completamento su tutti i linguaggi di programmazione, integrato con gli IDE più popolari; lavora localmente e non condivide il codice scritto. È ottimizzato sul codice dell’utente.

Conclusioni

Sorgono spontanee domande su come evolveranno gli sviluppatori di software, i nuovi linguaggi di programmazione; che compiti avranno se l’intelligenza artificiale svolgerà la maggior parte del lavoro. All’interno di un contesto più ampio, l’intelligenza artificiale sta abbracciando e supportando tutti i settori tecnologici e non solo, toccando anche l’arte, la letteratura, il gioco. Quale sarà il ruolo dell’essere umano è un tema ricorrente. Almeno per GitHub Copilot possiamo dire che l’utente umano sarà responsabile della verifica di quanto suggerito dall’intelligenza artificiale, dovrà comunque avere le competenze per stabilire se la qualità del codice prodotto è sufficientemente elevata e il progetto può essere portato in produzione. Copilot ci aiuta, può fornire aiuti eccezionali, ma come dice GitHub, la responsabilità finale è dello sviluppatore.

 

 

FacebookTwitterLinkedIn
FacebookTwitterLinkedIn