Il 0% ha trovato utile questo documento (0 voti)
99 visualizzazioni12 pagine

Programmare Con L'intelligenza Artificiale LK

Caricato da

man6661
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
99 visualizzazioni12 pagine

Programmare Con L'intelligenza Artificiale LK

Caricato da

man6661
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 12

Programmare con l’intelligenza

artificiale: modelli a confronto


Testi a cura di Antonio Cisternino, Università di Pisa

Vuoi approfondire il tema Intelligenza Artificiale?


Scopri tutti i white paper e webcast in tema su TechFlix360
Informati ora

1
INDICE DEGLI
ARGOMENTI
1. Come impiegare l’AI nella programmazione 4
2. La generazione del codice 5
3. Analizzare il codice 8
4. Modelli a confronto 9
5. L’importanza del saper leggere il codice 10
6. Conclusioni 11

2
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.

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.

3
1.
COME IMPIEGARE L’AI
NELLA PROGRAMMAZIONE
La programmazione è un’attività complessa che si è
specializzata nel tempo al crescere della dimensio-
ne dei programmi. I linguaggi di programmazio-
ne hanno cercato di supportare i programmato-
ri nella composizione di programmi sempre più
complessi fornendo numerosi strumenti di auto-
mazione, partendo dalla compilazione in linguaggio
macchina, passando per gli strumenti di debugging
interattivo, per poi arrivare a programmi che coordi-
nano 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 tro-
vano applicazione questi modelli, e come vedremo ad
oggi sono solo parzialmente confrontabili poiché funzio-
nano su presupposti differenti.

4
2.
LA GENERAZIONE
DEL CODICE
Sebbene possa essere sorprendente chiedere a Cha-
tGPT di generare un programma che genera il frat-
tale 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 enor-
me castello di carte dove ciascun elemento si deve
incastrare perfettamente con gli altri pena un errore
e la terminazione del programma. È necessario quin-
di un supporto pervasivo nella generazione di codice
al fine di sviluppare sistemi, e di conseguenza l’inte-
grazione in strumenti di sviluppo capaci di fornire il
contesto al modello di AI al fine di proporre comple-
tamento 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 conseguen-
za la possibilità di usare i codici aperti per addestra-
re 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 compor-
tamento. La mia personale esperienza con Copilot è
che le proposte del codice sono spesso abbastanza
5
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 fat-
tore 10x o anche di più.

A titolo di esempio ecco una proposta nella genera-


zione di una classe in un progetto Open Source a
cui sto lavorando. Come si può vedere dall’intesta-
zione Copilot ha correttamente dedotto praticamen-
te tutto il codice della classe (in grigio) e premendo
“TAB” mi sono limitato ad accettare il suggerimento
come punto di partenza.

6
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 commen-
to (con le sole due lettere “Cm” per ottenere una pro-
posta assolutamente ragionevole.

Le tecnologie utilizzate dalla versione attuale di Copi-


lot 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 decisamen-
te superiori a quelli attuali.

È però importante sottolineare l’importanza del


contesto: il modello AI osserva la struttura dell’inte-
ro progetto prima di proporre soluzioni, le proposte
sono quindi spesso centrate e suggeriscono l’adozio-
ne di convenzioni e best practices adottate dalla co-
munità degli sviluppatori, contribuendo alla scrittura
di un codice più facile da leggere e comprendere.

Più recentemente Amazon ha introdotto un suppor-


to, anche se meno sofisticato di Copilot, allo sviluppo
e all’analisi del codice chiamato Code Whisperer. An-
che questo modello si integra in editor di codice po-
polari, ed è anche capace di analizzare il codice alla
ricerca di riferimenti o di vulnerabilità di sicurezza.

7
3.
ANALIZZARE IL CODICE
Se la generazione del codice è una parte importan-
te 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 vulnera-


bilità in codici esistenti
• l’analisi del codice per comprenderne il funzio-
namento (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 pro-
grammazione differente

Sistemi come GPT e anche il modello Code LLaMa,


rilasciato da Meta per poter essere eseguito anche
sui propri sistemi, trovano più facilmente applicazio-
ne in questi contesti. Si tratta di modelli più flessibili
ed espressivi di quelli usati da strumenti consolidati
come Copilot, ma la cui applicabilità è decisamen-
te più ostica avendo a disposizione un’interfaccia in
stile Chat dove difficilmente è pensabile incollare gi-
gabytes 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 mo-
delli interessanti che devono però ancora provare
sul campo il proprio valore, anche se dai primi espe-
rimenti emerge una chiara efficacia nel loro uso.

8
4.
MODELLI A CONFRONTO
I ricercatori cercano di confrontare la qualità di que-
sti modelli di manipolazione di codici sorgente, come
ad esempio il confronto tra Chat GPT, GitHub Co-
pilot e Amazon Code Whisperer. Si tratta di studi
ancora nella propria infanzia, la teoria ci insegna che
è in generale impossibile determinare automatica-
mente 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 Cha-


tGPT, 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 Whi-
sperer era in qualche modo atteso vista la partenza
anticipata di Microsoft nello sviluppo di queste tec-
nologie.

È bene però tenere presente che è difficile parlare


di confronto vero e proprio: tutti questi modelli si
inseriscono in posizioni differenti nel processo di svi-
luppo del codice e quindi la creazione di benchmark
che consentano un confronto alla “pari” è quasi im-
possibile. È più probabile che se ne usi più di uno al
fine di massimizzarne i benefici senza preoccuparsi
che uno debba prevalere sugli altri.

9
5.
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 leggen-
do 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 pro-
grammazione ed altrettanta esperienza che consen-
ta di individuare nel codice pattern e figure comuni.

Il nostro sistema di formazione si concentra al con-


trario sullo scrivere il codice, contribuendo alla for-
mazione di scrittori di programmi spesso al limite
dell’accettabilità e senza alcuna educazione alla let-
tura. Sarebbe come formare un musicista senza far
ascoltare i grandi compositori o un pittore senza stu-
diare i grandi del passato.

La qualità del codice generato nella mia esperienza


spesso supera quella del codice scritto da uno stu-
dente (senza l’ausilio di questi strumenti). È prevedi-
bile quindi che vi saranno cambiamenti nell’acquisi-
zione di risorse umane nel mercato del lavoro della
programmazione. Si privilegeranno probabilmente
figure più competenti e in numeri decisamente mi-
nori 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.

10
6.
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 cer-
to punto sarebbero state le macchine stesse a pro-
grammarsi autonomamente. È sicuramente l’inizio
di questo percorso quello a cui stiamo assistendo in
questi ultimi mesi.

11
Network Digital360 è il più grande network in Italia di testate e portali
B2b dedicati ai temi della Trasformazione Digitale e dell’Innovazione
Imprenditoriale, con oltre 50 fra portali, canali e newsletter.
Ha la missione di diffondere la cultura digitale e imprenditoriale nelle
imprese e pubbliche amministrazioni italiane e di fornire a tutti i decisori
che devono valutare investimenti tecnologici informazioni aggiornate e
approfondite.
Il Network è parte integrante di Digital360HUB, il polo di Demand
Generation di Digital360, che mette a disposizione delle tech company
un’ampia gamma di servizi di comunicazione, storytelling, pr, content
marketing, marketing automation, inbound marketing, lead generation,
eventi e webinar.

VIA COPERNICO, 38
20125 - MILANO
TEL. 02 92852785
MAIL: [email protected] ©ICT & Strategy

Potrebbero piacerti anche