GitHub Copilot è ora pubblico: ecco cosa devi sapere


GitHub ha annunciato la scorsa settimana che rilascerà al pubblico Copilot, il suo strumento “programmatore di coppie AI” . Copilot utilizza l’intelligenza artificiale per fornire una gamma di funzioni di supporto, tra cui istruzioni di completamento automatico, generazione di intere funzioni e trasformazione di docstring e descrizioni in codice sorgente funzionale.

Copilot è stato lanciato come anteprima tecnica nel 2021 . Ora tutti gli sviluppatori possono richiedere Copilot, che si installa come estensione negli ambienti di sviluppo integrato (IDE) come Visual Studio, VS Code, Neovim e JetBrains IDE.


In che modo l’IA può aiutare a proteggere i dispositivi della tua organizzazione in esecuzione sull’edge durante tutto il loro ciclo di vita; Ascolta diverse prospettive da Goldman Sachs e AMD 1
Al momento del rilascio di Copilot, c’era molta eccitazione per le sue straordinarie capacità di codifica. Ma c’erano anche dubbi su quanto ci si potesse fidare delle sue capacità e se avesse un impatto reale sulla produttività degli sviluppatori. Dopo un anno e miliardi di righe di codice, Copilot è finalmente pronto per essere nelle mani di ogni sviluppatore.

Ecco cosa sappiamo dell’effetto di Copilot sulle attività di programmazione reali, raccontato dai suoi creatori e sviluppatori che lo hanno utilizzato nel loro lavoro quotidiano.


Quanto codice viene scritto con Copilot?
Dietro Copilot c’è l’ architettura del trasformatore , il tipo di modello di apprendimento profondo utilizzato nei modelli linguistici di grandi dimensioni come GPT-3 e LaMDA . I trasformatori sono particolarmente efficaci nell’elaborazione di dati sequenziali come testo, codice software e sequenze di proteine. Dato un prompt, un modello di trasformatore può prevedere gli elementi successivi della sequenza, che si tratti di parole o istruzioni del computer. Copilot è basato sul Codex di OpenAI , un trasformatore che è stato addestrato su decine di milioni di repository di codice. Una volta installato sul tuo IDE, Copilot fornisce suggerimenti basati sul codice esistente nel tuo file e suggerimenti, come i nomi delle tue funzioni e classi e i commenti nel tuo codice.


Vale la pena notare che Copilot non pensa e programma come un programmatore . Ma poiché è stato esposto a enormi quantità di codice sorgente, può fornire ottimi suggerimenti sul codice, specialmente su attività standard e ripetitive che si verificano frequentemente nella scrittura di software. 

Secondo GitHub, più di 1,2 milioni di sviluppatori hanno utilizzato l’anteprima tecnica di Copilot negli ultimi 12 mesi. Nei file in cui Copilot è abilitato, rappresenta quasi il 40% del codice nei linguaggi di programmazione più diffusi come Python.

Ryan J. Salva, VP del prodotto presso GitHub, ha detto a VentureBeat che, sebbene sia difficile dire quanto del codice fatto con Copilot sia reale sviluppo di software invece di esplorare lo strumento, il rapporto del 40% sembrava reggere poiché gli sviluppatori utilizzavano Copilot nell’arco di diversi giorni.

Github Copilot riduce le distrazioni
“Gli sviluppatori parlano spesso del valore di rimanere ‘nel flusso’ e dell’impatto positivo che [Copilot] ha sulla loro produttività, creatività e felicità generale”, ha affermato Salva. 

Secondo Salva, in un sondaggio distribuito a 17.000 sviluppatori durante l’anteprima tecnica di Copilot, oltre il 75% degli sviluppatori ha dichiarato che quando utilizza Copilot “spende meno sforzi mentali in attività di programmazione ripetitive”, “si concentra su un lavoro più soddisfacente” e “rimane nel flusso”.

“Riducendo al minimo le distrazioni e creando il tempo di concentrazione, non solo portiamo a termine il lavoro, ma creiamo giornate migliori e meno stressanti”, ha affermato Salva. “Aneddoticamente, abbiamo sentito storie di sviluppatori che utilizzano Copilot per apprendere nuovi linguaggi di codifica, generare rapidamente codice standard per attività comuni, scrivere espressioni regolari o semplicemente richiamare la sintassi di un’API senza dover consultare la documentazione”.


Gli sviluppatori VentureBeat hanno parlato per confermare alcuni di questi punti. Abhishek Thakur, un ingegnere di machine learning presso Hugging Face, utilizza Copilot da giugno 2021. Lo ha utilizzato nello sviluppo di AutoTrain, uno strumento senza codice per la formazione di modelli di machine learning all’avanguardia. Lo usa anche per gare di machine learning su Kaggle, realizzando tutorial e partecipando ad hackathon.

“Quando sto programmando, voglio il minimo distrazioni. In questo modo, Copilot è stato di grande aiuto. Ha ridotto il tempo che potrei dedicare alla ricerca di soluzioni sul Web e le ho invece a portata di mano nel mio IDE preferito”, ha affermato Thakur.

Molti sviluppatori cercano soluzioni a piccoli problemi sui motori di ricerca e su StackOverflow, un forum web in cui gli sviluppatori condividono frammenti di codice per attività specifiche. 

“Dopo aver utilizzato Copilot, visito raramente questi siti Web e posso concentrarmi piuttosto sulla codifica”, ha affermato Thakur.

“Se ho dei dubbi, provo a scrivere commenti e lascio che Copilot mi aiuti a finire i blocchi di codice”, ha detto Thakur. “Potrebbe non essere sempre perfetto, ma dà una buona idea di come si può scrivere il codice. Il resto spetta allo sviluppatore da modificare e riutilizzare. Lo stesso vale per StackOverflow: non ha sempre la risposta, ma ha molte buone risposte che potrebbero adattarsi al tuo caso d’uso e puoi modificare e riutilizzare. “

Affrontare le attività ripetitive con Copilot
Louis Castricato, stagista di ricerca presso Hugging Face e precedentemente presso EleutherAI, ha utilizzato Copilot per il calcolo scientifico, dove le funzioni sono spesso ingombranti e difficili da usare. Una di queste funzioni è l’einsum di PyTorch, che richiede parametri ingombranti sulle dimensioni dei tensori che si desidera calcolare.



“Einsum è molto non intuitivo per le persone che non l’hanno mai usato prima e richiede di prestare molta attenzione alla forma che i tuoi tensori stanno assumendo ad ogni istruzione all’interno di una chiamata al tuo modello”, ha detto Castricato. “Copilot è particolarmente bravo a dedurre la forma di un tensore e scrivere automaticamente operazioni einsum, oltre a scrivere commenti che spiegano le scelte che ha fatto scrivendo l’espressione einsum”.

Anche Snir Shechter, responsabile del team di ricerca e sviluppo di Aporia, utilizza Copilot da quasi un anno. “Durante lo sviluppo del nostro prodotto principale in Aporia, Copilot mi aiuta a scrivere il codice facile”, ha affermato. “Date buone convenzioni di denominazione, Copilot è in grado di completare l’intera funzione/blocco successivo di codice. Dopodiché, ho solo bisogno di rivedere per vedere che tutto va bene (e possibilmente aggiungere una logica più specifica). È davvero ottimo per completare il codice generico/ripetitivo e lo capisce in base al contesto.”

Le prestazioni di Copilot si distinguono in particolare per compiti lunghi e ripetitivi. Un esempio è l’avvio di un server HTTP, che di solito richiede diverse righe di codice e modifiche, a seconda della lingua in cui viene scritto. In uno studio, GitHub ha richiesto a metà dei partecipanti di scrivere manualmente il codice del server HTTP e all’altra metà di completare l’attività utilizzando Copilot. 

“I dati preliminari suggeriscono che gli sviluppatori non solo hanno maggiori probabilità di completare il loro compito quando utilizzano Copilot, ma lo fanno anche in circa la metà del tempo”, ha affermato Salva.

Spingere gli sviluppatori a documentare meglio il codice
Copilot funziona meglio quando i programmatori forniscono descrizioni più dettagliate. È interessante notare che il suo utilizzo ha spinto gli sviluppatori a documentare meglio il loro codice.


“Nei primi mesi dell’anteprima tecnica, abbiamo visto Copilot cambiare il comportamento delle persone durante la scrittura del codice, in particolare scrivendo commenti migliori e più dettagliati”, ha affermato Salva. “Questo non è solo per migliorare i suggerimenti di Copilot, ma rende più facile la lettura per gli altri”.

Copilot è anche diventato un buon strumento per documentare il codice del software, un’attività che viene spesso trascurata, soprattutto quando i programmatori inseguono le scadenze.

Castricato usa Copilot per documentare il suo codice, completando automaticamente le docstring e digitando suggerimenti in Python. Ciò migliora la leggibilità del codice e rende più facile per se stesso e per altri sviluppatori gestire il codice in un secondo momento. 

“Copilot ha aumentato la quantità di documentazione che scrivo per il mio codice di almeno 2x o 3x”, ha affermato.

I limiti di Copilot
“[Copilot] è spesso piuttosto scarso nell’implementazione di interi algoritmi”, ha affermato Castricato. “Ad esempio, quando ho ricevuto per la prima volta Copilot, volevo vedere se poteva implementare forme di base di programmazione dinamica senza una guida significativa. Ha fallito miseramente e mi sono reso conto molto rapidamente che per utilizzare Copilot al massimo delle sue capacità, è necessario spiegare (attraverso commenti) in dettaglio i passaggi che Copilot deve intraprendere per implementare un determinato algoritmo”.

Oltre alle attività di base, Copilot avrà bisogno di ampi commenti per funzionare correttamente. E in alcuni casi, sarà necessario un file di codice completamente strutturato per fornire suggerimenti utili. 


“A questo proposito, Copilot è molto lontano dal sostituire anche il più rudimentale degli ingegneri del software”, ha affermato Castricato.

Salva ha riconosciuto che Copilot è ancora un work in progress e una nuova esperienza per gli sviluppatori. Il team del prodotto continua a imparare le lezioni da come gli sviluppatori lo utilizzano e stanno adattando il modello di intelligenza artificiale che lo alimenta.

“Copilot cerca di capire il tuo intento e di generare il miglior codice possibile, ma il codice che suggerisce potrebbe non funzionare sempre o addirittura avere senso”, ha detto Salva. “Mentre stiamo lavorando sodo e osservando i progressi nella generazione di codice migliore di Copilot, i suggerimenti dovrebbero essere attentamente testati, rivisti e controllati, come qualsiasi altro codice. Stiamo raccogliendo dati di telemetria per migliorare il modello, che suggeriamo agli utenti nell’interfaccia utente”.

Copilot vale il prezzo?
Per il momento, Copilot sarà offerto a $ 10 al mese, o $ 100 all’anno, con una prova gratuita di 60 giorni, che sembra essere un affare per gli sviluppatori di software. Inoltre, lo strumento sarà gratuito per studenti e manutentori di popolari progetti open-source.

“Penso che valga pienamente il prezzo da pagare”, ha detto Thakur. “In qualità di ingegnere di machine learning, so che molto è necessario per la creazione di prodotti come questi, in particolare Copilot, che fornisce suggerimenti con una latenza inferiore al millisecondo. Costruire un’infrastruttura che serva gratuitamente questo tipo di modelli non è fattibile nel mondo reale per un periodo di tempo più lungo”.
Thakur ha anche osservato che, poiché i costi dell’infrastruttura di intelligenza artificiale continuano a ridursi, il prezzo di Copilot potrebbe diminuire in futuro. 

“Ma a questo punto, secondo me, vale assolutamente il prezzo, soprattutto per uno come me che usa Copilot quasi ogni giorno dall’anteprima”, ha detto.

Castricato ha affermato che Copilot gli ha risparmiato più ore a settimana e talvolta anche un giorno o due di risoluzione dei problemi a settimana. 

“Copilot mi consente di testare rapidamente molti esperimenti, spesso senza dover dedicare molto tempo al debug. Una serie di esperimenti che convenzionalmente mi richiederebbero giorni per essere implementati, invece, mi richiede un giorno”, ha detto. “Come strumento professionale, vale il suo prezzo. Certamente mi fa più di $ 10 al mese. Riesco facilmente a vedere qualsiasi grande azienda giustificare una licenza di Copilota per tutto il proprio personale tecnico. È una spesa quasi banale».

Salva crede che questo sia solo l’inizio della programmazione potenziata dall’intelligenza artificiale e vede Copilot come il passo successivo di una lunga serie di strumenti per sviluppatori.

“Come abbiamo visto con il compilatore, i linguaggi di programmazione di livello superiore e lo stesso open source, i progressi degli strumenti hanno amplificato l’impatto che gli sviluppatori hanno nel nostro mondo”, ha affermato. “Allo stesso tempo, quegli stessi strumenti non sostituiscono l’esperienza, l’abilità e la creatività di uno sviluppatore”.

Con strumenti migliori, ha aggiunto, la domanda del settore per gli sviluppatori è aumentata costantemente. “Siamo ottimisti sul fatto che GitHub Copilot avrà effetti simili, integrando il lavoro degli sviluppatori e consentendo loro di scrivere codice più facilmente con maggiore attenzione e creatività”, ha affermato.

Di ihal