Negli ultimi anni, l’intelligenza artificiale generativa ha trovato un nuovo campo di applicazione: la codifica. Jared Kaplan, scienziato capo di Anthropic, sottolinea che la codifica rappresenta un’opportunità entusiasmante per gli sviluppatori, aiutandoli a identificare errori e a eseguire il debug del codice. Strumenti come Copilot di GitHub, ChatGPT di OpenAI e Gemini di Google DeepMind stanno già assistendo milioni di sviluppatori in tutto il mondo. Sundar Pichai, CEO di Alphabet, ha rivelato che oltre un quarto del nuovo codice di Google è generato dall’AI, accelerando il lavoro degli ingegneri.
Startup all’avanguardia
Non solo le grandi aziende stanno investendo in strumenti di codifica automatizzata, ma anche numerose startup stanno entrando nel mercato. Aziende come Zencoder, Merly, Cosine, Tessl e Poolside stanno sviluppando soluzioni innovative che vanno oltre il semplice completamento automatico. Questi nuovi strumenti sono progettati per prototipare, testare e correggere il codice, trasformando gli sviluppatori in manager che supervisionano il lavoro generato dall’AI.
Oltre la correttezza sintattica
La nuova generazione di assistenti alla codifica punta a superare la semplice correttezza sintattica del codice, mirando a garantire che il software funzioni come desiderato. Alistair Pullen di Cosine afferma che per raggiungere questo obiettivo è necessario replicare i processi di pensiero degli sviluppatori umani. “I modelli linguistici di grandi dimensioni possono scrivere codice che si compila, ma non sempre scrivono il programma che si desidera”, afferma Pullen. “Per farlo, è necessario ricreare i processi di pensiero che un codificatore umano avrebbe seguito per ottenere quel risultato finale”.
Tuttavia, i dati su cui si basano molti assistenti alla codifica non catturano questi processi, rappresentando solo il prodotto finito. Per affrontare questa sfida, aziende come Cosine e Poolside stanno sviluppando modelli che imitano il processo di creazione del codice, migliorando la qualità e l’efficacia delle correzioni.
Zencoder ha assunto un gruppo di veterani dei motori di ricerca per costruire uno strumento in grado di analizzare grandi basi di codice e capire cosa è o non è rilevante. Questo contesto dettagliato riduce le allucinazioni e migliora la qualità del codice che i modelli linguistici di grandi dimensioni possono produrre, dice Andrew Filev, fondatore di Zencoder: “Lo chiamiamo repo grokking“.
Anche Poolside sta creando un set di dati sintetici che cattura il processo di codifica, ma si basa maggiormente su una tecnica chiamata RLCE, ovvero l’apprendimento con rinforzo dall’esecuzione del codice (anche Cosine la utilizza, ma in misura minore).
RLCE è analoga alla tecnica utilizzata per rendere i chatbot come ChatGPT degli abili conversatori, nota come RLHF- reinforcement learning from human feedback. Con RLHF, un modello viene addestrato a produrre testo più simile a quello che i tester umani dicono di preferire. Con RLCE, un modello viene addestrato a produrre codice più simile a quello che fa ciò che deve fare quando viene eseguito.
Una differenza fondamentale tra Cosine e Poolside è che Cosine utilizza una versione personalizzata di GPT-4o fornita da OpenAI, che consente di allenarsi su un set di dati più ampio di quello che il modello di base è in grado di gestire, mentre Poolside costruisce da zero il proprio modello linguistico di grandi dimensioni.

Visioni futuristiche e sfide attuali
Nonostante i progressi, non tutti condividono l’entusiasmo per l’uso di modelli linguistici di grandi dimensioni nella codifica. Justin Gottschlich di Merly sostiene che la programmazione richiede una logica incrollabile che i modelli attuali non possono replicare. Invece di addestrare un modello linguistico su esempi di codice, Merly si concentra sulla logica sottostante. Gottschlich immagina un futuro in cui l’automazione della programmazione sarà essenziale per affrontare le sfide della colonizzazione spaziale. Tuttavia, la strada verso un’intelligenza artificiale in grado di risolvere qualsiasi compito computazionale rimane lunga e complessa.
Avendo lavorato alla generazione di codice per oltre un decennio, Gottschlich ha un problema simile con i modelli di linguaggio di grandi dimensioni. La programmazione richiede la capacità di risolvere enigmi logici con una precisione incrollabile. Per quanto i modelli linguistici di grandi dimensioni possano imparare a imitare ciò che fanno i programmatori umani, nel loro nucleo sono ancora essenzialmente slot machine statistiche, dice: “Non posso addestrare un sistema illogico a diventare logico”.
Il sistema di Merly è addestrato su una rappresentazione intermedia, qualcosa di simile alla notazione leggibile dalla macchina in cui la maggior parte dei linguaggi di programmazione viene tradotta prima di essere eseguita.

Nessun essere umano è in grado di comprendere i trilioni di linee di codice dei più grandi sistemi software
Questi strumenti consentono anche di progettare più versioni di un sistema contemporaneamente. Supponiamo di stare sviluppando un software che necessita di un sistema di pagamento integrato. Si può ricorrere a un assistente di codifica per provare simultaneamente diverse opzioni – Tripe, Mango, Checkout – invece di doverle codificare a mano una alla volta.
Genie può essere lasciato a correggere i bug 24 ore su 24. La maggior parte dei team software utilizza strumenti di segnalazione dei bug che consentono di caricare le descrizioni degli errori riscontrati. Genie può leggere queste descrizioni e proporre delle correzioni. Poi un umano deve solo rivederle prima di aggiornare il codice di base.
Nessun essere umano è in grado di comprendere i trilioni di linee di codice dei più grandi sistemi software di oggi, e man mano che sempre più software viene scritto da altri software, la quantità di codice non potrà che aumentare.
Questo renderà essenziali gli assistenti di codifica che manterranno il codice per noi. Il collo di bottiglia diventerà la velocità con cui gli esseri umani potranno rivedere il codice generato dalle macchine.
Conclusioni
Gottschlich non è un’eccezione con la sua visione galattica. Nonostante si concentrino su prodotti che gli sviluppatori vorranno utilizzare oggi, la maggior parte di queste aziende punta a un risultato ben più importante. Visitando il sito web di Cosine, l’azienda si presenta come “Human Reasoning Lab”. Per Cosine il coding è solo il primo passo verso un modello più generale, in grado di imitare la risoluzione dei problemi umani in diversi ambiti.