Il vero titolo doveva essere Perché oggi Common Lisp è il migliore linguaggio di programmazione. Scriverlo ora farà cambiare pagina a tanti, ma potrebbe avere un senso invece dare una possibilità al messaggio.
L’autrice infatti enuncia l’ipotesi e poi spiega il perché. Il succo è inedito e anticonvenzionale: le caratteristiche di Common Lisp sono ideali per un mondo nel quale chiunque può azionare un sistema generativo capace di iniziare un progetto di programmazione.
Tutto molto pragmatico e assai poco ideale, niente manifesti o rivoluzioni e piuttosto considerazioni spicciole. A partire dal fatto che il codice Lisp è più efficiente di quello della maggior parte dei programmi in voga: lo stesso problema viene risolto con meno codice, cioè meno token, cioè minor costo. Analogamente, nella finestra di contesto di un LLM stanno più informazioni, se si programma in Lisp; l’assistente generativo lavora meglio.
Un altro vantaggio di Lisp è la commistione tra interprete e compilatore: se un programma Lisp contiene un errore, si interrompe e parte il debugger. Il programmatore può sistemare il problema e ripristinare l’esecuzione, senza dover riavviare il programma da zero o attendere una ricompilazione. Anche questo facilita le cose a un assistente generativo. Nessun altro linguaggio di grande diffusione, secondo l’autrice e nel mio piccolo secondo me, possiede questa opzione.
La considerazione che mi ha colpito più in profondità è questa:
Il valore di un programma sta nelle opinioni dietro esso. Andiamo verso un mondo in cui le aziende di software lasceranno agli utenti delle libertà di modificare i propri prodotti, in quanto un LLM permette di farlo con facilità. Se un’azienda costruisce per il proprio prodotto un buon linguaggio di dominio, ciò che gli utenti vi costruiranno sopra sarà molto migliore, poiché partiranno dalle opinioni dell’azienda piuttosto che da zero.
Per capire appieno l’affermazione bisogna partire dal preambolo presente nel post a proposito di come funziona Lisp. Molto in sintesi, i dati e i comandi vengono giostrati nello stesso modo e nello stesso momento, per cui creare una macro Lisp è sostanzialmente creare un piccolo linguaggio di programmazione ad hoc per il dominio del programma stesso. Questo porta conseguenze notevoli e l’affermazione che domani potrebbe diventare normale modificare il prodotto che arriva dalla software house è potente. Cambierebbero molte cose, in modo intenso.
Se niente di tutto questo finisse per essere vero, rimarrebbe la visione che trova uno dei linguaggi di programmazione più vecchi fatto su misura per lo sviluppo più recente e dirompente della programmazione. Un bel cortocircuito.