Che fine faranno i programmatori con le intelligenze artificiali

Le ultime evoluzioni dei software che scrivono da soli i codici hanno spinto alcuni esperti a fare previsioni pessimiste per la professione

(Firefly|Adobe)
(Firefly|Adobe)
Caricamento player

Alla fine di maggio Jensen Huang, il CEO di Nvidia corp., uno dei più importanti produttori di microchip al mondo, è salito sul palco del Computex Forum, tra le principali fiere di elettronica organizzata ogni anno a Taipei (Taiwan), per fare il punto sulla propria azienda e soprattutto sui sistemi di intelligenza artificiale, molto discussi in questo periodo. Parlando in inglese, con qualche parola qui e là in mandarino per la gioia del pubblico, ha annunciato l’inizio di una «nuova era informatica» che cambierà il nostro rapporto con i computer e molte professioni, in particolare una: «Ora tutti sono programmatori: devi solo dire qualcosa al computer».

Huang è a capo di un’azienda che produce microchip potenti e molto richiesti per chi sviluppa sistemi di intelligenza artificiale, di conseguenza ha un certo interesse a fare dichiarazioni di quel tipo, ma non è affatto l’unico a farle. Negli ultimi mesi numerosi informatici ed esperti di AI hanno fatto previsioni simili a quelle di Huang sul modo in cui cambierà il lavoro per chi sviluppa algoritmi e software, con sistemi più semplici, veloci e soprattutto accessibili per la programmazione dei computer.

È un processo già in corso e c’è chi ritiene che porterà a cambiamenti radicali nel settore, con una forte accelerazione nello sviluppo di nuove soluzioni informatiche. Ma c’è anche chi pensa che i cambiamenti saranno meno evidenti e che la programmazione continuerà a essere una pratica che richiede specifiche conoscenze e competenze, non “per tutti” come ha detto Huang.

Programmare, cioè creare software che possono svolgere determinati compiti tramite un computer, comprende numerosi passaggi dalla progettazione all’analisi degli algoritmi da produrre, dalla loro generazione alla valutazione della loro accuratezza ed efficacia per raggiungere un certo obiettivo. L’attività di scrittura del codice (“coding”) è di solito la parte più corposa e impegnativa: viene effettuata attraverso linguaggi di programmazione, anziché nel linguaggio macchina che è invece eseguito direttamente dal computer. Attraverso la programmazione si identificano sequenze di istruzioni per automatizzare l’esecuzione di un’attività.

Per certe attività di programmazione alcune soluzioni di intelligenza artificiale erano già utilizzate da tempo, per ridurre i tempi nella compilazione delle righe di codice, per esempio, oppure per verificare l’eventuale presenza di errori (“bug”) che potevano causare qualche malfunzionamento al software. L’evoluzione di questi sistemi verso soluzioni più raffinate e funzionali è stata resa possibile dall’avvento di AI di nuova generazione come quelle sviluppate da OpenAI, famosa soprattutto per ChatGPT, e AlphaCode di DeepMind, la divisione di Google che fa ricerca e sviluppo di nuovi sistemi di intelligenza artificiale.

Con “intelligenza artificiale” si intendono molte cose diverse tra loro, tanto che il modo di dire è diventato una sorta di definizione ombrello che comprende un po’ di tutto, spesso per motivi di marketing e di promozione di nuovi prodotti che hanno poco a che fare con le AI propriamente dette. In linea di massima, una intelligenza artificiale è comunque un software, un programma per svolgere uno o più compiti. A differenza dei software tradizionali, una AI può imparare cose e migliorarsi in autonomia, con la possibilità di ottenere algoritmi per classificare e strutturare dati, produrre modelli predittivi e funzioni di vario tipo, da quelle per la guida autonoma delle automobili ai risultati all’interno di un motore di ricerca (qui è spiegato più estesamente).

La novità più interessante e rilevante è la capacita di queste AI di fare da assistenti al lavoro degli sviluppatori, offrendo più strumenti non solo per controllare il codice che hanno scritto, ma anche per scriverne delle porzioni automaticamente e in poche frazioni di secondo. Una persona che sta sviluppando un software può chiedere, con domande in linguaggio naturale come farebbe a un collega, un consiglio su come ottimizzare il codice che sta scrivendo oppure una spiegazione su una funzionalità che dovrà inserire e che non conosce a sufficienza.

– Leggi anche: La puntata di “Ci vuole una scienza” sulle intelligenze artificiali

Scrivere un codice per un software significa in un certo senso padroneggiare una lingua speciale, con una particolare sintassi, che porta poi all’esecuzione di un comando. Non esiste una sola lingua, o per meglio dire un solo linguaggio di programmazione: nel corso del tempo ne sono stati sviluppati diversi e, proprio come nelle lingue, alcuni hanno caratteristiche in comune, mentre altri funzionano in un modo molto diverso. Cambiano i comandi, le logiche e altre variabili e di conseguenza devono essere studiati.

Soprattutto da quando esiste Internet, parte della conoscenza dei linguaggi di programmazione è condivisa: chi li utilizza mette a disposizione parti di codice, oppure si rende disponibile per aiutare a comprenderne funzionamenti, dettagli o parti poco chiare. Accade di frequente soprattutto nel caso in cui qualcuno si trovi a lavorare con del codice per il quale non c’è molta documentazione e che richiede quindi di essere interpretato. Le AI hanno iniziato a velocizzare questi processi, offrendo strumenti per capire a che cosa serva una certa porzione di codice, se ci siano alternative o modi per rendere più rapida ed efficiente l’esecuzione di un certo comando.

Matt Welsh, rispettato informatico statunitense che in passato aveva lavorato per Apple e Google, a inizio anno ha fatto il punto sulle tecnologie e le opportunità che avranno sviluppatori e sviluppatrici nei prossimi anni, con una previsione simile a quella del capo di Nvidia: «La fine della programmazione». Nel suo intervento, Welsh ha previsto che l’idea stessa di scrivere un programma sarà presto obsoleta, perché si passerà da software programmati per svolgere determinati compiti a soluzioni che saranno «formate» per farlo. Non si dovrà più scrivere del codice a mano, ma ci sarà un programma di partenza che a seconda delle esigenze svilupperà le capacità necessarie per occuparsi di un determinato compito.

I più scettici ritengono che Welsh sia probabilmente troppo ottimista, ma è comunque vero che i progressi raggiunti dalle AI negli ultimi tempi sono stati notevoli e che continuano a esserci miglioramenti. Lo scorso anno DeepMind aveva pubblicato una ricerca segnalando come in una competizione con esseri umani il suo sistema AlphaCode avesse restituito risposte comparabili a quelle di un programmatore alle prime esperienze.

Le ricerche sono osservate con interesse dagli esperti del settore, visto che i dati dicono qualcosa di più delle semplici previsioni. Per una ricerca condotta da Microsoft è stata messa a confronto la produttività di un gruppo di sviluppatori con accesso a un assistente AI per la programmazione e quella di un altro gruppo senza. Secondo lo studio, chi aveva ricevuto assistenza con sistemi di intelligenza artificiale aveva terminato gli incarichi con il 56 per cento di velocità in più rispetto ai membri dell’altro gruppo.

I più ottimisti ritengono che grazie alle AI si stia aprendo un nuovo periodo nel quale la produzione di software aumenterà enormemente e diventerà accessibile a costi sempre più bassi. La programmazione più rapida e flessibile renderà possibile l’introduzione di soluzioni informatiche in ambiti ancora poco o per nulla digitalizzati, con risparmio di tempo e di risorse. Tutto ciò non determinerà la fine degli sviluppatori, perché ci saranno molti più ambiti interessati dall’informatica e perché la professione cambierà rispetto a quella attuale, diventando più legata al controllo, alla promozione e all’assistenza di nuovi prodotti informatici. «Se i programmatori di oggi sono considerati scrittori, si pensa che i loro futuri successori saranno editori e verificatori di fatti» ha scritto la giornalista Aki Ito in un’analisi del fenomeno su Insider.

C’è chi è più pessimista e ritiene che lo sviluppo e il miglioramento dei sistemi di intelligenza artificiale nei prossimi anni avranno un forte impatto sulle professioni, in particole su quelle del terziario, compresa la programmazione. Se il proprio mestiere è scrivere codice e saranno sempre più le AI a farlo, sarà molto difficile “reinventarsi” come si dice spesso nel caso dei settori produttivi in cui particolari novità e innovazioni rendono obsoleto il lavoro di qualcuno. Aki Ito fa l’esempio di chi lavorava nei centralini delle compagnie telefoniche, quando era necessario che ci fosse una persona a indirizzare le chiamate: arrivarono i dischi combinatori sui telefoni, i centralini elettromeccanici e poi quelli digitali che resero superfluo il lavoro di una parte importante del personale delle compagnie telefoniche.

Ci potrebbero comunque essere rischi meno gravi rispetto alla perdita di una grande quantità di posti di lavoro, ma comunque rilevanti per una professione particolare e ancora molto richiesta. I software di intelligenza artificiale potrebbero sottrarre ai programmatori una parte importante del processo creativo, per molti il più piacevole e stimolante, lasciando alle persone un compito più noioso di sorveglianti di quanto realizzano le AI. Meno persone potrebbero essere interessate a un lavoro da controllori e i più giovani potrebbero essere meno incentivati a studiare informatica e in particolare i linguaggi di programmazione.

Queste prospettive non entusiasmano parte della comunità degli sviluppatori e la dimostrazione sono le reazioni che spesso accompagnano analisi e articoli sulle AI e il futuro della programmazione. A inizio marzo lo sviluppatore Adam Hughes aveva scritto un articolo alquanto categorico sul tema, a cominciare dal titolo: «ChatGPT rimpiazzerà i programmatori entro 10 anni».

Hughes aveva raccontato la propria esperienza con il software di OpenAI, provando a immaginare lo scenario che attende gli informatici come lui e che porterà se non proprio alla loro estinzione a una profonda modifica della loro professione. Il suo articolo fu commentato molto duramente da numerosi sviluppatori, che lo accusarono di non avere idea di che cosa stesse parlando e sostenendo che le AI hanno ancora enormi limitazioni, tali da non minacciare il loro lavoro. Certi commenti erano molto duri, al punto che per un po’ Hughes valutò di cancellare il proprio articolo da Medium, la piattaforma su cui lo aveva pubblicato.

Alcuni informatici di lunga data sembrano essere più ottimisti, forse perché in diverse occasioni nel corso della loro carriera le rapide evoluzioni del settore avevano spinto ad annunci sulla fine di alcune specializzazioni. Avvenne per esempio in seguito all’introduzione delle tecnologie del cloud computing, sfruttando la memoria e la potenza di reti di computer a distanza. Si disse che le reti aziendali non sarebbero più esistite e che sarebbero dipese da servizi esterni, che avrebbero impiegato molte meno persone.

Le tecnologie cloud sono in effetti diventate una parte centrale ed essenziale di cosa è oggi Internet, sia per la produttività sia per l’intrattenimento, ma il settore ha prodotto nuova occupazione ed è ancora in espansione. L’idea è che possa verificarsi più o meno la stessa cosa con le AI: la loro applicazione in molti più settori renderà comunque essenziale la presenza di persone esperte e competenti per gestirle.

Nelle analisi pubblicate in questi ultimi mesi è ricorrente l’opinione secondo cui i sistemi di intelligenza artificiale abbiano rimosso quell’elemento quasi magico che veniva attribuito a chi utilizza i linguaggi di programmazione, la capacità di trasformare delle linee di codice in un’applicazione che ti ricorda quando annaffiare le piante sul terrazzo o che trascrive in tempo reale una conversazione in una lingua diversa dalla tua. Secondo John Naughton, che si occupa di informatica e società alla Open University (Regno Unito), ChatGPT ha abbassato la soglia nel «possedere conoscenze arcane e imparare linguaggi specializzati per conversare con i propri servitori elettronici».

Farhad Manjoo, giornalista che scrive articoli per il New York Times sul nostro rapporto con la tecnologia, la pensa più o meno allo stesso modo e ha di recente scritto che le AI stanno eliminando gli ultimi livelli di astrazione, tra la creazione di codice e lo svolgimento di un compito da parte dei computer arrivando «al livello in cui puoi dire a un computer di fare qualcosa allo stesso modo in cui lo diresti a un essere umano».

È comunque difficile prevedere che cosa potrà accadere a un settore che comprende al proprio interno realtà molto diverse tra loro. Uno dei principali obiettivi dell’informatica è risolvere più facilmente e velocemente problemi, ma la strada per arrivarci richiede spesso processi creativi legati più all’invenzione, che all’imitazione e all’iterazione tramite algoritmi di idee già esistenti.