Disclaimer: ho scelto questa citazione come incipit di questo post perché ne ricalca lo spirito. Se condividete l'opinione di Joseph Conrad - che tra l'altro era uno scrittore, quindi non ho capito come mai si dovesse interessare di filosofia analitica - passate oltre.
Di recente ho conosciuto una persona cui hanno consegnato un codice fiscale sbagliato; diciamo che si chiami “Federico” ma il suo codice è stato generato come se si chiamasse “Francesco”. In che senso, chiedo, consideriamo “sbagliato” quel codice?
Tra i rudimenti dell’informatica si impara che esistono due policy radicalmente diverse per associare ad un record una “chiave primaria”, vale a dire un codice che lo identifichi univocamente. La prima è a me nota come “codice parlante” e consiste nell’associare a ciascuno dei valori nei singoli campi segmenti di caratteri alfanumerici; l’esempio è proprio il codice fiscale. L’assunto dell’Agenzia delle Entrate è che i campi “nome”, “cognome”, “data di nascita”, “comune di nascita” identifichino univocamente una persona, vale a dire che non esistono due persone dotate di stesso nome, cognome e nate lo stesso giorno nello stesso comune. A ciascun valore dei campi si associano allora precise sequenze di caratteri (le regole per la codifica le trovate all’indirizzo https://it.wikipedia.org/wiki/Codice_fiscale ; interessante che l’algoritmo è stabilito per Decreto del Ministero delle Finanze). Il risultato è che il codice dipende dai valori dei campi del record. L’alternativa consiste nell'associare al record una sequenza indipendente da quei valori, tipicamente un numero progressivo.
Nel primo caso, dalla conoscenza del codice e delle regole utilizzate per comporlo possiamo trarre delle informazioni sul record, ad esempio, conoscendo il vostro codice fiscale posso indovinare come vi chiamate, quando e dove siete nati (più difficile il cognome, perché a cognomi diversi può corrispondere la stessa terna di caratteri alfabetici). Nel secondo invece la conoscenza del codice non permette di dedurre alcunché. In conclusione, posso affermare che si, il codice fiscale è sbagliato o, meglio, che a quella persona è stato attribuito il codice di un’altra persona (peraltro inesistente! Ci tornerò in un futuro post …).
Se, al contrario, il codice fosse non-parlante, purché univoco, il codice non potrebbe mai essere sbagliato. Ad esempio, il numero di matricola che l’azienda per cui lavoro mi ha attribuito non può essere sbagliato perché nulla in esso è associato alla mia persona. Per questa ragione i puristi dell’informatica privilegiano i codici non parlanti. Il tipico problema posto da un codice parlante come quello fiscale è: se il possessore cambia nome, devo cambiare anche il codice? Il problema, nell’altro caso, evidentemente non si pone.
Curiosamente dietro questa distinzione si nasconde un problema molto dibattuto della filosofia analitica.
CESARE CONQUISTÒ LA GALLIA?
La proposizione «Cesare conquistò la Gallia»: è vera?
Probabilmente molti di voi risponderebbe in maniera affermativa. Un logico, al contrario, prima di rispondere chiederebbe a chi si riferisce il nome proprio “Cesare” (e Gallia, ma fissiamo l’attenzione sul primo). Se rispondessimo che Cesare è colui che conquistò la Gallia, la verità della proposizione precedente è tautologica. Se diciamo che Cesare è il membro della Gens Giulia nato il 13 luglio del 101 a.C. nella suburra, una ricerca storiografica potrà dirci se questa persona coincide con quella che conquistò la Gallia, quindi rispondere a quella domanda. Per inciso, potremmo definire Cesare come “il generale romano che sconfisse Pompeo nella guerra civile” e chiedersi se coincide con quello che conquistò la Gallia. Abbiamo insomma tre definizioni, a ciascuna delle quali possiamo associare un nome, ad esempio:
Cesare.0 = “il membro della gens Giulia nato nella suburra il 13 luglio 101 a.C.”
Cesare.1 = “il comandante romano che conquistò la Gallia”
Cesare.2 = “il comandante romano che sconfisse Pompeo nella guerra civile”.
Se una ricerca storiografica conferma che quelle tre persone sono la stessa, possiamo identificarla con l’unico nome di “Cesare”, lasciando cadere l’indice.
È stato il logico tedesco Gottlob Frege in un arci-citato articolo il primo a stabilire che il riferimento di un nome è dato da una descrizione che lo rappresenta, oggi nota come descrizione definita. Nella logica tradizionale vale un principio di sostituzione, vale a dire che se una proposizione è vera per un certo nome proprio, tale risulta anche per qualsiasi descrizione definita che a quel nome è associata. Ad esempio, se la proposizione «Cesare era calvo» è vera, allora tale risulta anche sostituendo a “Cesare” una qualsiasi delle tre descrizioni definite sopra date. A questo principio è stato trovato, tuttavia, un controesempio; mentre la proposizione:
«è necessario che Cesare.0 coincida con Cesare.0» (in simboli «è necessario che Cesare.0 = Cesare.0»)
sembra essere tautologicamente vera, la proposizione
«è necessario che Cesare.0 coincida con Cesare.1» (in simboli «è necessario che Cesare.0 = Cesare.1»)
ottenuta dalla precedente applicando il sopra menzionato principio di sostituzione, non sembra essere vera neppure quando Cesare.0 coincide con Cesare.1, questo perché quel “è necessario”, sottintende che la verità della proposizione deve fondarsi su motivazioni logiche, non storiche. I filosofi sono soliti dire che le prime sono verità vere in ogni mondo possibile, mentre le seconde lo sono solo in alcuni di essi. Ad esempio, possiamo immaginare un mondo in cui Cesare non era calvo, ma non possiamo immaginare un mondo in cui Cesare è contemporaneamente diverso da Cesare.
Per uscire da questo impasse, Saul Kripke ha proposto una teoria alternativa. Secondo il filosofo americano, il riferimento non è legato alle definizioni descrittive, bensì tra nome e entità esiste un riferimento diretto. In altre parole, i nomi propri sono etichette appiccicate alle entità che le rappresentano, proprio come il nome di battesimo imposto dal sacerdote al battezzando nell’atto del primo sacramento. In questa maniera, se ad una entità associamo più nomi propri, ad esempio nome.1 e nome.2, è evidente che l’identità
nome.1 =nome.2
è necessaria, vale a dire vera in tutti i mondi possibili (tra i quali dobbiamo ora escludere quelli nei quali ad una stessa entità possano essere attribuiti nomi diversi; torneremo anche su questo); il nome è indissolubilmente legato al soggetto insomma).
CHI È ANGELERI GIUSEPPE?
In un suo monologo, Giorgio Gaber immagina un maestro elementare che si reca per la prima volta in una classe di una scuola primaria. Comincia l’appello e il maestro pronuncia il nome di “Angeleri Giuseppe”, al che tutti i bambini rispondono “presente”. Il maestro allora le prova tutte per cercare chi porti quel nome, ma non c’è nulla da fare: i bambini continuano a rispondere sostenendo ciascuno di essere Angeleri Giuseppe. Se il maestro fosse stato in possesso di una definizione descrittiva di Angeleri Giuseppe, avrebbe potuto rispondersi da solo (e questo spiega, tra gli altri, perché a Frege piacessero tanto). In mancanza di questa, il monologo termina con l’insegnante che, preso dall’esasperazione, sostiene di essere lui Angeleri Giuseppe (sinceramente non mi è del tutto chiaro cosa volesse dire il cantante milanese). Un logico non si sarebbe sconvolto tanto, avrebbe semplicemente ribattezzato i bambini Angeleri Giuseppe.0, Angeleri Giuseppe.1, ecc. per poi iniziare la lezione. Tornando alla domanda iniziale, il monologo suggerisce tuttavia che rimane aperta una questione: se rinunciamo alle definizioni descrittive, come possiamo identificare chi sia Cesare?
Dal mio punto di vista, la questione è più di ordine pratico che filosofico; voglio dire che lo spirito del riferimento diretto è quello che ad ogni entità sia assegnato un determinato nome proprio, che tale rimane in tutti i mondi possibili, ma come si possa risalire da quel nome alla persona cui è stato assegnato è un problema di ordine pratico, comunque complesso, ma ribadisco di ordine pratico.
È agghiacciante, almeno per me, pensare che la soluzione più vicina allo spirito del riferimento diretto sia stata quella adottata dai Nazisti a Auschwitz – Birkenau, consistente, come è noto, nel tatuare direttamente il numero assegnato a ciascun deportato direttamente sul braccio. Sembra peraltro che questa soluzione fu adottata per ragioni di ordine pratico: come negli altri campi, dapprima il numero era riportato sul vestiario in dotazione al prigioniero, ma ad Auschwitz la quantità di morti e di casacche perse o scambiate era tale che i carcerieri non riuscivano più ad identificare i morti.
Si potrebbe ipotizzare che l’impronta digitale o altri sistemi di riconoscimento biometrico potrebbero sostituire i nomi propri; ad esempio, il nome di una persona potrebbe essere il codice del suo DNA. Io penso, tuttavia, che questa sia una forma di descrizione definita non esente dalle difficoltà che questo approccio comporta, perché ritengo che in un futuro sarà sempre possibile modificare qualsiasi indicatore biometrico o lo stesso DNA, inficiando l’efficacia di quella modalità di attribuzione. Pensate al vostro nome: non è dotato di significato, fatto salvo un aspetto che, fino a poco tempo fa, sarebbe considerato immutabile: il genere. Oggigiorno le persone possono scegliere a quale genere appartenere ed ecco che il loro nome può risultare inappropriato.
NAMING E CODIFICHE
E finalmente possiamo tornare alla codifica. Dal mio punto di vista, attribuire un codice è del tutto equivalente ad assegnare un nome proprio; sostengo – senza troppe pretese di originalità – che il nome che mi è stato assegnato è il codice, la chiave primaria, con cui mi volevano identificare i miei genitori; in effetti, non mi è noto un caso in cui a due figli sia stato assegnato lo stesso nome.
In aggiunta, sostengo che la codifica parlante sia analoga alla definizione descrittiva, poiché, di fatto, si fonda sul “significato”, inteso come i valori specifici degli attributi del record e soffre delle stesse difficoltà: se domani si scoprisse che Aristotele non nacque a Stagira, interi libri di filosofia andrebbero riscritti (a meno che, di nuovo, non si rinunci ad identificare lo “Stagirita” come “famoso filosofo nato a Stagira” e ci si limitasse a considerarlo un nome proprio come "Mario").
Al contrario, la codifica non-parlante riprende il concetto di riferimento diretto e i vantaggi che questa offre sotto il profilo informatico rispecchiano le idee di Kripke in merito al carattere necessario dei nomi: una volta attribuito un codice ad un record, tale rimarrà qualsiasi cosa accada ai suoi attributi, vale a dire in tutti i mondi possibili del Database.
NOMI DI CELLE NEL FOGLIO DI CALCOLO
Concludo questa mia disamina con uno scherzo ispirato al foglio di calcolo. Scrivete il un foglio vuoto il valore 1 nella prima cella in a sinistra. I due enunciati:
«la prima cella in alto a sinistra contiene il valore 1»
«la cella di coordinate A1 contiene il valore 1»
sono ora entrambi veri. Tuttavia, se adesso inseriamo una nuova colonna a sinistra della prima e una nuova riga sopra la prima, il valore 1 si sposta in B2 rendendo entrambe le proposizioni false. La posizione, l’indirizzo della cella è evidentemente una descrizione definita inefficace; per questo motivo nessuno di noi porta come nome l’indirizzo della propria abitazione.(a meno che non abitiate in un camper). I programmatori hanno trovato una soluzione a questo problema: alle celle è possibile infatti assegnare un nome alle celle, ad esempio dire che la cella A1 si chiami “Pippo”. L’enunciato
«la cella di nome “Pippo” contiene il valore 1»
È allora vero. E tale rimane anche con l’aggiunta di una riga e una colonna come sopra descritto, poiché la cella si porta dietro il nome, proprio come voi quando cambiate casa.
Da notare che i geometri, sempre intesi come studiosi di geometria, si erano già accorti del problema: quando si riferiscono ai punti del piano, utilizzano espressioni come «il punto P di coordinate (1,1)», consapevoli che le coordinate possono cambiare, mentre il nome del punto deve rimanere lo stesso. A proposito, l’aggiunta di una riga o una colonna equivale ad una traslazione del piano euclideo.
Se consideriamo allora come “mondi possibili” tutti i fogli generati a partire dall’iniziale aggiungendo o eliminando righe o colonne, si potrà affermare che l’enunciato:
«è necessario che la cella A1 contenga il valore 1»
è evidentemente falso, mentre l’enunciato:
«è necessario che la cella di nome “Pippo” contenga il valore 1»
è vera. Almeno fintanto che non cancellate il valore …
Commenti