Cerca nel blog

Choose your language:

Visualizzazione post con etichetta tecnofilosofia. Mostra tutti i post
Visualizzazione post con etichetta tecnofilosofia. Mostra tutti i post

sabato 10 marzo 2018

Tecnologia filosofica: logica ed elettronica











In questo testo intendo parlare dei circuiti logici e della logica booleana per arrivare a spiegare come funziona un relè di Claude Shannon. La logica dei filosofi è nel computer, il computer funziona con un meccanismo che segue le dinamiche della logica. Questo significa che in un certo settore tecnologico come l'informatica le teorie della filosofia sono state tradotte in tecnica. Per questo si può parlare effettivamente di tecnologia filosofica, anche se non è il filosofo che ha costruito quella tecnologia. Si dice tecnologia filosofica perché è stata pensata a partire da modelli filosofici.

George Boole è un importante matematico, il matematico al quale viene riconosciuta la definizione della logica come matematica. Boole, tuttavia, non era solo qualcuno che si interessava di matematica, ma leggeva anche i filosofi, in particolare Aristotele e la sua logica. La sua opera più importante porta come titolo: An investigation of the laws of thougth on which are founded the mathematical theories of logic and probabilities. L'opera tratta delle leggi della mente e del pensiero, ponendosi come fine quello di illustrare la natura matematica della logica. Il linguaggio, secondo Boole, è uno strumento di cui l'uomo si serve. Il linguaggio è fatto di simboli e i simboli sono arbitrari. Boole arriva a comprendere quel dirà più avanti de Saussure, ossia che il segno è arbitrario. Questo significa che non c'è una relazione necessaria tra la parola (significante) e l'immagine mentale (significato). In pratica potremmo usare la parola "albero" per riferirla a qualcos'altro, proprio perché non c'è un legame necessario tra la parola "albero" e l'immagine mentale che noi gli facciamo corrispondere. Tuttavia, afferma Boole, il segno ha un'interpretazione fissata. Il segno è l'unità minima del linguaggio e di segni, secondo Boole, ne esistono di tre tipi:

1) simboli con lettere: x, y, z, ecc.

2) segni di operazione: +, -, ·, ecc.

3) segno dell'identità: =

Boole usa il primo tipo di simboli per indicare i nomi o gli aggettivi. I nomi possono essere comuni o propri, non ha importanza. In questo modo posso scrivere x = volpe oppure y = rosso. Posso anche combinare i simboli come in un prodotto e scrivere xy = volpe rossa. Posso aggiungere altri aggettivi come z = astuta e scrivere xyz = volpe rossa astuta. Boole osserva questo: se x = y, allora xy = yx, in quanto xy = xx e xx = yx. Questo ovviamente solo nel caso in cui i termini x e y abbiano lo stesso significato e dunque siano intercambiabili. Funziona come nella moltiplicazione, laddove 4 · 2 = 2 · 4.

Il secondo tipo di simboli corrisponde agli operatori dell'algebra booleana: and, or, not.

1) L'operatore And (e) è espresso da Boole attraverso il simbolo della moltiplicazione (·). Se intendo scrivere "i leoni e le giraffe", scriverò una formula di questo tipo: x · y.

2) L'operatore Or (o) è espresso da Boole attraverso il simbolo dell'addizione (+). Se intendo scrivere "o piove o nevica", scriverò una formula di questo tipo: x + y.

3) L'operatore Not (non) è espresso da Boole attraverso il simbolo della sottrazione. Se intendo scrivere "tutti gli uccelli che non sono gabbiani", scriverò una formula di questo tipo: y(1 - x).

Tutti questi operatori corrispondono ai connettivi logici ∧, v, ⌐.   Corrispettivamente: x · y = x ∧ y,   x + y = x v y.

La vera scoperta di Boole nell'ambito della logica e della matematica consiste nella rappresentazione del vero e del falso attraverso due numeri: 1 e 0. Vero = 1 e falso = 0. A partire da questo Boole deriva la più importante equazione della sua algebra: il principio di non contraddizione. Il principio di non contraddizione è stato ripreso apertamente da Boole da Aristotele. Boole trova che il principio di non contraddizione segue questa formula: x = x2  oppure x - x2  =  0. Questa formula può essere espressa in quest'altro modo: x(1 - x) = 0. Se intendiamo con la formula "1 - x" un enunciato come "tutti gli animali della savana meno i leoni" e per x "leoni", moltiplicando il primo enunciato per la proprietà x si genera una contraddizione, per questo è falso. Infatti tutti gli animali della savana meno i leoni non potranno mai avere la proprietà di essere dei leoni.

Con i numeri 1 e 0, applicati agli operatori (and, or, not), Boole scopre gli elementi per la costruzione delle tavole della verità, le quali verranno successivamente definite dal filosofo Wittgenstein.

La tavola della verità dell'operatore and si ricava in questo modo:

x · y

se x = 0 e y = 0, allora 0 · 0 = 0

se x = 1 e y = 0, allora 1 · 0 = 0

se x = 0 e y = 1, allora 0 · 1 = 0

se x = 1 e y = 1, allora 1 · 1 = 1

La tavola della verità dell'operatore or si ricava in questo modo:

x + y

se x = 0 e y = 0, allora 0 + 0 = 0

se x = 1 e y = 0, allora 1 + 0 = 1

se x = 0 e y = 1, allora 0 + 1 = 1

se x = 1 e y = 1, allora 1 + 1 = 1 (Si guardi più avanti l'esistenza del minimo e del massimo)


La tavola di verità dell'operatore not si ricava in questo modo:

1 - x

se x = 0, allora 1 - 0 = 1

se x = 1, allora 1 - 1 = 0

Oltre a questo nell'algebra di Boole esistono alcune proprietà fondamentali. Le principali sono le seguenti:

Proprietà commutativa: x + y = y + x;  x - y = y - x

Proprietà associativa: x + (y + z) = (x + y) + z; x - (y - z) = (x - y) - z

Proprietà distributiva: x - (y + z) = (x - y) + (x - z); x + (y - z) = (x + y) - (x + z)

Esistenza di un minimo e di un massimo: x - 0 = 0; x + 1 = 1

A questo punto abbiamo tutti gli elementi per incominciare a studiare come funzionano i circuiti booleani. I circuiti logici sono basati sugli operatori dell'algebra di Boole (and, or, not) e altri (xor, nand, nor). Vediamoli uno alla volta con le porte e le uscite.

And ha due ingressi e una sola uscita.













Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 0

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 1

Or ha due ingressi e una sola uscita.
















Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 1



Not ha un solo ingresso e una sola uscita.














Se ingresso = 1, allora l'uscita sarà = 0

Se ingresso = 0, allora l'uscita sarà = 1



Agli operatori di Boole si aggiungono altri tre elementi:


Nand è composto da Not e And.













Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 0

Nor è ottenuto connettendo Or e Not.













Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 0

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 0


xOr















Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 0

Tutti questi sono circuiti logici che corrispondo a tabelle della verità, dello stesso tipo di quelle che si studiano in filosofia. Giocando con i termini (and, or, not) si possono costruire circuiti sempre più complessi e divertirsi a edificare circuiti che rappresentano tavole della verità. Un modo per farlo è usare il programma Logisism. Con questo programma si può molto facilmente costruire circuiti logici e sperimentarne di nuovi. Se gli operatori della logica booleana sono and, or e not, dal punto di vista della logica classica, qui manca il condizionale (⊃). Tuttavia è possibile ricavarlo combinando i simboli di Boole in questo modo: mettendo tre not connessi a due and, aggiungendo un and e collegando tutti gli and con un or.


















Se ingresso A = 0 e ingresso B = 0, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 0, allora l'uscita sarà = 0

Se ingresso A = 0 e ingresso B = 1, allora l'uscita sarà = 1

Se ingresso A = 1 e ingresso B = 1, allora l'uscita sarà = 1

Questa è la tavola della verità del condizionale, infatti è vera sempre quando o l'antecedente è falso o quando sia la conclusione che l'antecedente sono veri, mentre è falsa quando l'antecedente è vero e la conclusione falsa. Esattamente come nella logica che si usa in filosofia.

È possibile scrivere circuiti ancora più complessi come questo:



















A questo punto si può passare al relay (relé) di Claude Shannon. Shannon ha scritto un importante articolo sul tema dal titolo: A symbolic analisis of relay and switching circuits. Il testo tratta della logica booleana e dell'applicazione di questa ai circuiti elettrici. Shannon dichiara di prendere in considerazione solamente i contatti e gli interruttori dei relè. Dati due terminali (a, b) il circuito può essere aperto o chiuso. Qui tornano i numeri dell'algebra booleana: 1 e 0. Se il circuito è chiuso, prendendo X come termine che associa i terminali a e b, X (ab) = 0. Se il circuito è aperto, allora  X (ab) = 1. La relazione dei terminali a e b in X è espressa da Shannon con questa figura:













X (ab) è definito da Shannon come hindrance (resistenza o ostacolo). È possibile addizionare due terminali di circuiti, in questo caso si ottiene: X(ab) + X(cd). Questo sistema funziona esattamente come con la somma nel calcolo booleano o con la tavola della verità della disgiunzione in Wittgenstein.

X(ab) + X(cd)

se X(ab) = 0 e X(cd) = 0, allora 0 + 0 = 0

se X(ab) = 1 e X(cd) = 0, allora 1 + 0 = 1

se X(ab) = 0 e X(cd) = 1, allora 0 + 1 = 1

se X(ab) = 1 e X(cd) = 1, allora 1 + 1 = 1

Shannon esprime questa relazione con questa figura:












Inoltre è possibile moltiplicare i terminali in questo modo: X(ab) · X(cd). Anche in questo caso il meccanismo della moltiplicazione funziona come con il calcolo booleano o con la tavola della verità della congiunzione di Wittgenstein.

X(ab) · X(cd)

se X(ab) = 0 e X(cd) = 0, allora 0 · 0 = 0

se X(ab) = 1 e X(cd) = 0, allora 1 · 0 = 0

se X(ab) = 0 e X(cd) = 1, allora 0 · 1 = 0

se X(ab) = 1 e X(cd) = 1, allora 1 · 1 = 1

I circuiti nel caso della moltiplicazione sono connessi in parallelo, come mostra la figura:








Claude Shannon considera tutti i teoremi della logica booleana (commutativo, associativo, ecc.), ma sono cose che ho già spiegato. Rivediamo per il momento il significato dei primi simboli introdotti:

Terminali: a, b, c, d, ecc.

Circuiti: X, Y, Z, ecc.

Circuito aperto = 1

Circuito chiuso = 0

X(ab) + X(cd) = serie connessione circuiti X(ab) e X(cd).

X(ab) · X(cd) = parallelo connessione circuiti X(ab) e X(cd).

"="  = circuito aperto e chiuso simultaneamente.

X' = il circuito aperto quando X è chiuso.

A questo punto Claude Shannon passa all'analisi della legge di De Morgan. Per chi ha studiato filosofia probabilmente sarà abituato a vedere questa legge espressa in questi due modi:

1) ⌐ (α ∧ β) ↔ (⌐ α  v ⌐ β)

2) (⌐ α ∧ ⌐ β) ↔  ⌐ (α  v β)

Shannon segue la linea della logica booleana e perciò scrive la legge di De Morgan in questi due modi:

1) (X · Y · Z ·...)' = (X' + Y' + Z' +...)

2) (X' · Y' · Z' ·...) = (X + Y + Z +...)'

Shannon incomincia un'analisi delle funzioni usando la serie di Taylor fino a reimpostare la legge di De Morgan in termini di funzioni. A questo punto si danno queste due espressioni:

1) f(X · Y · Z ·...)' = f(X' + Y' + Z' +...)

2) f(X' · Y' · Z' ·...) = f(X + Y + Z +...)'

Prendendo una funzione qualsiasi, è possibile esprimere il negativo di una qualsiasi funzione. È sufficiente sostituire i termini negativi ('), le addizioni per le moltiplicazioni e le moltiplicazioni per le addizioni. Un esempio suo: X + Y · (Z + WX') diventa X' [Y' + (Z' (W' + X))]. 

Shannon distingue le variabili dipendenti (es. x, y, z, ecc.) da quelle indipendenti (es. A, B, C, ecc.), nelle variabili dipendenti inserisce i relè. I principi che ho presentato precedentemente Shannon li applica a circuiti più complessi come il seguente:



















È facile qui riconoscere tra i terminali operazioni di somma e moltiplicazione. Questo circuito è ottenuto a partire dalle seguenti equazioni:

W = A + B + (C · W)

X = A + B + (W · X)

Y = A + (C · Y)

 Z = (E · Z) + F

Ci sono altri tipi di circuiti come il circuito selettivo. Shannon studia l'equazione di questi circuiti usando la legge di De Morgan. Un esempio suo è costruito a partire da questa equazione:

U = wxyz + w' x' yz + w' xy' z + w' xyz' + wx' y' z + wx' yz' + wxy' z'

x' rispetto ad x è il circuito che ha la seguente caratteristica, se x = 0, allora x' = 1, mentre se x = 1, allora x' = 0. La stessa cosa vale per gli altri (y e y', w e w', ecc.). Il circuito corrispondente è il seguente:


















Questo circuito, utilizzando la funzione simmetrica, può essere rappresentato da questa formula:

U = S1,2,3(w, x, y, z)

Shannon definisce la funzione simmetrica come un funzione dove, date le variabili X1, X2, X3,...Xn,  ogni scambio delle variabili lascia immutata la funzione. L'equazione con la funzione simmetrica dà origine al seguente circuito:










Un circuito deve essere serie-parallelo perché segua le regole della logica, in particolare dell'algebra booleana, altrimenti non può essere analizzato in questo modo. Tuttavia, quando ci si trova di fronte a circuiti che non sono serie-paralleli, è possibile trasformarli in serie-paralleli. Un esempio di circuito non serie-parallelo è il seguente:







La parte più interessante di tutto questo è che questo tipo di circuiti sono parte fondamentale del computer e giocano un ruolo molto importante nel suo funzionamento. Prendendo consapevolezza del fatto che questi circuiti seguono le leggi della logica, si comprende in che modo la filosofia o la logica dei filosofi sia attivamente presente all'interno del computer. Questo, in ogni caso, è solo un aspetto dell'utilizzo del codice binario e degli operatori logici della logica filosofica. Questi meccanismi in informatica sono usanti anche in altri ambiti come la programmazione software.