I continui annunci sull’intelligenza artificiale rendono difficile l’aggiornamento e la valutazione dell’impatto di ogni notizia su intere categorie di lavoro. Una caratteristica che ha da subito colpito di ChatGPT è stata la capacità di analizzare il testo di programmi e generare programmi in molti casi accurati.
Si tratta di uno dei comportamenti inattesi del modello emergenti dall’enorme numero di parametri che lo costituiscono. Microsoft ha rilasciato Copilot X sulla piattaforma GitHub per supportare i programmatori nell’analisi di programmi e la generazione di funzioni usando il modello GPT-4.
Infine, OpenAI ha appena aperto a tutti i sottoscrittori del livello plus di ChatGPT il modello denominato Code interpreter, una variante di ChatGPT disegnata per supportare l’analisi dei dati mediante la generazione di programmi Python e la loro esecuzione.
Cerchiamo di capire l’impatto di queste AI generative di programmi nel settore della programmazione, e se anche in questo ambito assisteremo ad una repentina trasformazione di questo mercato del lavoro.
Questa ulteriore rivoluzione porta le macchine a generare, almeno in parte, il codice che ne definisce il comportamento. Ecco come scoprire in quali settori queste tecnologie possono avere l’impatto maggiore.
Professione programmatore
Nonostante la programmazione sia divenuta un’attività articolata ricca di tecniche e strumenti per la creazione, gestione, ed esecuzione del codice nella coscienza collettiva, permane l’icona dell’hacker che da solo scrive un sistema geniale.
Un programma è un complesso castello in cui se anche un singolo mattone non è posato correttamente può crollare producendo malfunzionamenti di vario tipo che, al giorno d’oggi, possono avere un impatto nel mondo se si tratta del codice che controlla un macchinario come, per esempio, un veicolo a guida autonoma.
È notizia di queste settimane la protesta degli abitanti di San Francisco che hanno cominciato ad incollare coni stradali su taxi a guida autonoma per bloccarne il funzionamento in seguito a numerosi incidenti che hanno coinvolto questi mezzi, in parte dovuti a limiti della programmazione.
Programmazione assistita con l’AI: i vantaggi
A parte la codifica di funzioni e algoritmi, vi sono attività centrali nella programmazione che possono beneficiare dell’AI generativa: la documentazione, la generazione di routine di test di specifiche funzioni del programma.
Anche la ricerca di bug nell’analisi del codice può avvantaggiarsi dell’assistenza da parte di un analizzatore artificiale.
Sebbene la scrittura di codice sia potenzialmente più a rischio errori di altri processi come il testing, è importante sottolineare che il più veloce algoritmo di ordinamento nella libreria C++ è stato recentemente generato da una AI ed è ufficialmente in produzione. Si tratta di un fatto degno di nota poiché l’ordinamento è un aspetto chiave della programmazione ed è stato studiato per oltre 50 anni.
Sono quindi molte le attività nella professione programmatore in cui l’assistenza di un’intelligenza artificiale può contribuire in modo determinante. Soprattutto nel caso di programmatori junior non è assolutamente impensabile che l’AI sia più efficiente del programmatore stesso.
Non è un caso che le BigTech, a partire da gennaio, hanno annunciato tagli alle assunzioni previste, e probabilmente in parte questa revisione delle previsioni è dovuta alla valutazione dell’impatto di queste nuove tecnologie.
I rischi dell’automazione del processo di programmazione
Come è ormai evidente nel caso delle auto a guida autonoma è necessario capire chi possa essere il responsabile quando le cose vanno male. E sappiamo bene che un’AI generativa può “allucinare”. Ma si potrebbe obiettare che un programmatore inesperto ha forse anche più probabilità di introdurre problemi in codici semplici, e quindi da un punto di vista di gestione dei costi possa essere sostenibile anche una AI che non è sempre corretta. Inoltre, programmatori junior senza ambizione di far carriera e nelle proprie competenze potrebbero limitarsi a copiare il codice generato dall’assistente in modo completamente acritico.
Le AI generative, inoltre, almeno per il momento, sembrano evolvere e migliorare molto velocemente, ed è lecito attendersi che rapidamente divengano più affidabili di
programmatori non esperti.
C’è da aspettarsi quindi che quelle figure di programmazione intermedia che sono state alla base dello sviluppo di applicazioni ad alto livello a partire dagli anni ’90 con VBA possano non essere più necessarie.
Invece sarà sempre più importante disporre di programmatori con sufficiente competenza per verificare l’output di questi sistemi prima che un codice con bug importanti venga messo in produzione con conseguenze potenzialmente catastrofiche.
Il frutto della programmazione, ovvero l’AI, aggredisce proprio il mercato del
lavoro che l’ha generata. E c’è dell’ironia in tutto ciò.
Un primo test di Code Interpreter
Le mie prime impressioni sul modello Code Interpreter ia OpenAI, che non è altro che un raffinamento del modello GPT-4 orientato al codice, sono decisamente impressionanti.
Per mettere alla prova il modello sono partito da un indovinello classico [Figura 1].
Ciò che colpisce è che, contrariamente al comportamento di ChatGPT classico, il modello formula il problema in termini di un programma Python che poi viene eseguito per poi generare il risultato finale.
Anche in questa variante, come ci hanno abituato i plugin, alcune tendine ci consentono di analizzare il codice generato e quindi valutare se il processo di calcolo sia corretto o meno (a patto che si sappia leggere il codice).
Una delle applicazioni di questo nuovo modello è l’analisi dei dati, infatti è possibile caricare file di dati e richiederne l’analisi all’AI. Dopo aver provato a scaricare dal sito open data della Regione Toscana un file CSV con i redditi aggregati per comune e per fascia di reddito, ho provveduto a fare la semplice richiesta [Figura 2].
Ho provveduto quindi a fare la semplice richiesta.
La risposta del modello è più che sorprendente, dalla sola analisi dei dati nel file inferisce correttamente il significato dei campi e la riporta affinché si possa verificare che sia corretta. Propone poi un modo di calcolo anche a causa di limiti che rileva correttamente nel dataset.
Decido quindi di procedere secondo quanto suggerisce e il risultato è sorprendente [Figura 3].
Sebbene il “ragionamento” proposto sembra filare, mi armo di pazienza e faccio alcuni controlli a campione, verificando che i numeri ottenuti siano corretti, oltre a leggere il codice Python generato [Figura 4].
È veramente difficile che un tale strumento non condizioni significativamente alcuni settori della programmazione. In questo caso sicuramente una parte dei data scientist potrebbero vedere insidiata la propria professione.
Conclusioni
La capacità di generare codice, commenti, ed analizzarlo sta già avendo un impatto nel mondo della programmazione. Infatti editor di codice molto popolari integrano ormai le AI in modo da rendere il più fruibile possibile questa tecnologia a supporto dello sviluppo.
La necessità di forza lavoro per lo sviluppo del codice calerà inevitabilmente, favorendo programmatori esperti e rendendo sempre più inutile dal punto di vista produttivo chi sa programmare con competenze basilari e scolastiche.
Occorre rivedere i programmi formativi, a partire dalle scuole dove ancora si pensa che
l’insegnamento di un linguaggio come C++ sia professionalizzante, introducendo corsi di prompting per chi deve avvalersi della generazione di codice di base e formando professionisti della programmazione capaci di verificare che l’output sia coerente con le specifiche date.
È ancora presto per immaginare il vero impatto delle tecnologie AI. Ma non serve un veggente per prevedere che in questo settore sarà dirompente.