Context engineering
L’algebra booleana è un sistema logico basato su soli due valori: Vero (1) e Falso (0). È alla base di tutto ciò che fa funzionare il mondo digitale, dai circuiti elettrici ai programmi dei computer.
Le variabili booleane possono assumere solo due valori: 0 (Falso) o 1 (Vero). Immagina un interruttore acceso o spento: quello è il concetto base della logica booleana.
Le tabelle di verità sono strumenti visuali che mostrano come funzionano queste operazioni. Eccone alcune di base:
| A | B | A AND B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 0 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
| A | B | A OR B |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 1 |
| A | NOT A |
|---|---|
| 0 | 1 |
| 1 | 0 |
Immagina un semaforo con tre segnali:
Il personaggio può attraversare se:
Espressione booleana: CanPass = G OR (Y AND NOT C)
| G | Y | C | Y AND NOT C | CanPass |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 0 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 0 | 1 |
Hai una collezione di oggetti con queste caratteristiche:
Se vuoi trovare gli oggetti che sono rossi E tondi, usi l’espressione R AND T.
Se vuoi quelli che sono rossi O tondi ma leggeri, allora: (R OR T) AND S.
Con cartoncini o disegni, rappresenta le porte logiche:
Prova a costruire il circuito che attiva l’uscita solo se A = 1 e B = 0, cioè A AND NOT B.
F = NOT(A AND (B OR C))| A | B | C | B OR C | A AND (B OR C) | F = NOT(...) |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 | 0 | 1 |
| 0 | 1 | 0 | 1 | 0 | 1 |
| 0 | 1 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 | 1 |
| 1 | 0 | 1 | 1 | 1 | 0 |
| 1 | 1 | 0 | 1 | 1 | 0 |
| 1 | 1 | 1 | 1 | 1 | 0 |
Spiegazione: Se A è falso, F è vero. Altrimenti, F dipende da B e C secondo le regole di De Morgan.
F = (A AND B) OR (A AND NOT B)Soluzione:
Fattorizziamo A: F = A AND (B OR NOT B)
Sapendo che B OR NOT B = 1, otteniamo F = A AND 1 = A.
Quindi, F = A.
L’operazione XOR (Exclusive OR) è vera solo quando A e B sono diversi.
Si può esprimere così:
A XOR B = (A AND NOT B) OR (NOT A AND B)
| A | B | A AND NOT B | NOT A AND B | XOR |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 0 | 0 |
NOT (A AND B)?NOT (A AND B) = NOT A OR NOT B.(A AND B) OR (A AND NOT B).A.Complimenti, hai imparato i fondamenti dell’algebra booleana! Ora puoi riconoscere come i computer prendono decisioni logiche passo dopo passo.
Ti sei mai chiesto come faccia un computer, che in fondo è solo un insieme di circuiti elettrici, a "decidere" se farti passare di livello in un videogioco o se la password che hai inserito è corretta? La risposta non sta in un'intelligenza misteriosa, ma in un sistema logico semplicissimo chiamato Algebra Booleana.
Prende il nome da George Boole, un matematico dell'Ottocento che intuì come il pensiero umano potesse essere ridotto a formule matematiche basate su due soli stati: Vero o Falso.
Nel mondo digitale, tutto si riduce a un interruttore:
1 (Vero): L'interruttore è acceso, la corrente passa.
0 (Falso): L'interruttore è spento, la corrente è bloccata.
Combinando miliardi di questi "Sì" e "No", i computer riescono a compiere operazioni incredibilmente complesse.
Per manipolare questi 0 e 1, usiamo delle "porte logiche". Immaginale come dei caselli autostradali che lasciano passare la macchina solo se certe condizioni sono rispettate.
AND (E): È il vigile severo. Ti fa passare solo se tutte le condizioni sono vere.
Esempio: Esco di casa se (Ho le chiavi) AND (Ho il portafoglio).
OR (O): È il vigile permissivo. Ti fa passare se almeno una condizione è vera.
Esempio: Guardo un film se (È in TV) OR (Ce l'ho su Netflix).
NOT (NON): È il bastian contrario. Inverte tutto: se riceve Vero, restituisce Falso.
Per non confondersi, i programmatori usano le Tabelle di Verità, piccoli schemi che mostrano il risultato di ogni combinazione:
| A | B | A AND B | A OR B |
| 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 |
| 1 | 0 | 0 | 1 |
| 1 | 1 | 1 | 1 |
Facciamo un esempio pratico. Immagina un personaggio di un videogioco che deve attraversare la strada. Il sistema deve decidere se può passare ($CanPass$).
Le variabili sono:
G: Il semaforo è Verde.
Y: Il semaforo è Giallo.
C: C’è una macchina in arrivo.
La regola logica è: "Puoi passare se il semaforo è verde, OPPURE se è giallo MA non sta arrivando nessuno."
In algebra booleana si scrive:
A volte le espressioni logiche diventano lunghissime. Grazie a proprietà come le Leggi di De Morgan, possiamo accorciare i "pensieri" del computer per renderlo più veloce.
Ad esempio, dire: "Non è vero che (fuori piove E c'è vento)" equivale a dire: "Fuori non piove O fuori non c'è vento". Sembra un gioco di parole, ma per un processore significa risparmiare migliaia di calcoli al secondo!
Ti senti pronto per programmare un supercomputer? Rispondi a queste tre domande:
Vero AND Falso fa...? (Suggerimento: il "vigile severo" cosa direbbe?)
Se una porta NOT riceve un segnale Vero, cosa esce dall'altra parte?
Vero OR Falso restituisce...?
(Risposte: 1. Falso; 2. Falso; 3. Vero)
L'operazione più curiosa è l'XOR (OR Esclusivo). È quella che usi quando al ristorante ti dicono: "Puoi avere il dolce O la frutta (ma non entrambi!)". In questo caso, il risultato è vero solo se le due condizioni sono diverse.
Ora che conosci la lingua segreta dei computer, guarderai il tuo smartphone con occhi diversi: non è magia, è solo una danza elegantissima di 0 e 1 regolata da una logica ferrea.
Dalla logica astratta alla realtà fisica
Certamente! Passare dalla logica astratta (gli 0 e gli 1) alla realtà fisica è il momento in cui avviene la vera "magia" dell'ingegneria.
Tutto si basa su un componente minuscolo chiamato Transistor, in particolare la tecnologia più diffusa oggi: il MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor).
Immagina il transistor come un rubinetto elettronico. Ha tre terminali:
Source (Sorgente): da dove entrano gli elettroni.
Drain (Pozzetto): dove escono gli elettroni.
Gate (Porta): il comando che apre o chiude il rubinetto.
In un chip, usiamo due tipi di transistor che lavorano in coppia (tecnologia CMOS):
n-MOS: si "accende" (fa passare corrente) quando riceve un segnale alto (1).
p-MOS: si "accende" quando riceve un segnale basso (0).
I progettisti combinano questi transistor per forzare la corrente a seguire percorsi precisi. Ecco come nascono le tre porte fondamentali:
È la più semplice. Si usa un p-MOS sopra e un n-MOS sotto.
Se dai 1 in ingresso, il transistor sotto si apre e collega l'uscita a "terra" (0 Volt). L'uscita diventa 0.
Se dai 0 in ingresso, si attiva il transistor sopra che collega l'uscita all'alimentazione. L'uscita diventa 1.
Curiosamente, per i computer è più facile costruire porte "negate" (NAND) che porte AND.
In una NAND, i transistor sono messi in serie verso terra. La corrente viene bloccata (uscita 1) a meno che entrambi i transistor non siano attivati da un segnale 1.
Se metti una porta NOT subito dopo una NAND, ottieni una porta AND.
Nella porta NOR, i transistor sono messi in parallelo. Se anche solo uno dei due riceve un segnale 1, l'uscita viene scaricata a terra (diventa 0).
Aggiungendo un NOT alla fine, otteniamo la porta OR.
Questi circuiti non vengono "montati" come i Lego, ma stampati attraverso un processo chiamato fotolitografia:
Si parte da un disco di silicio puro (derivato dalla sabbia).
Si proietta una luce ultravioletta attraverso una "maschera" che contiene il disegno del circuito.
Sui punti colpiti dalla luce, il silicio viene scavato o drogato con sostanze chimiche per creare i canali dei transistor.
Oggi, in un chip grande quanto un'unghia, riusciamo a stampare miliardi di questi transistor. La dimensione di un singolo transistor è nell'ordine dei nanometri (miliardesimi di metro): per darti un'idea, un capello umano è largo circa 80.000 nanometri!
Ogni volta che un transistor cambia stato (da 0 a 1 o viceversa), una piccola quantità di energia viene dissipata sotto forma di calore. Ecco perché il tuo smartphone scotta quando giochi a un titolo graficamente pesante: ci sono miliardi di "rubinetti" che si aprono e chiudono milioni di volte al secondo!
Come il computer impara a contare e a fare le somme
È qui che la logica diventa magia matematica. Per far sommare due numeri a un computer, dobbiamo insegnargli a contare come un interruttore: in binario.
In binario abbiamo solo due cifre: 0 e 1.
0 + 0 = 0
0 + 1 = 1
1 + 1 = 10 (che si legge "uno-zero", ed è il modo binario di scrivere 2).
Per ottenere questo risultato fisicamente, usiamo un circuito chiamato Sommatore (Adder).
Per sommare due singoli bit (A e B), il computer ha bisogno di calcolare due cose: la Somma e il Riporto (quello che noi scriviamo sopra la colonna successiva quando facciamo i conti a mente).
La Somma (S): Si usa una porta XOR. Se A e B sono diversi ($0+1$ o $1+0$), il risultato è $1$. Se sono uguali ($1+1$), il risultato è $0$.
Il Riporto (C - Carry): Si usa una porta AND. Il riporto è $1$ solo se entrambi gli ingressi sono $1$ ($1+1$).
Il problema del mezzo sommatore è che non sa gestire un eventuale riporto proveniente da una colonna precedente. Per fare addizioni vere, mettiamo insieme due mezzi sommatori e una porta OR.
Questo "modulo" ha 3 ingressi: i due numeri (A, B) e il riporto precedente ($C_{in}$). È come un piccolo mattoncino logico che può essere concatenato all'infinito.
Per sommare numeri grandi, ad esempio a 8 bit (come $150 + 100$), il computer mette in fila 8 Sommatori Completi.
Il riporto "scivola" (ripple) da un modulo all'altro, proprio come facciamo noi quando scriviamo: "9 + 1 fa 0 con riporto di 1".
Ecco come il computer vede $1 + 1$:
Il primo bit di A è 1, il primo di B è 1.
Il Sommatore calcola $1+1$: la porta XOR dà 0 (Somma), la porta AND dà 1 (Riporto).
Il risultato finale letto dal computer è 10, ovvero 2.
In una CPU moderna, questi circuiti fanno parte della ALU (Arithmetic Logic Unit). Non ci sono solo sommatori, ma anche circuiti per sottrarre, moltiplicare e confrontare numeri.
La velocità è impressionante: mentre tu hai letto questa frase, i sommatori nel tuo processore hanno eseguito miliardi di queste operazioni, facendo viaggiare i "riporti" attraverso i transistor a una frazione della velocità della luce.
Tutto questo serve a calcolare numeri. Ma come fa un computer a usare questa stessa logica per visualizzare un'immagine colorata o per farti muovere in un mondo 3D?
Per capire come una sequenza di "0" e "1" diventi il tramonto mozzafiato che vedi sullo schermo, dobbiamo immaginare un processo di traduzione in tre fasi: Logica → Numeri → Colore.
Ogni schermo è una griglia fitta di milioni di minuscoli quadratini chiamati pixel. Se guardassi il tuo telefono con un microscopio potente, vedresti che ogni pixel non è un blocco unico, ma è composto da tre "sub-pixel" di colori diversi: Rosso, Verde e Blu (RGB).
Mescolando questi tre colori a diverse intensità, possiamo creare qualsiasi colore visibile all'occhio umano.
Per decidere quanto deve essere luminoso ogni sub-pixel, il computer usa dei numeri. In un sistema standard a 8 bit (il più comune), ogni colore ha a disposizione una sequenza di otto "0" e "1".
Con 8 bit, puoi formare 256 combinazioni diverse (da 00000000 a 11111111).
0 (tutto spento): 00000000
255 (massima luminosità): 11111111
Per ogni singolo pixel, il computer invia una stringa di 24 bit (8 per il Rosso, 8 per il Verde, 8 per il Blu).
Esempio: Per fare il Viola, il computer invierà:
Rosso:
11111111(Massimo)Verde:
00000000(Spento)Blu:
11111111(Massimo)
Qui torniamo all'elettricità. Quegli "0" e "1" arrivano alla scheda video sotto forma di impulsi elettrici. Un componente speciale chiamato DAC (Digital-to-Analog Converter) trasforma il numero binario in una specifica tensione elettrica.
Se il codice è 11111111, il DAC invia il voltaggio massimo al sub-pixel.
Se il codice è 01111111, invia circa metà del voltaggio.
Questa tensione agisce come un comando per i cristalli liquidi (LCD) o per i piccoli LED organici (OLED) del tuo schermo:
Negli LCD: La tensione "ruota" dei cristalli che fanno passare più o meno luce da una lampada posteriore.
Negli OLED: La tensione alimenta direttamente il minuscolo LED che emette luce propria.
Tutto questo avviene per ogni singolo pixel dello schermo, milioni di volte. Se hai uno schermo 4K, ci sono circa 8,3 milioni di pixel. Per darti un'immagine fluida, il computer ricalcola e invia questi milioni di combinazioni di bit almeno 60 volte al secondo (60Hz).
Quando guardi una foto digitale, stai guardando una gigantesca tabella di numeri che dicono a milioni di minuscole lampadine quanto forte brillare.
L'algebra booleana che abbiamo visto prima è ciò che permette alla scheda video di calcolare quali numeri inviare: ad esempio, se in un gioco sposti la visuale a destra, i calcoli logici determinano istantaneamente come devono cambiare i bit di ogni pixel per riflettere il movimento.
Commenti
Posta un commento