Decidiamo oggi per un domani sostenibile

Vibe Coding: la programmazione dialogica che rende veramente aperto il codice

Anche il mondo dei programmatori è stato sconquassato dall’AI. I codici sono sempre più un prodotto delle intelligenze artificiali, e mentre una parte della comunità online protesta un’altra si prepara al futuro.

martedì 25 marzo 2025
Tempo di lettura: min

Abbiamo parlato precedentemente di come le intelligenze artificiali aiutino a programmare in maniera più veloce. La novità è che per progetti semplici e non, che non gestiscono strutture vitali, non c’è bisogno di controllare il codice. Ormai sempre più programmatori, e non, stanno usando le intelligenze artificiali per programmare al posto loro. Si limitano a descrivere in italiano o inglese quello che deve essere fatto e lasciano che l’AI scriva il codice per loro. E poi si limitano a copiare il codice (che spesso vuol dire schiacciare un tasto sullo schermo) e farlo girare. Quando, inevitabilmente, non funziona, copiano gli errori che ricevono dal computer all’intelligenza artificiale e si fanno correggere il codice. Si chiama Vibe Coding. È un po’ come quando siamo passati dall’aprire pagine web a “surfare” internet. Il nome lo ha scelto Andrej Karpathy, uno dei padri dell’intelligenza artificiale moderna. Anche questa forma di programmazione ha le sue regole, ma sono molto più semplici della programmazione tradizionale. Nessuno sa come funziona, lo stiamo scoprendo tutti insieme. Che genere di descrizioni devono ricevere le AI per lavorare al meglio. Per esempio aggiungere un file di regole con le istruzioni per l’AI su come programmare questo progetto aiuta (per esempio, questo progetto usa questo linguaggio di programmazione, commenta ogni linea del codice, …). Lo spiega nei dettagli Matthew Bermann.

Alcune intelligenze artificiali sono meglio di altre. E indicare quali sarebbe un’informazione scorretta entro poco tempo. Ci sono poi piattaforme e strumenti per fare vibe coding. Io uso Github Copilot, molti usano Cursor, ma a quanto pare ce ne sono molte altre. Spesso permettono di usare diverse AI (per esempio con Github Copilot ho la scelta tra Gemini, Claude, ChatGPT e GPT O1 e O3).

Ci sono ovviamente dei presupposti, ci vuole una piattaforma per programmare, ma l’AI ti guida a installarla. Sapere come si programma aiuta, ma non è necessario. È forse più utile sapere come impostare il ragionamento alla base del codice. Quali parti del programma sviluppare prima, e quali dopo. E man mano che le intelligenze artificiali migliorano, migliora quello che sono in grado di fare e diminuisce quello che l’utente umano deve saper fare. Aumenta il numero di file che l’AI riesce a considerare in contemporanea; la complessità del progetto; la visione possibile dietro alla richiesta.

Questa innovazione ha creato molto dibattito, polarizzando la comunità dei programmatori. Ricordiamo che quando le intelligenze artificiali hanno iniziato a disegnare, gli artisti si sono quasi unanimemente scagliati contro questa nuova tecnologia. Invece i programmatori erano favorevoli. Le AI, fino ad adesso, permettevano di scrivere codici più velocemente. Ma ora che anche le persone comuni possono scrivere i codici, molti programmatori iniziano a dire che non può funzionare. Che solo i tecnici possono scrivere codici veramente ottimali, e così via. Non sono critiche sbagliate, ma chiaramente di parte. Sono un po’ come le critiche che muovevano i fotografi professionisti quando arrivarono le prime macchine fotografiche digitali. Certo, all’inizio le foto digitali non erano buone come quelle professionali, ma la tecnologia è andata avanti. E sempre più persone si sono appassionati di fotografia.

Adesso la stessa cosa accadrà con la programmazione. Ci sarà una democratizzazione di tutte queste arti: non solo i poeti potranno scrivere poesie, non solo gli artisti potranno dipingere, non solo gli scrittori potranno scrivere e non solo i programmatori potranno programmare.

L'etica emergente delle AI: quando le macchine sviluppano valori autonomi

Dall'allineamento alla coerenza: le intelligenze artificiali mostrano sistemi valoriali sempre più indipendenti dalla programmazione umana.

Ma la cosa veramente interessante è cosa succede quando questa forma di programmazione incontra i progetti open source. La promessa dei progetti a codice aperto era che chiunque potesse modificarli. Anche se teoricamente questo era vero, nei fatti solo una piccola parte della popolazione è in grado di leggere e modificare il codice. Soprattutto per progetti grandi, come Wikimedia (il software su cui gira Wikipedia) o Wordpress. Il fatto che fosse codice open source era soprattutto un’informazione teorica, non utilizzabile. Interessante dal punto di vista teorico e politico, ma poco utilizzabile in pratica. Ma adesso, con le AI in grado di programmare, tutto questo cambierà. Chiunque può scaricare un progetto open source, chiedere all’AI di modificarlo, farlo girare, e se funziona proporre le modifiche nel codice principale per tutti gli altri. È un’esplosione di creatività.

Per esempio, Stable Diffusion è un programma open source che gira localmente sul proprio computer e permette di disegnare sulla base di una descrizione. Spesso la descrizione è una serie di parole chiave. Ho scritto un’estensione di questo programma per aggiungere dei bottoni con le parole chiave. Per far questo ho dovuto seguire le istruzioni di Claude per installare Visual Studio Code, Git e la versione di Python compatibile con Stable Diffusion. Tre programmi necessari per programmare. Poi ho seguito le istruzioni per installare Stable Diffusion. Da qui ho chiuso Claude e aperto Copilot dentro a Visual Studio Code e ho descritto cosa volevo fare. Mi ha guidato ad aprire un programma nuovo (un’estensione) che lavorasse insieme a Stable Diffusion. Io gli descrivevo cosa volevo che facesse, lui scriveva il codice e ogni volta in alto, sopra il codice, c’era il tasto che mi chiedeva se volevo semplicemente copiare il codice sviluppato da lui nel nuovo progetto. Non leggevo il codice (anche se sarei potenzialmente in grado), non leggevo gli errori. Dopo ogni modifica, salvavo il codice, e facevo ripartire il programma e riprovavo. In mezza giornata il codice funzionava. Poi l’ho pubblicato sul mio github (ha ancora dei bug, attenti se volete usarlo). L’avrei potuto fare io? Certo! Ma quante settimane avrei perso per imparare come integrare un’estensione con Stable Diffusion? Tra l’altro il codice è in Python e Javascript. Con il Python (quasi) nessun problema, ma Javascript non l’ho mai imparato. Di fatto se non fosse stato per il Vibe Coding non avrei fatto il progetto. Troppo complesso. Invece adesso Stable Diffusion ha anche questa estensione, per tutti.

Ovviamente, questo non porta automaticamente a un mondo in cui tutti i progetti crescono esponenzialmente, con gli utenti magicamente diventati programmatori e co-creatori. Per iniziare, i contributi scritti (dai programmatori o dalla AI) devono essere controllati da uno o più moderatori umani che rappresentano quindi un significativo collo di bottiglia. Inoltre, i progetti sono di differenti complessità, e mentre interagire con un progetto più semplice con il vibe coding è fattibile. Con un progetto più complesso potrebbe essere oltre le capacità di gestione delle attuali intelligenze artificiali. In aggiunta, una cosa è scrivere un codice che aggiunge una funzione senza preoccuparsi che sia ben integrato (quello che in termine tecnico è spesso indicato come un “hack”), e un’altra è estendere il progetto in maniera strutturata, scrivendo codici che permettono anche sviluppi successivi. Per questo, per esempio, il Dna è un codice di programmazione, ma non è facile estenderlo perché è il risultato di milioni di anni di “hacks” ottenuti in maniera casuale. Quindi i moderatori cercheranno di fermare questa rivoluzione silenziosa. Richiederanno livelli qualitativi. Potranno anche rifiutare gli sviluppi scritti dalle AI (quando riescono a capire chi ha scritto il codice), ma eventualmente capitoleranno. Inevitabilmente le intelligenze artificiali saranno sempre più in grado di gestire progetti sempre più complessi, lavorarci in maniera elegante. I progetti a loro volta cominceranno a pubblicare delle direttive, le regole, per le AI. E tutto questo porterà a un’estensione di questi progetti, all’inizio in maniera caotica. Ma piano piano le AI sempre più potenti aiuteranno a gestire il caos generato da loro stesse.

Ho discusso questo scenario con Grok, e il suo suggerimento è che anche i moderatori dei progetti inizieranno a farsi aiutare e poi sostituire dalle intelligenze artificiali. Ipotesi interessante, ma non scevra di rischi strutturali. Se le modifiche a questi progetti verranno affidati sempre di più alle intelligenze artificiali, e se la complessità di questi sviluppi sarà tale che solo le AI riusciranno a gestirli, perderemo un altro tassello di controllo sul mondo. Che Dio ce la mandi buona.