Appunti di informatica by Carlo

facileTra informatica e informazione:
Le matrioske logiche, vero e falso e semplificazione ...

gif(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.

tabella

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  

png