Software

Da GitHub Copilot a GitHub Copilot X: come funzionano i software che aiutano a sviluppare software

Sviluppato da GitHub, Copilot e Copilot X sono stati progettati come estensione di un editor in modo da non interferire con l’attività di sviluppo ma per essere in grado di fornire suggerimenti in tempo reale nella scrittura di codice con la maggior parte dei linguaggi di programmazione noti

Pubblicato il 10 Lug 2023

Paolo Dotti

Quence - TXTGROUP

Da GitHub Copilot a GitHub Copilot X: come funzionano i software che aiutano 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, parliamo di github copilot.

GitHub Copilot, un innovativo programmatore di IA, ha inaugurato una nuova era nello sviluppo del software. Questo strumento rivoluzionario mantiene gli sviluppatori nel flusso di lavoro grazie al completamento automatico di commenti e codice.

In meno di due anni dal suo lancio, GitHub Copilot è già responsabile del 46% del codice scritto e aiuta gli sviluppatori a migliorare la velocità del loro lavoro fino al 55%.

Il successo in numeri di GitHub Copilot

Da qualche mese però, GitHub Copilot è stato trasformato in un assistente AI accessibile durante tutto il ciclo di sviluppo. Cioè GitHub Copilot X  basato sul nuovo modello GPT-4 di OpenAI.

L’idea è di introdurre con GitHub Copilot X  le funzionalità di chat e voce, portando questo tool nelle richieste di pull, nella riga di comando e nei documenti, per rispondere a qualsiasi domanda relativa ai progetti in lavorazione. Al momento lo si può testare dopo essere stati accettati nella lista di attesa.

Cos’è GitHub 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. Sono aggiunti anche 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 GitHub 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.

Non mancano 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.

GitHub Copilot, la schermata di accesso al software basato su ai per scrivere righe di codice

Come è stato progettato GitHub 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.

GitHub Copilot analizza il contesto nel file in scrittura e in altri file aperti nell’editor, proponendo altro codice di conseguenza.

E’  stato addestrato sul codice e su tutti i linguaggi disponibili nei repository pubblici indifferentemente dalla bontà o dall’estetica del codice. Nella documentazione di GitHub 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 GitHub Copilot.

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 GitHub 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 GitHub Copilot.

Video: Come funziona GitHub Copilot

Introduzione a GitHub Copilot

Introduzione a GitHub Copilot

Guarda questo video su YouTube

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 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:

  • Github Copilot è stato creato usando codice open source ma è stato rilasciato a pagamento.
  • Che licenza si dovrebbe adottare per il codice prodotto da GitHub 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 Github 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 GitHub 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.

Programmare con l’AI: prospettive e tendenze 

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.

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 3