Il codice BASIC di Umberto Eco ne Il pendolo di Focault e la grammatica del senso



Negli anni Sessanta due professori del Dartmouth College, John Kemeny e Thomas Kurtz, concepirono un linguaggio di programmazione destinato a rendere accessibile la logica dei calcolatori anche a chi non fosse matematico o ingegnere. Lo chiamarono BASIC, acronimo di Beginner’s All-purpose Symbolic Instruction Code, e nel giro di pochi decenni divenne il linguaggio più diffuso tra gli appassionati di informatica. Con i computer domestici degli anni Ottanta, dallo ZX Spectrum al Commodore 64, il BASIC divenne una sorta di alfabeto minimo del pensiero algoritmico, un laboratorio dove la logica si faceva visibile e le istruzioni producevano forme e parole.

All’interno del Pendolo di Foucault, il noto e compianto semiologo Umberto Eco collocò un piccolo frammento di questo linguaggio. Si tratta di un breve listato che, per chi ha vissuto quell’epoca, porta con sé l’eco dei primi schermi monocromatici e del suono metallico delle stampanti ad aghi. Eco non lo introduce come un semplice orpello tecnologico, bensì come una tessera simbolica nel mosaico concettuale del romanzo. Il programma calcola tutte le permutazioni di quattro lettere, generando l’intera serie di anagrammi possibili di una parola. In quell’operazione ripetitiva e precisa si manifesta la stessa tensione che attraversa l’intera opera: la ricerca di un ordine che abiti il disordine del mondo.

Il listato appare così nel romanzo:


10 REM anagrams

20 INPUT L$(1),L$(2),L$(3),L$(4)

30 PRINT

40 FOR I1=1 TO 4

50 FOR I2=1 TO 4

60 IF I2=I1 THEN 130

70 FOR I3=1 TO 4

80 IF I3=I1 THEN 120

90 IF I3=I2 THEN 120

100 LET I4=10-(I1+I2+I3)

110 LPRINT L$(I1);L$(I2);L$(I3);L$(I4)

120 NEXT I3

130 NEXT I2

140 NEXT I1

150 END


Il programma elenca le ventiquattro permutazioni di quattro lettere fornite in input. La macchina esegue la sua danza combinatoria, priva di consapevolezza ma carica di ordine interno. Ogni permutazione è una variazione del medesimo tema, un frammento di una struttura che si ripete fino a esaurire ogni possibilità. Nel gesto automatico del calcolo si riflette la condizione umana, sempre tesa a scorgere un significato dietro la pura combinazione dei segni.

Nel saggio «On a fragment of BASIC code in Foucault’s Pendulum», Andrea Valle interpreta questo frammento come un oggetto semiotico che mette in gioco la natura stessa del linguaggio. Il codice agisce all’interno del romanzo come dispositivo enunciativo. Da un lato appartiene al mondo narrato e viene trattato dai personaggi come un artefatto da comprendere, dall’altro diviene una figura metatestuale che parla direttamente al lettore. Eco costruisce un doppio livello di discorso: la narrazione letteraria e la scrittura algoritmica si rispecchiano e si richiamano, entrambe impegnate a generare senso attraverso la combinazione di elementi discreti.

Fonte: https://m.facebook.com/photo.php?fbid=1440220601208190


Valle sottolinea che il frammento di codice assume la funzione di un modello epistemologico. Mostra il funzionamento di un linguaggio che produce mondi, e insieme la distanza che separa la logica dall’esperienza del significato. L’istruzione «FOR... NEXT» ripete un movimento che è allo stesso tempo linguistico e filosofico. Ogni ciclo riproduce l’ossessione umana di trovare leggi, di costruire regole, di ordinare il caos. Il programma diventa un piccolo esperimento di ontologia computazionale, una metafora della mente che esplora la totalità delle configurazioni possibili.

Diagramma di flusso del codice BASIC per gli anagrammi. Fonte: Andrea Valle (vedi bibliografia)

Riscrivere oggi quel frammento in Python significa ripercorrere lo stesso cammino con strumenti più moderni. La prima versione che segue riproduce la logica originaria del listato, compreso il calcolo dell’indice mancante:


def basic_style_permutations(s: str):

    """

    Replica il listato BASIC del 'Pendolo di Foucault'.

    Genera tutte le 24 permutazioni di una parola di 4 lettere.

    """

    if len(s) != 4:

        raise ValueError("La funzione richiede esattamente 4 caratteri.")

    chars = list(s)

    results = []

    for i1 in range(4):

        for i2 in range(4):

            if i2 == i1:

                continue

            for i3 in range(4):

                if i3 == i1 or i3 == i2:

                    continue

                i4 = 6 - (i1 + i2 + i3)

                results.append(chars[i1] + chars[i2] + chars[i3] + chars[i4])

    return results


Una seconda versione, più lineare, utilizza le funzioni native del linguaggio moderno:


from itertools import permutations


def pythonic_permutations(s: str):

    """

    Genera tutte le permutazioni di una parola

    di qualunque lunghezza usando itertools.

    """

    return [''.join(p) for p in permutations(s)]


Eseguendo le funzioni su una parola come «ECOF», si ottengono le stesse ventiquattro combinazioni che il programma di Eco avrebbe stampato su carta. Il gesto del calcolo si rinnova, ma la riflessione resta la stessa. Ogni linguaggio, umano o artificiale, cerca di rappresentare l’invisibile struttura del mondo attraverso un sistema di segni e di regole.

Nel nostro presente, la medesima tensione verso l’ordine si manifesta nei modelli di intelligenza artificiale generativa. Di fatto, i grandi modelli linguistici o LLM, addestrati su enormi moli di dati testuali e multimodali, apprendono a organizzare il caos delle informazioni contenute in enormi dataset testuali e multimodali e a costruire rappresentazioni che l’essere umano riconosce, nella maggior parte dei casi, come dotate di senso. In essi si compie un atto affine a quello del codice di Eco ovvero la generazione di strutture simboliche che sembrano emergere da una mente, quando invece nascono dall’interazione di regole e probabilità e dall'apprendimento di profonde strutture correlative. Questa capacità di produrre coerenza a partire dall’indeterminato rinnova il gesto combinatorio del pensiero umano, traducendolo in una sintassi artificiale che simula, con disarmante efficacia, l’intelligenza insita nel linguaggio.

Il frammento di Eco custodisce una verità più ampia, poiché la conoscenza, per quanto sofisticata, è sempre un esercizio di permutazione. Ogni forma di sapere, ogni costruzione teorica, è un tentativo di articolare il caos in un ordine temporaneo e la temporalità è radicata nelle categorie del pensiero Occidentale. In quelle righe scritte in BASIC, dal retrogusto nostalgico anni Ottanta, vive l’idea che il linguaggio, in tutte le sue forme, sia un motore di senso capace di creare universi simbolici. E in quel gesto antico e preciso, che ripete la combinazione di quattro lettere, si avverte la nostalgia di un mondo in cui calcolare significava comprendere.


P.S. I frammenti in Python sono stati rielaborati tramite un LLM (GPT-5), il che – da una specifica prospettiva interpretativa – aumenta lo spessore semiotico del frammento BASIC regalatoci da Eco negli anni Ottanta.


Referenze

Eco, Umberto (1988). Il pendolo di Foucault. Milano, Bompiani. ISBN 978-88-452-1923-0.

Valle, Andrea (2020). On a fragment of BASIC code in Foucault’s Pendulum by Umberto Eco. In Languagescapes. Essays on Literature, Language, and Culture in Honour of Umberto Eco, Aracne Editrice, Roma. ISBN 978-88-255-3269-5.



Post popolari in questo blog

La radionostalgia. Mi racconto attraverso la radio

Noosemia: «effetto wow» e l’attribuzione di una mente alle intelligenze artificiali generative

La fine della conoscenza come noi la conosciamo

Gli LLM sono solo dei motori statistici ?