Torno a scrivere qui dopo un bel po’ di silenzio, e non è per fare l’elogio degli LLM. Credo di non averlo mai fatto, in realtà. Ho solo provato a essere onesto: per me sono stati un’interfaccia attiva verso cose che volevo fare e che da solo non avrei mai potuto fare.
Quando mi sono accorto di questo potere ho avuto anch’io la mia sbornia, come tanti. Ho costruito roba che, a guardarla adesso, avrei anche potuto risparmiarmi. Succede. È successo ad Alex, a Valerio, a parecchi amici che conosco. A me è capitato prima, e quando l’ho vista arrivare addosso a loro l’ho riconosciuta subito, con la faccia di chi c’è già passato.
La cosa che ho adorato davvero, però, è un’altra: a un certo punto ho capito che potevo togliermi degli sfizi. È un discorso lungo e un po’ scomodo, e un giorno proverò a chiuderlo in un articolo solo, partendo da The Safe Place. Per adesso mi basta dire che fra quegli sfizi ci stava FAVELLA 1.
Un’idea che mi girava in testa da sempre
L’idea l’ho sempre avuta. Non l’ho mai toccata perché non sono un programmatore, e lo dico senza il falso pudore di chi cerca il complimento: le mie capacità di coding personale sono quelle che sono, e per un progetto del genere non bastavano nemmeno lontanamente.
Ma se una macchina mi permette di realizzare un sogno che mi porto dietro da una vita, perché non farlo?
In fondo la passione per le cose retrò ce l’ho sempre avuta. Le avventure testuali pure. Inform lo guardavo da lontano con quel misto di ammirazione e invidia che si prova davanti alle idee giuste. E poi c’era quel sapore lì, quello di mettere un’istruzione dietro l’altra, una routine appresso a quella dopo: mi ha riportato dritto agli anni del BASIC, quando nei listati lunghi e ingarbugliati mi muovevo con una disinvoltura che oggi mi sembra di aver preso in prestito da un altro.
Un cavaliere, una grotta, un drago
La mia primissima avventura testuale l’ho scritta senza nessun motore, nessuno script, niente di niente. Solo listato.
C’era un uomo che entrava in una grotta. Un cavaliere, ovviamente. Trovava delle cose che gli servivano, e nella stanza finale doveva ammazzare il drago usando quelle cose. La sagra indiscussa della banalità, lo so. Ma il punto non era il drago.
Il punto era che, mentre lo facevo, mi facevo delle domande. Come glielo spiego, al computer, che ho trovato una spada? Che se scrivo prendi quella spada deve restare da qualche parte, in un archivio che si chiama inventario? E che quando arriva il momento di usarla il programma deve andare a controllare se ce l’ho davvero, altrimenti niente, hai fallito, il drago si fa un boccone del cavaliere e amen.
Mentre facevo mi domandavo, e mentre mi domandavo imparavo.
Ecco cosa mi hanno restituito gli LLM, e ci tengo a dirlo: me lo hanno restituito già in una generazione in cui facevano veramente cagare, e scusate il termine.
Il giocattolo
FAVELLA è stato un bel giocattolo. Un periodo in cui mi sono divertito sul serio, e in cui ho avuto pure qualche aspettativa. Ci ho lavorato tanto e ho confezionato ogni pezzo con una cura che, rileggendola adesso, era quasi eccessiva per un progetto che nessuno mi aveva chiesto.
Poi mi ha fatto specie una cosa. Persone che potenzialmente potevano interessarsi, gente del giro, gente che quel mondo lì lo ama, hanno tirato dritto. Qualcuno l’ha ignorato, qualcun altro l’ha garbatamente schifato. Il problema è che l’ho fatto con un LLM? Può darsi. Anzi, probabilmente sì.
Se è quello il problema, allora è una limitazione loro. E peggio per loro.
Mesi fa Carlo mi aveva chiesto in faccia che senso avesse, oggi, mettersi a costruire un linguaggio di programmazione. Sul momento non avevo saputo rispondere. La risposta era che uno sfizio non ha bisogno di avere senso per nessun altro che per chi se lo toglie.
Cosa ho fatto per chiudere davvero
Come vi avevo anticipato in un altro articolo, FAVELLA adesso la metto lì. E «metterla lì» andava fatto per bene, non a metà. Quindi, prima di lasciarla andare, ho passato una giornata intera a raccogliere i pezzi sparsi.
Perché FAVELLA era sparpagliata in tre posti. Il linguaggio stava su GitHub, in chiaro. Il sito che conoscete, favella.eu, viveva in un repository privato che esisteva soltanto sul disco di casa mia. L’IDE stava in un terzo repository chiuso a chiave. E i file originali del marchio, i master a piena risoluzione, non stavano da nessuna parte se non in una cartella del mio computer. Adesso c’è un repository solo, aperto, con licenza MIT, e dentro c’è tutto: motore, sorgente completo del sito, manuale, le dieci avventure, l’IDE e perfino le immagini originali.
Non c’è più un pezzo di FAVELLA che esista soltanto sul mio computer.
E qui va detta la cosa che tenevo in caldo da tre articoli. Il «cantiere di cui non parlo», quello che avevo promesso e poi rimandato, e poi rimandato ancora, era Favella Studio: un ambiente di sviluppo desktop per scrivere le storie senza mai vedere una riga di codice, se non la vuoi vedere. La mappa delle stanze che si disegna trascinando il mouse, gli editor per gli oggetti, per le regole, per i dialoghi dei personaggi, un debugger che ti fa riavvolgere la partita turno per turno mostrandoti cosa è cambiato nel mondo, e un pulsante che ti impacchetta l’intera avventura in una pagina HTML che gira da sola, senza installare niente.
Funziona, in buona parte.
Ma è fermo alla 0.9 da mesi, nessuno lo mantiene e non uscirà mai, perché una data non ce l’ha e non ce l’avrà. Troppo tempo, troppe risorse. E soprattutto: doveva essere quello il pezzo a pagamento del progetto, l’unica cosa che avrei venduto. Alla fine l’ho aperto anche lui, sotto MIT, così com’è. Con gli spigoli. Se a qualcuno viene voglia di guardarci dentro o di riprenderlo in mano, il codice sta lì.
Il linguaggio, invece, quello no. Quello è finito e non si tocca.
Il motore intanto passa alla 1.0.1, ed è l’unica modifica che ha subìto da giugno a oggi. Riguarda soltanto il modo in cui il pacchetto si installa: i moduli avevano nomi troppo generici e finivano per pestare i piedi ad altri pacchetti Python nello stesso ambiente. Grammatica identica, comportamento identico, nessuna storia .fav cambia di una virgola. Le 681 prove automatiche sono lì dove erano, tutte verdi.
Poi il riordino, che è la parte più noiosa e quella che serviva di più. Ho scritto una mappa del repository che dice dove sta ogni cosa e come si rimette in moto tutto quanto partendo da zero, perché chi arriva non debba indovinare. Sul sito ho aggiunto una sezione che spiega cosa c’è in ogni cartella. Ho tolto dalla tabella di marcia le cose che non farò più, e al loro posto ho scritto la verità: il cantiere resta aperto, ma non lo tengo io.
Cosa c’è dentro la scatola
E allora tanto vale dirlo per intero, una volta sola, cosa c’è dentro quella scatola che sto lasciando sul tavolo.
C’è un linguaggio di programmazione italiano, arrivato alla 1.0.0 dopo essere nato come un mucchietto di espressioni regolari tenute insieme con lo sputo. Una grammatica formale senza una sola ambiguità, un compilatore a due passate, 681 prove automatiche più 43 dedicate al collaudatore. E il collaudatore è la cosa di cui vado più orgoglioso in assoluto: prende una storia e, senza giocarla, risale a ritroso la catena della vittoria per dirti se quella catena si chiude o dove si spezza. Una volta ha pizzicato una regressione che avevo introdotto io nel Relitto Silente. La macchina che avevo costruito per controllare le storie ha corretto il suo stesso autore, e a me è venuto da ridere per mezz’ora.
Il manuale è un libro vero: 84 pagine, 21 capitoli, composto in tipografia con Typst, con la copertina, il frontespizio, la pagina dei diritti e un evidenziatore di sintassi costruito apposta per il codice. Non spiega la lingua a vuoto. Ogni singolo esempio è preso parola per parola da un’avventura giocabile, La Casa di Via Stradivari, quella di zia Adele morta da tre giorni e della casa che non torna. Si impara la lingua entrando in quella casa. In apertura ci sono due dediche e non ne cambierei una virgola. La seconda è per Pietro Bernasconi, che ha spinto FAVELLA dove non era pensata per andare. La prima è questa:
A Bonaventura Di Bello, che con le sue storie ci ha portato in quel mondo di mezzo tra computer e fantasia. Grazie per tutta l’ispirazione.
L’ebook resta gratis per sempre. Chi lo vuole in carta, a colori, lo trova su Amazon.
C’è il laboratorio nel browser. Apri la pagina, scrivi una frase in italiano, premi un tasto e ci giochi. Dentro non c’è una simulazione: c’è il compilatore in persona, portato nel browser, che se sbagli ti risponde con la stessa diagnostica ruvida che avresti da riga di comando, numero di riga compreso.
Poi le sedici cassette, il corso interattivo, l’omaggio a cui tengo di più: quei corsi di programmazione su nastro dei primi anni Ottanta, uno per ogni capitolo del manuale. Solo che qui, quando la lezione ti chiede di scrivere una frase, sotto non c’è un controllo finto che confronta due stringhe. C’è il motore vero che compila quello che hai digitato e ti dà il suo verdetto.
La galleria raccoglie dieci avventure, tutte giocabili e tutte vincibili. Il Faro Spento, Il Giardino Murato, Il Forziere dei Tre Sigilli, la Casa di zia Adele, e naturalmente Il Relitto Silente, che a questo punto ha vissuto tre volte: prima gioco, poi codice aperto, poi vetrina della lingua che lo racconta. E ci sono gli esperimenti fuori asse, quelli nati per far scricchiolare la grammatica in punti dove non era prevista: un survival, un gioco di ruolo coi combattimenti a turni, un dating, e la discesa in automobile lungo la Salerno-Reggio Calabria che si era inventato Pietro. Fu proprio quella a farmi vedere che alla mia lingua mancava l’aritmetica, e che senza aritmetica non si va da nessuna parte.
E poi c’è la roba noiosa che però conta: pip install favella1, gli installer con il doppio clic per Windows, Mac e Linux, una libreria di moduli da includere nelle proprie storie, un gruppo dove ritrovarsi e un indirizzo tutto suo, favella.eu, che è la cosa che mi ha fatto più piacere di tutte.
Non male, per uno sfizio.
E mo’ basta
Beh, mo’ è veramente tutto, come direbbero a Roma.
Basta girarci intorno. È tutto pubblico su GitHub, dalla prima riga del compilatore all’ultimo file del marchio. E la cartella locale, quella sul mio computer, con dentro mesi di notti, l’ho cancellata.
Andiamo avanti con i prossimi progetti.
