Tra informatica e informazione:
Le matrioske logiche, vero e falso e semplificazione ...
(Aggiornamento dell'articolo al 24/02/2009)
Innanzitutto dobbiamo chiederci cos’è una matrioska e come questa può
essere presa ad esempio per descrivere alcuni tipi di espressioni
logiche complesse tipiche del mondo dei calcolatori e
dell’informatica. Non possiamo inoltre nemmeno tralasciare di
descrivere brevemente che cos’è una espressione logica e come essa
manipoli un’informazione che nei calcolatori può essere una sequenza
di bit (segnali) che a loro volta possono esprimere numeri, colori
(se si tratta di valori che quantificano la luminosità di singoli
o gruppi di pixel in un monitor) o lettere: vedi codice Ascii.
Il termine matrioska è di solito associato a bamboline sapientemente
intagliate e scolpite nel legno dagli artigiani russi. La
prerogativa di queste bamboline, tutte uguali nell’aspetto ma di
dimensioni diverse, è quella di essere racchiuse una dentro l’altra
partendo da quella interna più piccola a quella esterna più grande.
In informatica vi sono diversi operatori logici espressi con termini
anglosassoni: “not” = negazione,
“or” = oppure,
“xor” = or esclusivo,
“and” = e ed altri che qui tralascio; il comportamento di questi
operatori, si rifà un po’ alla teoria degli insiemi che, per chi non
è datato come me, deve già aver affrontato nelle scuole medie o ai
licei, diversamente, come nel mio caso, affrontato nei corsi
universitari di matematica. Per semplificare al massimo le cose,
supponiamo di applicare questi operatori ad una variabile che possa
assumere solo due possibili valori (binario): “true” = vero e
“false” = falso. E’ intuitivo pensare che la funzione
not (false) è uguale a=
true, e l’inverso: not (true) è
uguale a= false. Meno intuitive sono le
funzioni [(true) or (false)] = true e
[(true) and (false)] = false.
Provate a vedere nelle immagini qui accanto le rispettive tabelle
delle verità associate agli operatori sopra descritti
.
Questi comportamenti elementari descritti con espressioni (software)
eseguibili da un calcolatore, a loro volta possono essere espressi
fisicamente con dei semplici circuiti (hardware: vedi immagini qui
accanto) che sono alla base dei moderni microprocessori, che sono
poi l'anima dei nostri personal computers.
Dobbiamo dire anche che all’interno di questi circuiti logici vi
sono dei transistors sapientemente collegati per determinarne il
comportamento, ma tralascio tutto ciò perché meriterebbe una
lunghissima trattazione non comunque importante ai fini del tema
trattato.
Interessante, e a allo stesso tempo affascinante, è appunto il fatto che
l’uso di questi operatori logici combinati con altre istruzioni in
un linguaggio di programmazione per la creazione di programmi, serve
ad eseguire gli stessi proprio da un computer costituito da
innumerevoli combinazioni di questi operatori fatti sotto forma di
circuiti fisici; è la semplificazione di ciò che presumibilmente
avviene anche in un essere umano che tenta, per quanto sia
possibile, di descrivere e spiegare a parole il funzionamento e la
complessità del proprio cervello. L’uomo poi, utilizza parte di
questa complessità per descrivere anche tutto ciò che lo circonda e
per interagire con esso.
Quest’ultimo paragone, da me fatto, serve ad allacciare un po’ il
mondo dell’informatica a quello dell’informazione tradizionale pura,
quale essa conosciamo: tutto ciò che comunica l’essere umano con il
suo prossimo e il diffondersi dell’informazione attraverso i media:
giornali, televisione, internet ecc.
Ritornando agli operatori logici nei linguaggi di programmazione e
nei computers, possiamo dire che essi possono essere anche combinati
in modo complesso a mo’ appunto di matrioska dove quello che è il profilo
della bambolina (il suo confine con l’esterno) è qui rappresentato
da una coppia di parentesi: not {not [not (false)]} = true.
Questo piccolo esempio è facilmente verificabile, ma se immaginiamo
più operatori “not” racchiusi tra parentesi e magari accoppiati
anche con altri operatori come ad esempio “or” e “and”, dobbiamo
affidarci ad un elaboratore per giungere velocemente ad un risultato
che sarà sempre e comunque un risultato logico.
Non è sempre così se pensiamo di inserire questi operatori in una
frase complessa, in un discorso, in un testo di legge od in un
qualunque tipo di comunicazione e conversazione tra esseri umani: in questo caso
operatori di questo tipo possono far assumere diverso significato
alle frasi a secondo del contesto in cui operano, ed inoltre il
risultato di quello che si vuol comunicare, anche con una accurata
analisi di una frase o di un paragrafo o dalla unione di più
paragrafi, non è sempre evidente anche perché forse ahimè non deve
proprio essere evidente o deve essere interpretato (ricordo che
l’interpretazione di una qualsiasi cosa è quasi sempre, di per se
stessa, soggettiva). Mi riferisco non solo a colloqui fra singole
persone, ma anche ai discorsi di quasi la totalità dei politici, a
ciò che si scrive sui giornali e a ciò che si dice in televisione:
vige qui, come altrove, quel “ti dico che non ti dico”
[not (not(....)] e
assistiamo spesso a castelli di parole e a quel “taglia e cuci” che
non fa luce sulle cose e alla chiarezza dei pensieri, a leggi che
formulate anche in questo modo, non legiferano e non servono a nulla
se non alla causa della più bieca anarchia.
E’ evidente che a parole che non dicono nulla segue un nulla o un
poco e malfatto nella pratica. Sarebbe opportuno un po’ di chiarezza
e semplificazione nell’informazione (ma scusate il mio sfogo
!!).
Ricordo che negli esempi di cui sopra, riferendomi ad un
elaboratore, ed è così che funziona, per semplificare, avevo
ipotizzato due possibili valori (binario): “vero” o “falso”; ma per
chi è più addentro in queste cose, sa che due valori si possono
combinare in infiniti modi diversi per descrivere infinite
gradualità: (vero + falso) = mezzo vero, (vero + falso + falso) = un
po’ falso, (blue + giallo) = verde e così via e con
l’elaborazione di innumerevoli combinazioni di questo tipo (magia
!!) possiamo ricostruire l’arcobaleno !! E via ... con quasi tutto il
resto ! :-)
Ottimo programma per fare esercizi sui circuiti logici