DK10x25 - Capire il vibe
Io i vibe coder li capisco.
Ascolta l'episodio su Spreaker.com
Scusate il ritardo. Certi temi mi costano pericolosi picchi di cristomadonio e in più per parlarne devo fare una fatica fisica per vincere la mia reazione istintiva di rigetto. Quello di oggi è uno di quei temi.
Intanto l'Europa con la sola eccezione della Spagna sta facendo la solita figura da servi sulla guerra di Stati Uniti e Israele contro l'Iran, e l'Italia sta facendo una figura da pezzente fra i servi, con la presidente del Consiglio che continua a dire di non avere abbastanza informazioni per decidere se l'aggressione all'Iran sia una violazione del diritto internazionale o magari una gita fuori porta. I geni che fanno i titoli del manifesto hanno chiamato Meloni la "milite ignara" e non c'è altro da dire.
Nel frattempo c'è un imbecille oltre atlantico che, a quel che titolano i giornali, "permette" (si sentono le virgolette?) all'India di acquistare petrolio russo e addirittura "permette" alla Cina di comprare petrolio iraniano. E se uno deve giudicare dalle reazioni dell'Europa (escluso Sànchez), tutto questo è normale.
Il che va bene, perché anche quello che succede nel campo del digitale è altrettanto folle e altrettanto normale. Io sono convinto che stiamo vivendo nella linea temporale più stupida del multiverso eppure ogni giorno succede qualcosa che mi dimostra che siamo saltati in un'altra linea temporale, ancora più stupida.
Sigla.
Io i vibe coder li capisco. Li capisco perché sono un essere umano e quello che un essere umano può fare, lo può fare anche un altro essere umano. E li capisco particolarmente bene perché sono un informatico, e ho conosciuto gli stessi dèmoni. Ma capisco tante cose. Anche Trump, anche Altman. Capire non vuol dire rinunciare al lanciafiamme.
Avvicinarsi alla programmazione, ma in generale all'uso del computer, ha molto del percorso iniziatico. All'inizio, niente funziona. Uno è convinto di avere fatto tutto per bene e invece c'è una virgola in meno, uno spazio in più, e occorre ricominciare daccapo. La prima fase è scoprire che ci si avvicina al computer solo con umiltà. Può essere un ammasso di ferraglia e circuiti ma, per quanto diamo in escandescenze, il computer non si lascia domare.
Poi le cose si fanno più complicate, e più si comincia a fare qualche passo più il computer ti riporta sempre al punto di partenza. Il computer non accetta approssimazioni, non vuole mezze misure. Accetta solo l'assoluto rigore, e non tollera chi si stanca o è impaziente. L'ammasso di ferraglia è un avversario formidabile; non si può sconfiggerlo, si può solo assecondarlo.
Qui è dove la maggior parte delle persone comincia a parlarci, con il computer, perché non concepiamo di doverci adeguare a una stupida macchina. E invece è proprio quello che occorre fare. Ogni programmatore raggiunge i propri obiettivi elaborando il lutto della propria superiorità sulla macchina. E passa sempre per le cinque fasi canoniche: negazione, rabbia, contrattazione, depressione e accettazione. Qui è anche dove si scopre che il mondo dentro il computer ha una complessità sufficiente a nascondere quella del mondo reale che la complessità del computer è chiamata a servire. Da qui viene la massima secondo la quale programmare è creare mondi, e molti in questi mondi si perdono, ma su questo ci torniamo più tardi.
Poi, all'improvviso, tutto cambia. Improvvisamente le cose cominciano a funzionare. E mentre si iniziano a scrivere le prime righe funzionanti ci si accorge immediatamente di quali sono gli errori che si facevano, quando si pensava di essere pronti e non lo si era. È un'esperienza profondamente trasformativa, un rito di passaggio che separa per sempre chi "capisce il computer" (si sentono le virgolette?) da chi non lo capisce. È la scoperta della distanza fra "fai ciò che dico", che è il modo in cui capiscono le macchine, e "fai ciò che intendo", che è come parlano gli esseri umani. Si può dire con tranquillità che ogni linguaggio di programmazione, da sempre, ha cercato di ridurre la distanza siderale fra questi due modi cognitivi, percorrendo qualche centimetro.
È a questo punto, quando le cose inspiegabilmente cominciano a funzionare, che molti realizzano cosa è accaduto: siamo diventati capaci di trovare le parole giuste perché il computer le trasformi nelle azioni che vogliamo. Per molti, questa è un'osservazione banale: un programma in fin dei conti non è che una sequenza di istruzioni, e per definizione l'esecuzione di un'istruzione porta a un risultato predefinito. Il problema è che, storicamente, culturalmente, la parola "istruzione" prevede un agente, tipicamente umano, che la esegua. Nel caso della programmazione, invece, l'esecuzione è lasciata al computer. E il computer è una macchina: nella famosa distinzione fra hardware e software, l'hardware è quello che puoi prendere a calci.
Il fatto che alcune particolari parole abbiano effetti sulla materia inerte e causino effetti nel mondo reale è la definizione di magia. Un programma è quindi un particolare incantesimo, e il programmatore, in un senso molto preciso, è un mago, non a caso si dice "il mago del computer". Chiunque si sia avvicinato alla programmazione, anche per hobby, è stato toccato da questa epifania.
In particolare con le interfacce a comandi, la bravura di un informatico era, appunto, conoscere i comandi più esotici, e i loro parametri più arcani. L'acquisizione di questa conoscenza era spesso vista come un rito di passaggio, e il neofita che si limitava a usare un comando con i parametri standard veniva guardato con sufficienza dagli operatori più esperti.
La progressiva dequalificazione della professione non ha minimamente eliminato questo effetto, per due motivi:
- uno, gli ambienti di interfaccia a finestre hanno assorbito e superato la complessità delle interfacce a linea di comando; quello che una volta era un parametro sconosciuto di un comando, oggi è un sotto-menu di un sotto-menu di un sotto-menu, oppure è sepolto nella decima schermata delle "preferenze";
- due, la capacità di far funzionare uno o più comandi precede invariabilmente la competenza per capire perché quei comandi funzionano. E, in alcuni casi, la sostituisce.
In entrambi i casi, però, chi ha più capacità digitali appare ancora, agli occhi del profano, come un mago capace di asservire la testarda e indomabile potenza del computer.
Quindi tutti gli operatori del computer, hanno questa impressione latente di essere in fondo degli operatori della parola (non me ne vogliano gli psicologi) nel senso che, a volte inconsciamente, percepiscono il proprio lavoro come la produzione di sequenze di parole che sortiscono un certo effetto desiderato.
Cioè, incantesimi.
La programmazione come incantesimo, il computer come strumento di magia, è una visione che accomuna sia i praticanti che i profani perché, come diceva Arthur C. Clarke, ogni tecnologia sufficientemente avanzata è indistinguibile dalla magia.
PIccola parentesi personale: al giovane me successe durante una delle molte notti passata a programmare per la tesi in Prolog, un linguaggio oggi dimenticato in cui ogni programma è un insieme di fatti e di precondizioni per quei fatti. L'avvio di un programma corrisponde a chiedersi se un certo fatto sia vero, dato l'insieme di fatti e precondizioni formalizzati nel programma.
Un programma prolog è quindi formulato come una domanda, a cui l'esecuzione del programma offre una risposta. Ora, una delle caratteristiche del prolog è che, con alcune accortezze, è possibile invertire la domanda e la risposta. Il che portò il cervello del giovane me alla visione di un programma che poteva fornire la domanda relativa a una certa risposta. Avendo appena letto la Guida Galattica per Autostoppisti, però, la cosa non ebbe su di me altro effetto che quello di ridere per mezz'ora.
Non tutti nel mio campo hanno superato l'epifania con tanta scioltezza. Fine dell'amarcord.
pausa
L'arrivo dei modelli linguistici, associati o meno alla programmazione, ha esacerbato quest'effetto, perché il modello linguistico non richiede nemmeno la conoscenza di un linguaggio di programmazione con la sua sintassi astrusa, ma si basa sui prompt, cioè frasi, in linguaggio naturale, che secondo la mitologia corrente dovrebbero produrre un effetto deterministico su quello che rimane a tutti gli effetti un sistema pseudocasuale.
Qui, di nuovo, vediamo il tentativo di avvicinare il "fai ciò che intendo" al "fai ciò che dico", con i soliti penosi risultati.
Però con l'arrivo dei modelli linguistici esperti e profani si sono trovati in mano la capacità tangibile di indurre risultati da parte della macchina semplicemente evocandoli. Magari in un linguaggio semi formalizzato, come vorrebbe la mitologia del prompt engineering, però l'effetto dei modelli linguistici è esattamente questo: si chiede, si dice, e il risultato (o più spesso qualcosa di simile) arriva.
Se questo lo associamo a quello che già succede normalmente nella mente di un operatore, e cioè vedersi capace di evocare degli incantamenti (cioè dei comandi) che portano il computer a produrre un risultato desiderato, ecco che il cerchio si chiude. Il modello linguistico è la reificazione di quella magia che in fondo ogni operatore del computer ha sempre sentito all'opera nelle proprie azioni.
E attenzione, non c'è differenza fra operatori più o meno professionisti, non è una questione di competenza, ma di illusione, di fascinazione, di allucinazione.
Nel 1985 Abelson e Sussman, due monumenti dell'informatica mondiale, scrissero un libro che raccoglieva il sillabo del corso introduttivo di programmazione del MIT. Il libro si chiamava "Struttura e interpretazione di programmi per calcolatore". Il libro è conosciuto anche come "The Wizard Book" perché in copertina è raffigurato un mago con tanto di cappello a punta e palla di vetro.
La dedica si apre con queste parole:
Questo libro è dedicato, con rispetto e ammirazione, allo spirito che vive dentro al computer.
Rispetto e ammirazione. E stiamo parlando di due professori del MIT, non di due techbro fulminati.
La percezione del computer come strumento di magia è anche alla base del cosiddetto effetto ELIZA, dal nome del primo chatbot creato da Weizenbaum a metà degli anni Sessanta del Novecento, capace di indurre persone altrimenti razionali a credere di stare parlando con un essere senziente.
Occorre poi riagganciarsi proprio all'analisi di Weizenbaum, perché uno degli effetti del poter tradurre le proprie intenzioni in risultati soltanto per mezzo di parole, che siano comandi di shell o istruzioni di un linguaggio di programmazione, produce, in certe personalità più inclini, una sorta di progressivo distacco dalla realtà, fino al punto di vedere persone che si perdono nei meandri delle loro stesse astrazioni:
- o lavorando per anni a programmi che diventano sempre più intricati e autoreferenziali, fino a diventare un mondo a sé, fino a diventare l'interfaccia per tutto, e qui direi che Stallman e
emacssono emblematici; - oppure lasciandosi completamente assorbire dalle rassicuranti complessità del computer fino a trascurare quelle più ruvide del mondo reale che il computer dovrebbe servire; e questo è il caso dei cosiddetti "techbro", che io chiamo "pigiatasti a cottimo", perché mi sembra più preciso e perché veicola meglio la profondità del mio disprezzo.
I entrambi i casi siamo di fronte a persone per le quali lavorare al computer è il fine in sé; il significato di ciò che fanno per il mondo fuori dal computer è del tutto indifferente.
D'altronde, anche senza scadere nella patologia, programmare resta, in un senso molto preciso, creare mondi, e di questi mondi il programmatore è il demiurgo. Non è un caso che in UNIX, e quindi in Linux, un programma che rimane attivo in background viene chiamato dæmon, demone. E credo non sia neanche un caso che l'interesse per giochi come Dungeons and Dragons sia esploso quasi in contemporanea all'arrivo dei primi computer individuali, e abbia coinvolto quasi lo stesso tipo di pubblico.
Il programmatore compulsivo, come lo ha chiamato Weizenbaum, è qualcosa che tutti quelli che lavorano con il computer hanno come parte del proprio spazio psichico, una coazione all'uso dello strumento che non tutti e non sempre riescono a tenere sotto controllo.
Chiunque debba gestire un team IT ha sempre due problemi di fondo:
- il primo è che ogni novità tecnologica deve essere inclusa, deve essere adottata, perché i ragazzi vogliono il giocattolo nuovo. Perché il loro lavoro in quanto stregoni è impossessarsi del nuovo incantesimo, poco importa che sia necessario oppure no;
- e il secondo, che discende dal primo, è mantenere l'attenzione e gli sforzi sul raggiungimento del risultato fuori nel mondo, e non sul dominio dello strumento dentro al computer.
Questo si vede dovunque, con il refactoring coatto, e spesso immotivato, di software testato, funzionante, validato da anni quando non da decenni di uso, e la sua ri-creazione nel linguaggio, nel framework di moda questa stagione.
Quando sento Amodei sostenere che Claude Code può aiutare a riscrivere il software bancario scritto in COBOL e testato da decenni, quando leggo che Microsoft vuole riscrivere l'intera codebase di Windows in Rust con l'aiuto della cosiddetta Intelligenza Artificiale, io vedo persone perse nelle proprie fantasie di potenza, e sento il rumore di Weizenbaum che si rivolta nella tomba.
Per questo sostengo che sia corretto parlare di psicosi quando si leggono certe affermazioni relative all'Intelligenza Artificiale: sono di persone che attribuiscono un valore di realtà alle proprie fantasie, e che reinterpretano la realtà in modo che questa corrisponda a quelle. Questa psicosi accomuna oggi tutti i techbro e i loro seguaci, ed è secondo me la chiave di lettura degli ultimi venti anni di tecnologie digitali; dai social che vogliono ridefinire i rapporti sociali fino alla cosiddetta Intelligenza Artificiale che ridefinisce l'intelligenza, quello che vediamo è lo sforzo esplicito di adattare il mondo perché corrisponda alla propria psicosi tecnocentrica.
Il fatto che poi per alcuni la visione del mondo corrisponda al proprio modello di business non è un'attenuante, sia chiaro. A me non importa sapere quanto uno Zuckerberg, un Altman o un Thiel credano poi davvero alle psicosi che vendono. Le loro reali motivazioni, se esistono, mi sono del tutto indifferenti. Per il mio giudizio etico mi bastano le loro azioni. E francamente, nel loro caso, non riesco a immaginare che possano esistere anche delle aggravanti.
Quello che dico è che capisco il meccanismo per cui persone altrimenti razionali e affidabili possono perdere il senso della realtà quando sono sottoposte a una tecnologia che ha tutti i tratti della magia: succede agli operatori di computer, succede a chi incontra la cosiddetta Intelligenza Artificiale. Essere esposti a un'illusione, però, non significa che sia necessario soccombervi. Si può fare informatica senza credere davvero di stare operando magie. Si può osservare un generatore di testo senza credere davvero che sia senziente. E allo stesso tempo si può comprendere la scelta sbagliata di molti di crogiolarsi nell'illusione, senza per questo giustificarli.
Su questo dobbiamo riflettere, perché il momento in cui i nodi verranno al pettine si avvicina. E nessuno di quelli che hanno scelto di illudersi, o ancora peggio che si sono fatti sacerdoti dell'illusione, deve potersi rifare una verginità.