Salesforce CodeT5 vs Github Copilot: una guida comparativa ai generatori di codice automatico
 
 
La creazione di codici di grandi dimensioni per i programmi software a volte può essere un’attività lunga e noiosa. Gli sviluppatori oggi sono alla ricerca di metodi e strumenti che possano aiutare la codifica e migliorare i tempi di consegna e la precisione per la produttività dello sviluppo software. Pertanto, vengono scoperte funzionalità di generazione automatica del codice che possono evolversi all’interno di linguaggi di programmazione e IDE che funzionano in fase di compilazione. La generazione automatica del codice può fungere da strumento straordinario con potenziali casi d’uso per le impostazioni aziendali. Questo articolo discuterà due degli strumenti sviluppati più di recente per la generazione automatica del codice, Salesforce CodeT5 e Github Copilot.

Codice Salesforce T5
Il CodeT5 di Salesforce è uno strumento di apprendimento automatico open source in grado di comprendere e generare prontamente codice in tempo reale. Si tratta di uno strumento codificatore-codificatore unificato e pre-addestrato che riconosce l’identificatore che consente un’ampia gamma di applicazioni di intelligenza del codice. Lo strumento mira a ridurre il tempo impiegato per scrivere software e la riduzione dei costi computazionali e operativi. Consiste in metodi di pre-addestramento del codice software che potenziano una gamma di applicazioni a valle nel ciclo di vita dello sviluppo del software . CodeT5 possiede un modello non informato per le attività di elaborazione del linguaggio naturale, che riformula il testo in testo con input e i dati di output sono sempre stringhe di testo. 

 
I metodi di pre-formazione del codice esistenti avevano due limitazioni principali affrontate da CodeT5. In primo luogo, spesso si basano su un modello di solo codificatore simile a BERT o di un modello di solo decodificatore come GPT, che non è ottimale per le attività di generazione e comprensione. In secondo luogo, i metodi attuali possono solo adottare le tecniche convenzionali di pre-addestramento della PNL sul codice sorgente considerandolo come una sequenza di token come il linguaggio naturale, che ignora in gran parte le ricche informazioni strutturali presenti nel linguaggio di programmazione, informazioni che sono vitali per comprendere appieno il codice. semantica.

Architettura e funzionamento di CodeT5
CodeT5 di Salesforce è costruito su uno schema architetturale simile al framework T5 di Google, ma incorpora una migliore conoscenza specifica del codice, che conferisce al modello una migliore comprensione del codice. Prende il codice su cui lavorare e i commenti che lo accompagnano come una sequenza su cui costruire e generare. 

Alcuni dei compiti di pre-formazione di CodeT5 includono:

Previsione dell’intervallo mascherato: maschera in modo casuale l’intervallo con le lunghezze e il decodificatore recupera l’input originale. Cattura le informazioni sintattiche dell’input NL-PL e apprende robuste rappresentazioni multilingue.
Tagging dell’identificatore: l’encoder distingue se ogni codice è un identificatore o meno. 
Previsione identificatore mascherato: utilizza lo stesso segnaposto maschera per tutte le occorrenze di un identificatore univoco. Comprende la semantica del codice in base al codice offuscato.
Bimodal Dual Generation: ottimizza congiuntamente le conversioni dal codice ai suoi commenti e viceversa. Ciò incoraggia un migliore allineamento tra le controparti NL e PL. 
 

Caratteristiche del codice T5 
Alcune caratteristiche di CodeT5 includono:

Generazione da testo a codice: può generare codice in base alla descrizione del linguaggio naturale.
Completamento automatico del codice: può completare l’intera funzione del codice, dato il nome della funzione di destinazione.
Riepilogo del codice: può generare il riepilogo di una funzione nella descrizione del linguaggio naturale.
Rischi con CodeT5
Sebbene CodeT5 possa essere un potenziale strumento per la generazione automatica del codice, ci sono ancora alcuni rischi etici che si dovrebbero considerare in anticipo. Il team di CodeT5 afferma che stanno ancora lavorando per migliorare i seguenti rischi:

Bias di automazione: a volte, il sistema potrebbe produrre funzioni che sembrano superficialmente corrette ma potrebbero non essere effettivamente allineate con gli intenti dello sviluppatore. Se gli sviluppatori adottano questi suggerimenti di codice errato, potrebbero danneggiare lo schema e causare un tempo di debug molto più lungo con problemi di sicurezza significativi.
Implicazioni sulla sicurezza: i modelli pre-addestrati potrebbero codificare alcune informazioni riservate dai dati di addestramento. È possibile che lo strumento non sia in grado di rimuovere completamente determinate informazioni sensibili e possa produrre codice che influisca in modo dannoso sul software. 
Copilota Github 
Github Copilot è uno strumento di servizio creato da GitHub e OpenAI ed è descritto come un programmatore di coppia AI. È un plug-in per Visual Studio Code e genera automaticamente il codice in base al contenuto del file corrente e alla posizione del cursore corrente. Copilot può generare intere funzioni multilinea e può anche creare documentazione e test basati sul contesto di un file di codice.

È alimentato da un modello di linguaggio di rete neurale profondo chiamato Codex, addestrato su diversi repository di codice pubblico su Github. Può aiutare a mettere a punto e ottenere risultati all’avanguardia su un’ampia gamma di problemi di PNL. 

Come funziona?
Il codice di Visual Studio invia commenti e codice digitato dallo sviluppatore al servizio Copilot, che sintetizza e suggerisce l’implementazione. Github afferma che lo strumento Copilot funge da penna per generare codice. Il primo afferma che il Copilot comprende più contesto rispetto alla maggior parte degli assistenti di codice attualmente disponibili. Utilizza il contesto fornito e sintetizza un codice da abbinare. Copilot può lavorare con un’ampia gamma di framework e linguaggi come Python , Javascript, TypeScript, Ruby e Go. È possibile scorrere i suggerimenti alternativi e i suggerimenti possono essere accettati o rifiutati con un’opzione per modificare anche manualmente il codice suggerito.  

 

 

Conversione di commenti in codice: scrivere un commento che descriva la logica e Copilot assembla il codice.
Compilazione automatica semplice: Copilot può aiutare a produrre rapidamente modelli di codice ripetitivi. Quando viene nutrito con alcuni esempi, il Copilota impara e fa il resto. 
Aiuta nei test: Copilot suggerisce automaticamente i test che corrispondono all’implementazione del codice.
Rischi con Copilot 
Github Copilot potrebbe presentare problemi sconosciuti durante l’implementazione, che possono essere un potenziale fattore di rischio, alcuni dei quali includono:

Bug durante l’implementazione: alcuni sviluppatori che hanno messo le mani su Copilot si sono lamentati del fatto che generasse un numero di bug in fase di esecuzione quando venivano addestrati su progetti Github di grandi dimensioni.
Output indesiderati: Github Copilot può talvolta produrre output indesiderati che potrebbero includere output di parte, discriminatori, offensivi o offensivi. 
Riassumendo
Sebbene i generatori di codice automatico siano strumenti che mirano ad automatizzare il lavoro di codifica noioso e dispendioso in termini di tempo per gli sviluppatori, presentano una serie di limitazioni e fattori di rischio. Questi problemi sembrano essere ancora all’opera e richiedono una forte attenzione. Nel prossimo futuro, questa tecnologia consentirà agli ingegneri esistenti di essere più produttivi, riducendo le attività manuali e aiutandoli a concentrarsi su altri aspetti interessanti del lavoro. 

Di ihal