Il computer che sto usando in questo momento esiste. Esistono anche anche la parola "computer" e la nozione di computer, che si sostanzia in un certo numero di definizioni. Ma cosa dire dell’esistenza di quella proprietà che è "l’essere computer" la quale, posseduta da un oggetto, lo fa essere un computer (e non, che so, un calzino)? Questa è esattamente la "questione degli universali", sempiterna diatriba filosofica, che un nuovo e bel libretto di Guido Bonino ripercorre nella sua storia millenaria (G. Bonino, Universali / Particolari, Il Mulino 2008, €13).
Sappiamo che coloro i quali sostengono che le proprietà abbiano qualche esistenza si chiamano realisti, coloro i quali invece ritengono che si tratti solo di parole si chiamano nominalisti, e infine chi pensa che esse siano eventi mentali si chiamano concettualisti. Ma sappiamo anche che la discussione sul problema degli universali non è mai approdata ad una conclusione, e nessuna delle tre posizioni ha mai trionfato sulle altre.
Il libro del Mulino sarebbe stato più sfizioso se avesse avuto un’appendice dedicata agli universali e l’informatica. Infatti, l’informatica getta sul problema degli universali una nuova luce e ne ripropone l’attualità. Prendete ad esempio i moderni linguaggi di programmazione. Il C\C++ è stato a lungo un linguaggio nominalista. Le proprietà universali (classi, attributi) esistevano solo nel momento della scrittura del programma: quando poi questo diveniva realtà nella mente della macchina, gli oggetti definiti linguisticamente non ne avevano più traccia, ed programmatore che avesse voluto sapere le proprietà di un oggetto avrebbe dovuto inventare dei trucchi linguistici ad-hoc al momento della scrittura (questi trucchi erano però "error prone", cioè forieri di funeste conseguenze se non usati con estrema attenzione). Poi fu introdotto il "run-time type checking", meccanismo con cui il compilatore stesso provvedeva a inserire negli oggetti una traccia tangibile del proprio lignaggio universale, con ciò realizzando qualcosa che i programmatori platonisti andavano da tempo invocando.
Il linguaggio oggi più usato, cioè Java, fa del realismo uno dei suoi maggiori punti di forza. Esiste la classe "Class", e ogni oggetto può accedere all’istanza di "Class" corrispondente alla classe più specifica a cui appartiene. Questa reificazione permette al programmatore di compiere profonde indagini sulla natura di ciauscun oggetto, dette suggestivamente "introspezioni". Si aprono così spazi di creatività informatica che il C++, anche nella sua versione realistica, frustrava.
Tutte le infrastrutture telematiche in cui si voglia realizzare l’interoperabilità dei dati non possono fare a meno di reificare le classi. E tali reificazioni vengono oggi dette, non a caso, ontologie. Se le reti di computer che parlano tra loro fossero assimilate a società umane, per queste non vi sarebbe alcun dubbio: gli universali esisterebbero davvero e si saprebbe benissimo come e dove trovarli. Nell’informatica, dunque, il realismo ha trionfato. Questo vorrà dire qualcosa?