Codice — schermata in stile terminale, rubrica Linguaggi

Un linguaggio di programmazione ha una sintassi: esistono regole che stabiliscono quali sequenze di simboli possono costituire un'espressione valida e quali invece devono essere rifiutate dal sistema. Ha inoltre una semantica, cioè un insieme di procedure formali attraverso cui alle espressioni sintatticamente corrette viene attribuito un significato, un valore o un comportamento. La distinzione è elementare nella teoria dei linguaggi di programmazione, dove sintassi e semantica costituiscono due livelli distinti della definizione di un linguaggio. Chiamare "linguaggio" un linguaggio di programmazione, quindi, non richiede nessuna particolare indulgenza metaforica: il termine indica propriamente un sistema formale dotato di regole di composizione e di interpretazione.

La prima somiglianza con il linguaggio naturale si trova proprio qui. Anche una lingua possiede una grammatica che stabilisce le condizioni alle quali una sequenza di elementi può essere riconosciuta come frase; anche in una lingua naturale esiste dunque qualcosa che può essere chiamato sintassi. Se una sequenza viola le regole grammaticali, possiamo giudicarla malformata, nello stesso modo in cui un compilatore può rifiutare una sequenza di token che non appartiene alla grammatica del linguaggio. Fermarsi a questo livello, però, significa lasciare fuori precisamente ciò che rende interessante il confronto.

Saussure consente di precisare la prima parte del problema. Il segno linguistico non nasce dall'associazione fra una parola e una cosa: unisce non una cosa e un nome, ma un concetto e un'immagine acustica¹. Il legame fra significante e significato è arbitrario², e soprattutto nessuno dei due termini possiede il proprio valore indipendentemente dal sistema della lingua. Nella lingua, ricorda Saussure, non vi sono che differenze senza termini positivi³: il valore di un elemento dipende dalle differenze che lo separano dagli altri elementi del sistema.

Questo è già sufficiente per impedire una distinzione troppo semplice fra lingua naturale e linguaggio di programmazione. Anche il codice è un sistema nel quale gli elementi acquistano la propria funzione attraverso relazioni definite. Un if non è un'istruzione perché la sequenza di lettere possieda qualche proprietà intrinseca: lo diventa all'interno di una grammatica che stabilisce quali elementi possono comparire dopo di esso, quali strutture può introdurre e quale comportamento gli corrisponde. La stessa cosa vale per un operatore, una variabile o una funzione. Il codice ha dunque qualcosa che, a livello della struttura, può essere descritto in termini saussuriani: elementi distinti che ricevono il loro valore dalle relazioni che li organizzano.

Ma è proprio qui che si apre una differenza che il solo riferimento alla struttura non permette ancora di vedere. Saussure descrive la lingua come un sistema, ma Lacan radicalizza il rapporto fra significante e significato facendo della barra che li separa un elemento strutturale. Ne L'istanza della lettera nell'inconscio o la ragione dopo Freud, Lacan scrive che la linguistica deve occuparsi dei legami propri del significante e della loro funzione nella genesi del significato⁴. Non si tratta più soltanto di stabilire quali elementi appartengano al sistema e quali relazioni li colleghino; bisogna interrogare il modo in cui, dalla loro articolazione, si produce la significazione.

È qui che il linguaggio naturale mostra qualcosa che la semplice nozione di sintassi non riesce a contenere. Una frase può essere perfettamente corretta e tuttavia non consegnare immediatamente il proprio senso. Il significato può dipendere dalla frase successiva, dal contesto, da un'altra parola che viene dopo; può persino accadere che il parlante riconosca soltanto a posteriori ciò che la propria frase aveva fatto emergere.

Non c'è nessuna significazione che si sostenga se non nel rinvio ad un'altra significazione.⁵

E poco dopo, con una precisione che rende difficile ridurre il problema a una generica "ambiguità" del linguaggio: è nella catena del significante che il senso insiste, ma nessuno degli elementi della catena esaurisce, nel momento in cui compare, la significazione di cui è capace⁶.

Il senso non è semplicemente una proprietà posseduta da ciascun elemento prima che questo entri nella frase: è nella catena che insiste, mentre nessun elemento, preso nel momento in cui compare, ne esaurisce la significazione. Da qui la formula che Lacan introduce subito dopo: si impone la nozione di uno scivolamento incessante del significato sotto il significante⁷. La frase non va intesa come una descrizione psicologica dell'incertezza con cui interpretiamo le parole; riguarda la struttura stessa della significazione.

È qui che il confronto con il linguaggio formale diventa più preciso. Anche un programma ha una semantica, e sarebbe un errore confondere la semantica formale con l'assenza di significato. La semantica di un linguaggio di programmazione serve precisamente a stabilire che cosa fanno le espressioni che la sintassi riconosce come valide. Le diverse teorie semantiche — operazionale, denotazionale, assiomatica — propongono modi differenti di definire questo rapporto, ma condividono la necessità di specificare formalmente il significato delle espressioni. In una semantica operazionale, per esempio, il significato di un programma viene descritto attraverso le transizioni che ne determinano l'esecuzione.

La differenza, dunque, non consiste nel fatto che il linguaggio naturale avrebbe un significato mentre il codice ne sarebbe privo. Consiste nel fatto che la semantica del linguaggio formale appartiene alla definizione del sistema, mentre la significazione di una lingua naturale non si lascia esaurire dalla correttezza sintattica dell'enunciato. Nel primo caso, una volta stabilite le regole sintattiche e semantiche, è possibile definire che cosa un'espressione significa per il sistema e quale comportamento le corrisponde. Nel secondo, la frase può essere grammaticalmente completa senza che il senso sia per questo già determinato.

Questo non vuol dire che il comportamento di un programma sia sempre prevedibile per chi lo scrive. Un programma può contenere errori, dipendenze non considerate, interazioni complesse fra componenti; può produrre un risultato che il programmatore non aveva previsto. Ma la sorpresa dell'esito non costituisce ancora un problema di significazione nel senso lacaniano: il programma può comportarsi diversamente da quanto ci si aspettava, non per questo il suo codice ha prodotto, retroattivamente, un significato che il sistema non contemplava. La difficoltà appartiene alla nostra conoscenza del sistema o alle sue condizioni di esecuzione, non a un'eccedenza strutturale del significante rispetto alla semantica che lo governa.

Il confronto permette così di formulare una tesi più precisa. Lingua naturale e linguaggio formale possono entrambi avere sintassi, regole combinatorie e un'organizzazione differenziale; ciò che li distingue, sul piano che interessa la psicoanalisi, è il rapporto fra la correttezza della sequenza e la produzione della significazione. La sintassi di un linguaggio formale stabilisce quali espressioni sono ammissibili e la sua semantica stabilisce che cosa quelle espressioni fanno. Nella lingua naturale, invece, la correttezza della frase lascia aperto il lavoro della significazione: il senso insiste nella catena senza essere interamente contenuto in nessuno dei suoi elementi.

È questo che rende insufficiente chiamare la lingua un semplice codice. Un codice, nel senso formale, serve a stabilire una corrispondenza regolata fra elementi e operazioni; il significante lacaniano appartiene invece a una catena nella quale il senso non è garantito una volta per tutte dal posto che ciascun elemento occupa. La lingua può essere grammaticalmente corretta e, nello stesso momento, dire più di quanto la grammatica permetta di prevedere.

Il codice, per funzionare, non può permettersi di slittare.

Bibliografia: ¹ Ferdinand de Saussure, Corso di linguistica generale, introduzione, traduzione e commento di Tullio De Mauro, Roma-Bari, Laterza, 2005, p. 83.
² Ivi, pp. 84-85.
³ Ivi, p. 145.
⁴ Jacques Lacan, «L'istanza della lettera nell'inconscio o la ragione dopo Freud» (1957), in Scritti, a cura di Giacomo B. Contri, vol. I, Torino, Einaudi, 2002, p. 492.
⁵ Ivi, p. 492.
⁶ Ivi, p. 497.
⁷ Ivi, p. 497.