Vibe Coding
Sulla potenza e sul pericolo di programmare con l'IA
- Pubblicato
- Aggiornato
- (creato )
- Scritto da
- Willem L. Middelkoop
- Argomenti
- AI · gioco · programmazione · lavoro
- Versione umana di questo articolo
- https://willem.com/it/2025-04-15_vibe-coding/
- English
- Vibe Coding
- Nederlands
- Vibe Coding
- Deutsch
- Vibe Coding
- Español
- Codificación Vibe
- Français
- Vibe coding
- Português
- Vibe Coding
- Papiamentu
- Vibe Coding
- Frysk
- Vibe Coding
- Lingue
- Tradotto dall’originale inglese da un modello linguistico in due passaggi (traduzione e correzione) con un glossario e un controllo ortografico; non ancora letto da un madrelingua.
Riassunto
Con più di 48.000 dollari al mese di incassi, il simulatore di volo di Pieter Levels ha dato il via a un'ondata di innovazione. Senza conoscenze approfondite dei motori di gioco 3D, ha creato il suo gioco con il 'vibe coding' e l'IA. I critici del suo lavoro hanno indicato problemi di sicurezza e di scalabilità, mentre i sostenitori hanno elogiato il risultato straordinario. Cosa possiamo imparare da tutto questo?
Testo completo
Vibe Coding
Il vibe coding è un metodo di programmazione guidato dall'IA: descrivi un problema in poche frasi come prompt per un modello linguistico tarato sulla programmazione. Il modello genera il software e il ruolo del programmatore si sposta su guidare, testare e rifinire il risultato. I sostenitori dicono che permette anche a chi è alle prime armi di creare programmi senza una lunga formazione o competenze di ingegneria del software.
Pieter Levels ha creato il gioco fly.pieter.com. Sui social ha tenuto aperto il suo percorso: dall'idea iniziale fino alla pubblicazione. Ha attirato sponsor per la pubblicità dentro il gioco e vende potenziamenti premium (come aerei speciali) nel gioco, incassando migliaia di dollari al mese.

Il suo successo ha sollevato domande sul futuro della programmazione di giochi, o addirittura della programmazione in generale. Se un tizio con un laptop riesce a creare un successo come questo, che bisogno c'è degli studi con grandi budget? O, al contrario, cosa succederebbe agli studi con grandi budget se adottassero un approccio di 'vibe coding' simile nella produzione?
Provarlo di persona
Ho un po' di esperienza nello sviluppo di un gioco (Snake 97, oltre 40 milioni di download), e la storia di Pieter mi ha spinto a guardare la tecnologia 3D che ha usato per il suo gioco: ThreeJS. Costruire un gioco è difficile, farlo in 3D è ancora più difficile. La matematica che regge un mondo in tre dimensioni aggiunge una sfida tutta nuova. In molti modi è diverso dai programmi normali o dai semplici giochi bidimensionali. Anche se avevo già sperimentato un po', ho trovato la curva di apprendimento della matematica 3D piuttosto ripida. Qui l'IA può aiutare.

Per l'app Gran Fondo ho usato l'IA per generare una rappresentazione tridimensionale di una corsa registrata. Ho formulato il mio obiettivo in inglese semplice e il modello di IA ha generato il codice necessario per usare ThreeJS e mostrare il mio allenamento su un piano rotante. I primi risultati non erano buoni, ma capivo abbastanza di quello che era stato generato da continuare a chiedere correzioni specifiche. Qualche ora dopo avevo qualcosa che mi piaceva e, soprattutto, sentivo di aver imparato molto sulla fattibilità della mia idea iniziale. L'IA mi ha permesso di imparare più in fretta.

Ho deciso di esplorare un'altra idea che avevo messo da parte da un po': un gioco sulle particelle di colesterolo cattivo e buono nel flusso sanguigno di una persona. Con elementi di un gioco in stile endless runner, ho pensato che fosse adatto per sperimentare ancora, perché questi giochi hanno livelli generati dal computer. Costruire un generatore automatico di livelli mi sembrava qualcosa in cui l'IA poteva aiutarmi.
Sfruttando le nuove capacità 3D, ho pensato che il gioco dovesse muoversi dentro le arterie, invece del movimento laterale tipico dei classici giochi 2D. Questo porta sfide come il clipping visivo e la grafica distorta, perché la telecamera è fuori dalla scena 3D. Un'altra sfida è la maggiore complessità del rilevamento delle collisioni tra gli elementi di gioco, necessario per le meccaniche. Il codice generato dal modello di IA cresceva a ogni iterazione.

Dopo circa 800 righe di codice ho iniziato a sbattere contro i limiti del modello di IA: ricominciava a fare errori e bug che aveva già risolto nelle iterazioni precedenti. Ogni nuova iterazione portava problemi nuovi e il modello dimenticava le correzioni e le rifiniture applicate prima. Dipende dai limiti del contesto (i token in ingresso), che sono fondamentali per il funzionamento dei grandi modelli linguistici. In parole semplici: non riesce a ricordare abbastanza da continuare a iterare sull'insieme.

Dopo alcuni giorni di sperimentazione intensa ho smesso di sviluppare il motore di gioco con l'IA. Ero arrivato al punto in cui impiegavo più energie a gestire il modello di IA che al motore di gioco vero e proprio. Ho pensato che fosse meglio procurarmi dei libri su queste tecnologie, leggerli, diventare più bravo io e poi costruire il motore di gioco a mano. Quando le cose si complicano, il nostro cervello sembra capace di concentrarsi su parti specifiche di un compito complesso, rispettando comunque l'insieme più grande.
Sulla follia della "programmazione in linguaggio naturale"
Oltre ai limiti del contesto che un modello di IA riesce a comprendere, credo ci sia il problema dell'ambiguità. Ti consiglio di leggere le parole di Edsger Wybe Dijkstra, che nel suo EWD667 riflette sulla follia della "programmazione in linguaggio naturale". Una descrizione priva di ambiguità, libera da pensieri confusi, è il fondamento del codice affidabile. Eppure la nostra lingua madre lascia troppo spazio a ogni tipo di sciocchezza ed errore. Dovremmo invece padroneggiare le nostre parole, pensare con lucidità e specificare con coraggio.
Un linguaggio formale, come un linguaggio di programmazione, un modello matematico o una specifica completa di input e output, può essere uno strumento straordinariamente efficace per escludere ambiguità ed errori. In parole semplici: ottieni il miglior output quando dai il miglior input.
Usare il codice come prompt per l'IA
Per vedere se l'IA mi avrebbe dato codice migliore, ho deciso di cambiare il linguaggio con cui chiedo. Invece di descrivere in linguaggio naturale quello che volevo, ho caricato un pezzo di codice scritto da me tempo prima, con alcune caratteristiche molto precise:
- il codice veniva da un sistema in produzione, sapevo che funzionava bene
- il codice conteneva varie istruzioni di gestione degli errori, che ne aumentavano la robustezza
- il codice non aveva errori di sintassi e usava variabili e funzioni con nomi logici
- il codice aveva un ambito molto preciso, con interfacce ben definite verso il mondo esterno
Oltre al codice ho chiesto all'IA di cambiare un aspetto particolare. Doveva togliere l'uso di un certo programma esterno (il modulo NodeJS 'lwip') e sostituirlo con un altro programma esterno (ImageMagick). Siccome sia lwip sia ImageMagick sono codice open source, il modello di IA conosce bene questi programmi. Gli ho dato la ricetta perfetta per cucinare.
Il codice che mi ha dato l'IA era una sostituzione perfetta al 99% del mio. Il codice generato aveva un solo bug, che faceva sì che alcuni parametri non venissero gestiti correttamente (escape), causando un crash. Ho potuto individuare l'errore e correggerlo a mano, perché conoscevo bene e mi muovevo a mio agio nel contesto di quello specifico software. Dopo altri test ho deciso di mettere in produzione il codice generato dall'IA, perché la nuova libreria andava molto meglio di quella che sostituiva.
Conclusione
Il vibe coding con l'IA permette di fare prototipi e di imparare in fretta, come mostra il successo di Pieter Levels, ma va in difficoltà nei progetti complessi che richiedono precisione. Solleva una domanda: l'IA allarga le nostre possibilità o ci limita ai suoi confini? La padronanza unisce il pensiero umano alla potenza dell'IA. Rifletti sul mestiere: quando gli strumenti affinano la tua abilità e quando potrebbero smussarla?