Programmazione Vibe

Miniatura

Cos’è la Programmazione Vibe?

La programmazione vibe è un metodo di programmazione potenziato dall’IA introdotto da Andrej Karpathy nel 2024/2025. Con la programmazione vibe, descrivi ciò che vuoi tramite prompt in linguaggio naturale e solitamente i modelli linguistici di grandi dimensioni (LLMs) generano la maggior parte, spesso tutto, il codice funzionante per te. Se hai tempo, dai un’occhiata a L’Arte della Programmazione Vibe adattata da Rick Rubin per approfondire la via della Programmazione Vibe.

Un grande vantaggio di questo nuovo metodo è l’accessibilità, dato che persone senza esperienza di programmazione possono costruire progetti mentre sviluppatori esperti possono prototipare rapidamente nuove idee prima di impegnarsi completamente. Questo è particolarmente utile per le startup. Lo svantaggio è che gli sviluppatori molto probabilmente non comprenderanno appieno come funziona il codice generato. Per piccoli progetti personali va bene, ma per software di livello produttivo può portare a problemi a lungo termine e debito tecnico.

Esistono molti strumenti che rendono la programmazione vibe più fluida. Cursor IDE, Claude Code CLI, GitHub Copilot, Loveable, Replit, v0 e altri ti consentono di lavorare con l’IA direttamente nel tuo ambiente o forniscono interfacce dedicate per la programmazione vibe. Personalmente, per questi progetti mi sono principalmente affidato a Cursor IDE e Claude Code CLI.

Ecco il punto però. Questi strumenti e modelli costano soldi. Con la programmazione tradizionale paghi principalmente con il tuo tempo. Con la programmazione vibe paghi con il portafoglio. E se non sai cosa stai facendo, paghi sia con il portafoglio sia con il tempo. Ciascuno dei progetti in questa pagina costa circa $10-$20 per essere realizzato. Questo si accumula se sperimenti molto. Credo però che man mano che questi modelli miglioreranno e diventeranno più efficienti, il costo diminuirà eventualmente. Per ora, è qualcosa da considerare quando decidi se la programmazione vibe ha senso per il tuo progetto.

Curioso di cosa fosse possibile, ho provato la programmazione vibe personalmente e ho creato questa pagina per esplorare il principio attraverso progetti reali. Non sto solo costruendo prodotti, sto testando e dimostrando ciò di cui la programmazione vibe è veramente capace. È solo per divertimento, ma offre uno sguardo a come potrebbe apparire la programmazione in futuro man mano che questi modelli continuano a migliorare.

Teorema della Scimmia Infinita

Scrittore

Hai mai sentito parlare del Teorema della Scimmia Infinita? È un esperimento mentale filosofico che dice che se dai infinite scimmie infinite macchine da scrivere e infinito tempo, alla fine una di esse produrrà le opere complete di Shakespeare semplicemente battendo casualmente sui tasti.

Sembra ridicolo, vero? Ma ecco la parte sorprendente. La programmazione vibe è un po’ così, tranne che al posto delle scimmie abbiamo modelli di IA, al posto delle macchine da scrivere abbiamo i linguaggi di programmazione, e al posto di Shakespeare otteniamo software funzionante.

Pensaci. I grandi modelli linguistici sono addestrati su miliardi di righe di codice, schemi ed esempi. Quando dai a un LLM un prompt, in realtà non “riflette” sul tuo problema passo dopo passo come farebbe uno sviluppatore umano. Invece, predice il token successivo più probabile basandosi sui modelli che ha appreso durante l’addestramento. Sta essenzialmente facendo congetture informate generando codice sulla base di ciò che statisticamente sembra corretto.

E in qualche modo, più spesso di quanto si pensi, funziona. Il modello produce codice che effettivamente compila, viene eseguito e risolve il tuo problema. Non tramite comprensione, ma tramite abbinamento probabilistico di pattern su scala assolutamente enorme. È come se il generatore di testo casuale più sofisticato dell’universo avesse trovato la risposta “giusta”. Ma qui la differenza è la velocità. Quelle scimmie avrebbero bisogno della vera infinità. La tua IA? Ci arriva in secondi o minuti.

Quindi in un certo senso, quando usi la programmazione vibe, stai sfruttando milioni di righe di pattern di codice, distillate in un modello, per generare soluzioni. Non è risoluzione di problemi cosciente, è magia statistica. Ed è proprio per questo che è così potente e, ammettiamolo, perché capire cosa fa effettivamente il codice continua a essere importante.

La Domanda è Più Importante della Risposta

Ecco qualcosa di importante che spesso viene trascurato. La programmazione vibe non riguarda l’ottenere qualsiasi risposta, riguarda porre la domanda giusta. Pensa al Supercomputer Deep Thought de La Guida Galattica per Autostoppisti. Ha impiegato milioni di anni a calcolare la risposta alla domanda fondamentale sulla vita, l’universo e tutto quanto, solo per darti il numero 42. La risposta era tecnicamente corretta, ma inutile perché il vero problema era capire quale domanda porre in primo luogo.

La programmazione vibe funziona allo stesso modo. I tuoi prompt sono tutto, ma lo è anche la gestione del contesto. Un prompt vago ti darà codice vago, e se non fornisci i file giusti, la documentazione o gli esempi come contesto, il modello non capirà cosa ti serve davvero. Se sei qualcuno che comprende programmazione, architettura e progettazione di sistemi, puoi creare prompt dettagliati e curare il contesto giusto per guidare l’LLM verso soluzioni eccellenti. Ma se non sai cosa chiedere o quale contesto fornire, nemmeno l’IA lo saprà.

Questo è in realtà il motivo per cui la programmazione vibe è così potente per gli sviluppatori esperti. Noi sappiamo come dovrebbe essere un buon codice, comprendiamo le insidie e possiamo scrivere prompt che indirizzano il modello lontano da esse. Per i principianti senza background tecnico, questo diventa una vera limitazione. Potresti ottenere codice funzionante, ma senza capire cosa è andato storto o cosa chiedere dopo, resti bloccato.

Quando la Programmazione Vibe Non Basta

Gli ultimi modelli di IA sono impressionanti, ma non sono una soluzione magica. La programmazione vibe può funzionare in produzione, ma solo se la prendi sul serio. Hai bisogno di test unitari solidi. Hai bisogno di fonti di verità chiare su cosa dovrebbe fare il tuo sistema. Devi rilevare quando qualcosa si rompe o devia. E hai bisogno della mentalità hacker. Pensa fuori dagli schemi e prova a rompere il tuo progetto realizzato con la vibe in modi inaspettati. Quali casi limite non hai considerato? Quali vulnerabilità di sicurezza potrebbe sfruttare qualcuno? Questo è ciò che separa il codice che semplicemente funziona dal codice che è realmente robusto.

Ecco la cosa però. L’IA non ti possiede. Sei tu a possedere l’IA. Non accettare semplicemente ciò che genera. Revisiona. Testa. Rompilo. E, onestamente, per certe parti della tua base di codice dovrai tornare alla programmazione vecchio stile. Concentrati, pensa a fondo, scrivilo tu stesso. La programmazione vibe velocizza le cose, ma non è un sostituto della programmazione reale quando conta davvero.

Un’altra cosa che ho imparato. A volte devi solo terminare una sessione con l’IA e iniziarne una nuova. Man mano che la cronologia della conversazione cresce sempre di più, le prestazioni del modello degradano. Fa più errori, genera codice meno coerente e comincia a “allucinare” più frequentemente. Se non te ne accorgi e non ti fermi, questi errori si compongono l’uno con l’altro, peggiorando progressivamente le cose. È come cercare di leggere un documento che è stato fotocopiato più e più volte. Ricominciare da capo mantiene le cose pulite e nitide.

Progetti realizzati con Programmazione Vibe

Di seguito ci sono due progetti, scale (repository) e trascendentale (repository), che ho costruito usando la metodologia della programmazione vibe. Principalmente generati da prompt, con lavoro manuale limitato a fornire contesto, debug e distribuzione su GitHub Pages. Sono esperimenti divertenti su siti statici che mostrano ciò che è possibile quando combini idee creative con codice tramite la programmazione vibe. Entrambi sono ospitati su GitHub.

Visualizza Progetti

Scale

Trascendentale