Lingue: English · Nederlands · Deutsch · Español · Français · Italiano · Português · Papiamentu · Frysk

Indice / Articoli / Vibe Coding

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.

Simulatore di volo generato dall'IA: fly.pieter.com
Simulatore di volo generato dall'IA: fly.pieter.com

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.

Visualizzazione 3D dei dati di allenamento
Visualizzazione 3D dei dati di allenamento

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.

Illustrazione del concept del gioco del 2013: particelle HDL nel flusso sanguigno
Illustrazione del concept del gioco del 2013: particelle HDL nel flusso sanguigno

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.

Il motore di gioco 3D in azione: nota i difetti grafici sulla parete dell'arteria
Il motore di gioco 3D in azione: nota i difetti grafici sulla parete dell'arteria

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.

Paradosso della produttività: quando far funzionare la macchina ti costa più fatica del valore di ciò che produce
Paradosso della produttività: quando far funzionare la macchina ti costa più fatica del valore di ciò che produce

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?

Formati per macchine di questa pagina