il punto

Programmare con l’intelligenza artificiale: modelli a confronto



Indirizzo copiato

La programmazione è un’attività complessa che si è specializzata col crescere della dimensione dei programmi. Facciamo il punto sui modelli di AI disponibili, come ChatGPT, Copilot di GitHub (Microsoft), Code Whisperer di Amazon, Code LLaMa di Meta e sulle aspettative nei loro confronti, anche rispetto all’impatto sul mestiere del programmatore

Pubblicato il 14 set 2023

Antonio Cisternino

Università di Pisa



shutterstock_2113136912.jpg

Uno degli ambiti in cui le tecnologie dell’AI generativa sta mostrando già un impatto significativo è nella manipolazione dei programmi, portando ad un’accelerazione nello sviluppo di sistemi software grazie ad un incremento significativo della capacità della scrittura e di analisi di programmi.

Si è trattato di uno dei comportamenti emergenti dei modelli LLM come GPT che hanno forse più sorpreso, ed è ormai noto che si tratta di una capacità che emerge al crescere del numero di parametri del modello.

Ovviamente è possibile specializzare la fase di apprendimento in modo che l’AI acquisisca specificamente i programmi, anche se la capacità di generare ed analizzare il linguaggio naturale resta un elemento essenziale anche nella programmazione. Facciamo il punto sui modelli disponibili, come ChatGPT, Copilot di GitHub (Microsoft), Code Whisperer di Amazon, Code LLaMa di Meta e quali devono essere le aspettative nei loro confronti, anche rispetto a come questi sistemi rivoluzioneranno il mestiere del programmatore.

Come impiegare l’AI nella programmazione

La programmazione è un’attività complessa che si è specializzata nel tempo al crescere della dimensione dei programmi. I linguaggi di programmazione hanno cercato di supportare i programmatori nella composizione di programmi sempre più complessi fornendo numerosi strumenti di automazione, partendo dalla compilazione in linguaggio macchina, passando per gli strumenti di debugging interattivo, per poi arrivare a programmi che coordinano l’esecuzione di altri programmi (ignoti al tempo della scrittura dei primi) come avviene da trent’anni nel Web.

È necessario innanzitutto capire quindi in quali fasi del processo di sviluppo e manutenzione del software trovano applicazione questi modelli, e come vedremo ad oggi sono solo parzialmente confrontabili poiché funzionano su presupposti differenti.

La generazione del codice

Sebbene possa essere sorprendente chiedere a ChatGPT di generare un programma che genera il frattale di Mandelbrot ed ottenere, se si è fortunati, una versione dell’algoritmo eseguibile, la generazione di un algoritmo è completamente diversa dalla generazione di un sistema. Un sistema è un enorme castello di carte dove ciascun elemento si deve incastrare perfettamente con gli altri pena un errore e la terminazione del programma. È necessario quindi un supporto pervasivo nella generazione di codice al fine di sviluppare sistemi, e di conseguenza l’integrazione in strumenti di sviluppo capaci di fornire il contesto al modello di AI al fine di proporre completamento di blocchi di codici (inclusi i commenti).

Microsoft si è mossa con largo anticipo in questo settore: con l’acquisizione di GitHub nel 2018 per 7,5 miliardi di dollari si è assicurata il più grande servizio di hosting di codice aperto esistente e di conseguenza la possibilità di usare i codici aperti per addestrare i propri modelli di AI.

Il sistema Copilot di GitHub è stato uno dei primi ad essere rilasciato ed integrato in ambienti di sviluppo come Microsoft Visual Studio e Visual Studio Code (editor open source molto popolare).

Nell’immaginario collettivo la scrittura di codice è un’attività altamente creativa che solo hacker che leggono simboli in stile Matrix riescono a fare, ma la realtà dei fatti è che la maggior parte del codice di un sistema è noioso e ripetitivo, e se non è scritto bene ne può compromettere facilmente il comportamento. La mia personale esperienza con Copilot è che le proposte del codice sono spesso abbastanza corrette e il codice che genera, anche se con qualche aggiustatina è, fa risparmiare una rilevante quantità di tempo, soprattutto nel caso di codice ripetitivo si può facilmente ottenere un’accelerazione di un fattore 10x o anche di più.

A titolo di esempio ecco una proposta nella generazione di una classe in un progetto Open Source a cui sto lavorando. Come si può vedere dall’intestazione Copilot ha correttamente dedotto praticamente tutto il codice della classe (in grigio) e premendo “TAB” mi sono limitato ad accettare il suggerimento come punto di partenza.

Immagine che contiene testo, schermata, Carattere, numeroDescrizione generata automaticamente

Il sistema è capace anche di suggerire, oltre ai nomi delle variabili (per le quali i programmatori seguono convenzioni condivise o proprie), anche il testo dei commenti come si può osservare di seguito: è stato sufficiente cominciare a scrivere l’inizio del commento (con le sole due lettere “Cm” per ottenere una proposta assolutamente ragionevole.

Immagine che contiene testo, Carattere, linea, schermataDescrizione generata automaticamente

Le tecnologie utilizzate dalla versione attuale di Copilot non includono ancora la potenza di modelli LLM come GPT, ma Microsoft sta lavorando a Copilot X, la nuova versione del sistema di suggerimento basato su GPT 4 fornendo sicuramente risultati decisamente superiori a quelli attuali.

È però importante sottolineare l’importanza del contesto: il modello AI osserva la struttura dell’intero progetto prima di proporre soluzioni, le proposte sono quindi spesso centrate e suggeriscono l’adozione di convenzioni e best practices adottate dalla comunità degli sviluppatori, contribuendo alla scrittura di un codice più facile da leggere e comprendere.

Più recentemente Amazon ha introdotto un supporto, anche se meno sofisticato di Copilot, allo sviluppo e all’analisi del codice chiamato Code Whisperer. Anche questo modello si integra in editor di codice popolari, ed è anche capace di analizzare il codice alla ricerca di riferimenti o di vulnerabilità di sicurezza.

Analizzare il codice

Se la generazione del codice è una parte importante visto che i programmi vanno scritti, anche la loro analisi offre spunti importanti. I principali casi d’uso sono:

  • l’analisi automatica per individuare bug e vulnerabilità in codici esistenti
  • l’analisi del codice per comprenderne il funzionamento (problema sempre più cogente quando vanno in pensione unità di personale che hanno manutenuto sorgenti per quarant’anni)
  • la traduzione del codice in un linguaggio di programmazione differente

Sistemi come GPT e anche il modello Code LLaMa, rilasciato da Meta per poter essere eseguito anche sui propri sistemi, trovano più facilmente applicazione in questi contesti. Si tratta di modelli più flessibili ed espressivi di quelli usati da strumenti consolidati come Copilot, ma la cui applicabilità è decisamente più ostica avendo a disposizione un’interfaccia in stile Chat dove difficilmente è pensabile incollare gigabytes di codici sorgente.

La possibilità di programmare questi modelli offre però abilità di automatizzare l’analisi di programmi in modo più efficace di quanto si possa pensare di fare mediante un editor. Si tratta comunque di modelli interessanti che devono però ancora provare sul campo il proprio valore, anche se dai primi esperimenti emerge una chiara efficacia nel loro uso.

Modelli a confronto

I ricercatori cercano di confrontare la qualità di questi modelli di manipolazione di codici sorgente, come ad esempio il confronto tra Chat GPT, GitHub Copilot e Amazon Code Whisperer. Si tratta di studi ancora nella propria infanzia, la teoria ci insegna che è in generale impossibile determinare automaticamente ed esattamente cosa faccia un programma dal suo codice sorgente, e si tratta di un limite a cui sono soggetti sia uomini che macchine. Gli autori commentano che:

“Our analysis reveals that the latest versions of ChatGPT, GitHub Copilot, and Amazon CodeWhisperer generate correct code 65.2%, 46.3%, and 31.1% of the time, respectively”

Ancora una volta ChatGPT sorprende per la sua efficacia, mentre il rapporto tra Copilot e Code Whisperer era in qualche modo atteso vista la partenza anticipata di Microsoft nello sviluppo di queste tecnologie.

È bene però tenere presente che è difficile parlare di confronto vero e proprio: tutti questi modelli si inseriscono in posizioni differenti nel processo di sviluppo del codice e quindi la creazione di benchmark che consentano un confronto alla “pari” è quasi impossibile. È più probabile che se ne usi più di uno al fine di massimizzarne i benefici senza preoccuparsi che uno debba prevalere sugli altri.

L’importanza del saper leggere il codice

Per mia esperienza leggere il codice è di gran lunga più difficile che scriverlo (in fondo è vero anche per gli spartiti in musica). Un programmatore leggendo un codice va oltre la sintassi e riesce a “vedere” i concetti in esso modellati e il suo funzionamento. Si tratta di un’abilità che richiede anni di studio per comprendere il funzionamento dei linguaggi di programmazione ed altrettanta esperienza che consenta di individuare nel codice pattern e figure comuni.

Il nostro sistema di formazione si concentra al contrario sullo scrivere il codice, contribuendo alla formazione di scrittori di programmi spesso al limite dell’accettabilità e senza alcuna educazione alla lettura. Sarebbe come formare un musicista senza far ascoltare i grandi compositori o un pittore senza studiare i grandi del passato.

La qualità del codice generato nella mia esperienza spesso supera quella del codice scritto da uno studente (senza l’ausilio di questi strumenti). È prevedibile quindi che vi saranno cambiamenti nell’acquisizione di risorse umane nel mercato del lavoro della programmazione. Si privilegeranno probabilmente figure più competenti e in numeri decisamente minori a quanto ci abituati il mercato del lavoro negli ultimi 20 anni. Si vedono già i primi segni di questo trend con le multinazionali IT che hanno rivisto al ribasso le previsioni delle assunzioni nel corso del 2023.

Conclusioni

Ma in fondo Alan Turing all’inizio degli anni ’50 aveva previsto che dopo una prima fase in cui le macchine sarebbero state programmate da uomini a un certo punto sarebbero state le macchine stesse a programmarsi autonomamente. È sicuramente l’inizio di questo percorso quello a cui stiamo assistendo in questi ultimi mesi.

EU Stories - La coesione innova l'Italia

Tutti
Video&podcast
Analisi
VIDEO&PODCAST
Video & Podcast
Social
Iniziative
Da OpenCoesione 3.0 a Cap4City: ecco i progetti finanziati dal CapCoe.  Il podcast “CapCoe. La coesione riparte dalle persone”
Capacità amministrativa e coesione: il binomio vincente per lo sviluppo dei territori
FORUM PA PLAY: come unire sostenibilità e investimenti pubblici. Speciale FORUM PA CAMP Campania
Scenari
Il quadro economico del Sud: tra segnali di crescita e nuove sfide
Sostenibilità
Lioni Borgo 4.0: un passo verso la città del futuro tra innovazione e sostenibilità
Podcast
Centro Servizi Territoriali: uno strumento per accompagnare gli enti nell’attuazione della politica di coesione. Il podcast “CapCoe. La coesione riparte dalle persone”
Podcast
EU Stories, il podcast | Politiche di coesione e comunicazione: una sinergia per il futuro
Opinioni
La comunicazione dei fondi europei da obbligo ad opportunità
eBook
L'analisi della S3 in Italia
Norme UE
European Accessibility Act: passi avanti verso un’Europa inclusiva
Agevolazioni
A febbraio l’apertura dello sportello Mini Contratti di Sviluppo
Quadri regolamentari
Nuovi Orientamenti sull’uso delle opzioni semplificate di costo
Coesione
Nuovo Bauhaus Europeo (NEB): i premi che celebrano innovazione e creatività
Dossier
Pubblicato il long form PO FESR 14-20 della Regione Sicilia
Iniziative
400 milioni per sostenere lo sviluppo delle tecnologie critiche nel Mezzogiorno
Formazione
“Gian Maria Volonté”: dalle aule al mondo del lavoro, focus sui tirocini della Scuola d’Arte Cinematografica
TRANSIZIONE ENERGETICA
Il ruolo del finanziamento BEI per lo sviluppo del fotovoltaico in Sicilia
Formazione
“Gian Maria Volonté”: dalla nascita ai progetti futuri, focus sulla Scuola d’Arte Cinematografica. Intervista al coordinatore Antonio Medici
MedTech
Dalla specializzazione intelligente di BionIT Labs una innovazione bionica per la disabilità
Finanza sostenibile
BEI e E-Distribuzione: investimenti per la sostenibilità energetica
Professioni
Servono competenze adeguate per gestire al meglio i fondi europei
Master
Come formare nuove professionalità per governare e gestire al meglio i fondi europei?
Programmazione UE
Assunzioni per le politiche di coesione: prossimi passi e aspettative dal concorso nazionale. Il podcast “CapCoe. La coesione riparte dalle persone”
innovazione sociale
Rigenerazione urbana: il quartiere diventa un hub dell’innovazione. La best practice di San Giovanni a Teduccio
Programmazione europ
Fondi Europei: la spinta dietro ai Tecnopoli dell’Emilia-Romagna. L’esempio del Tecnopolo di Modena
Interventi
Riccardo Monaco e le politiche di coesione per il Sud
Iniziative
Implementare correttamente i costi standard, l'esperienza AdG
Finanziamenti
Decarbonizzazione, 4,8 miliardi di euro per progetti cleantech
Formazione
Le politiche di Coesione UE, un corso gratuito online per professionisti e giornalisti
Interviste
L’ecosistema della ricerca e dell’innovazione dell’Emilia-Romagna
Interviste
La ricerca e l'innovazione in Campania: l'ecosistema digitale
Iniziative
Settimana europea delle regioni e città: un passo avanti verso la coesione
Iniziative
Al via il progetto COINS
Eventi
Un nuovo sguardo sulla politica di coesione dell'UE
Iniziative
EuroPCom 2024: innovazione e strategia nella comunicazione pubblica europea
Iniziative
Parte la campagna di comunicazione COINS
Interviste
Marco De Giorgi (PCM): “Come comunicare le politiche di coesione”
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politiche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia
Da OpenCoesione 3.0 a Cap4City: ecco i progetti finanziati dal CapCoe.  Il podcast “CapCoe. La coesione riparte dalle persone”
Capacità amministrativa e coesione: il binomio vincente per lo sviluppo dei territori
FORUM PA PLAY: come unire sostenibilità e investimenti pubblici. Speciale FORUM PA CAMP Campania
Scenari
Il quadro economico del Sud: tra segnali di crescita e nuove sfide
Sostenibilità
Lioni Borgo 4.0: un passo verso la città del futuro tra innovazione e sostenibilità
Podcast
Centro Servizi Territoriali: uno strumento per accompagnare gli enti nell’attuazione della politica di coesione. Il podcast “CapCoe. La coesione riparte dalle persone”
Podcast
EU Stories, il podcast | Politiche di coesione e comunicazione: una sinergia per il futuro
Opinioni
La comunicazione dei fondi europei da obbligo ad opportunità
eBook
L'analisi della S3 in Italia
Norme UE
European Accessibility Act: passi avanti verso un’Europa inclusiva
Agevolazioni
A febbraio l’apertura dello sportello Mini Contratti di Sviluppo
Quadri regolamentari
Nuovi Orientamenti sull’uso delle opzioni semplificate di costo
Coesione
Nuovo Bauhaus Europeo (NEB): i premi che celebrano innovazione e creatività
Dossier
Pubblicato il long form PO FESR 14-20 della Regione Sicilia
Iniziative
400 milioni per sostenere lo sviluppo delle tecnologie critiche nel Mezzogiorno
Formazione
“Gian Maria Volonté”: dalle aule al mondo del lavoro, focus sui tirocini della Scuola d’Arte Cinematografica
TRANSIZIONE ENERGETICA
Il ruolo del finanziamento BEI per lo sviluppo del fotovoltaico in Sicilia
Formazione
“Gian Maria Volonté”: dalla nascita ai progetti futuri, focus sulla Scuola d’Arte Cinematografica. Intervista al coordinatore Antonio Medici
MedTech
Dalla specializzazione intelligente di BionIT Labs una innovazione bionica per la disabilità
Finanza sostenibile
BEI e E-Distribuzione: investimenti per la sostenibilità energetica
Professioni
Servono competenze adeguate per gestire al meglio i fondi europei
Master
Come formare nuove professionalità per governare e gestire al meglio i fondi europei?
Programmazione UE
Assunzioni per le politiche di coesione: prossimi passi e aspettative dal concorso nazionale. Il podcast “CapCoe. La coesione riparte dalle persone”
innovazione sociale
Rigenerazione urbana: il quartiere diventa un hub dell’innovazione. La best practice di San Giovanni a Teduccio
Programmazione europ
Fondi Europei: la spinta dietro ai Tecnopoli dell’Emilia-Romagna. L’esempio del Tecnopolo di Modena
Interventi
Riccardo Monaco e le politiche di coesione per il Sud
Iniziative
Implementare correttamente i costi standard, l'esperienza AdG
Finanziamenti
Decarbonizzazione, 4,8 miliardi di euro per progetti cleantech
Formazione
Le politiche di Coesione UE, un corso gratuito online per professionisti e giornalisti
Interviste
L’ecosistema della ricerca e dell’innovazione dell’Emilia-Romagna
Interviste
La ricerca e l'innovazione in Campania: l'ecosistema digitale
Iniziative
Settimana europea delle regioni e città: un passo avanti verso la coesione
Iniziative
Al via il progetto COINS
Eventi
Un nuovo sguardo sulla politica di coesione dell'UE
Iniziative
EuroPCom 2024: innovazione e strategia nella comunicazione pubblica europea
Iniziative
Parte la campagna di comunicazione COINS
Interviste
Marco De Giorgi (PCM): “Come comunicare le politiche di coesione”
Analisi
La politica di coesione europea: motore della transizione digitale in Italia
Politiche UE
Il dibattito sul futuro della Politica di Coesione
Mobilità Sostenibile
L’impatto dei fondi di coesione sul territorio: un’esperienza di monitoraggio civico
Iniziative
Digital transformation, l’Emilia-Romagna rilancia sulle comunità tematiche
Politiche ue
Fondi Coesione 2021-27: la “capacitazione amministrativa” aiuta a spenderli bene
Finanziamenti
Da BEI e Banca Sella 200 milioni di euro per sostenere l’innovazione di PMI e Mid-cap italiane
Analisi
Politiche di coesione Ue, il bilancio: cosa ci dice la relazione 2024
Politiche UE
Innovazione locale con i fondi di coesione: progetti di successo in Italia

Articoli correlati

Articolo 1 di 3