Come funzionano veramente i computer?

Una panoramica di alto livello su come i numeri binari fanno funzionare i computer per i curiosi non tecnici.

Foto di Federica Galli su Unsplash

Come funzionano i computer è qualcosa che mi ha sempre incuriosito ma non ho mai pensato che avrei avuto le conoscenze di base per capirlo, anche ad alto livello. Quindi fare la ricerca per scrivere questo post sul blog e scoprire che non era così difficile da capire è stato molto gratificante, inoltre, arrivare a capire come funzionano i computer, di nuovo anche ad alto livello, è piuttosto sconvolgente.

Il modo più basilare di pensare ad un computer è come una macchina Input/Output. Questa è un’idea piuttosto basilare: i computer prendono informazioni da fonti esterne (la tastiera, il mouse, i sensori o internet), le memorizzano, le elaborano e restituiscono il risultato (output) di quel processo. Tra l’altro, se ci pensate, nel momento in cui i computer sono collegati attraverso internet c’è un ciclo infinito di input e output, poiché l’output di un computer (diciamo un sito web) diventa l’input di un altro e così via(!!).

Ora, siamo tutti abbastanza abituati e familiari con i modi che ha un computer per ricevere input e stampare qualche output, tutti abbiamo usato un mouse o una tastiera, o anche parlato con un computer e tutti abbiamo letto un articolo su un sito web, ascoltato musica o sfogliato qualche vecchia foto, ecc. Quello con cui non abbiamo familiarità, e che di solito fatichiamo a capire, è come un computer elabora effettivamente le informazioni.

Quindi sì, ad un livello molto fondamentale tutto ciò che un computer capisce sono gli 1 e gli 0, il che significa che ogni singolo input e output viene ad un certo punto tradotto in o da 1 e 0. Ciò che è potente riguardo agli 1 e agli 0 (chiamati anche bit – da BInary digiT) è che ci permette di trasformare qualsiasi informazione in segnali elettrici (ON/OFF). Per favore, prendetevi un momento per pensarci: QUALSIASI COSA vedi, pensi o interagisci con può effettivamente essere tradotta e rappresentata come segnali elettrici (!!!). Rappresentare le informazioni come segnali elettrici è ciò che permette ai computer di elaborare effettivamente quelle informazioni e trasformarle.

Come funziona il sistema di numeri binari? I numeri binari significano che tutti i numeri sono calcolati in base 2. Per esempio, la maggior parte di noi è abituata a pensare ai numeri in base 10. Se pensi a un qualsiasi numero, diciamo 2561, puoi vedere come a seconda della posizione che il numero occupa da destra a sinistra, il numero ha un valore diverso che è un multiplo di dieci. In questo esempio, per esempio, 1 occupa la posizione 1s, 6 occupa la posizione 10s, 5 occupa la posizione 100s e 2 occupa la posizione 1000. In questo modo, (2×1000) + (5×100) + (6×10) + (1×1) = 2561. I numeri binari funzionano esattamente allo stesso modo, ma ogni passo incrementale rappresenta un incremento x2 rispetto al precedente. Ecco un esempio di come rappresentare il numero 12:

Quindi, con 8 bit puoi rappresentare qualsiasi numero tra 0 e 255, e con 32 bit puoi rappresentare qualsiasi numero tra 0 e 4 miliardi. Forse starete pensando: certo, ma che mi dite delle stringhe e della punteggiatura? Bene, ad oggi, seguiamo ancora l’ASCII, American Standard Code for Information Interchange che fondamentalmente mappa qualsiasi carattere o segno di punteggiatura, comprese le lettere maiuscole, ad uno dei numeri a 8 bit. Ed è così che usiamo i numeri per rappresentare le lettere.

Sicuro, ma che dire delle immagini? Beh, in realtà anche un’immagine può essere ridotta a 0 e 1. Come sapete, qualsiasi schermo ha un dato numero di pixel e ogni pixel ha un colore e come sapete, usando i codici di colore RGB o HEX possiamo rappresentare i colori come numeri, il che significa che possiamo sostanzialmente dire a un computer quale colore deve avere ogni pixel. La stessa cosa vale per la musica, i video e qualsiasi altro tipo di informazione che vi venga in mente.

Ma come diavolo facciamo a “calcolare” i segnali elettrici? È qui che entrano in gioco i circuiti elettrici. Ad un livello molto elementare ed eccessivamente semplificato, possiamo usare i circuiti elettrici per comportarci come “macchine logiche”. Possiamo avere circuiti che, dato un input specifico, restituiranno un output a seconda della logica con cui sono stati costruiti (Not, And, Or) ma anche somme, sottrazioni, moltiplicazioni e divisioni. La parte interessante è che usando queste forme molto elementari di rappresentazione ed elaborazione dell’informazione possiamo effettivamente raggiungere la “completezza funzionale” che è un termine usato in Logica per riferirsi ad un insieme di operatori booleani che sono in grado di rappresentare tutte le possibili tabelle di verità, che è un modo elegante che i matematici hanno per dire che il cielo è il limite. Tutti questi calcoli avvengono in un’unità all’interno della CPU chiamata ALU (Arithmetic Logic Unit).

Come probabilmente sapete le CPU – Central Processing Unit – sono il cervello dei computer ed è dove avviene tutto il calcolo. La parte interessante delle CPU è che non hanno memoria, il che significa che non possono ricordare assolutamente nulla. Senza memoria, ogni calcolo sarebbe perso subito dopo averlo eseguito. Approssimativamente, e come forse già sapete, ci sono due tipi di memoria che i nostri computer usano: RAM che sta per Random Access Memory e Persistent Memory. Puoi pensare alla memoria RAM come a un’immensa griglia (matrice) che memorizza numeri a 8 bit. La memoria RAM tiene traccia degli “indirizzi” nella matrice di memoria di qualsiasi numero a 8 bit per ogni volta che la CPU ne ha bisogno. E indovinate un po’? Per eseguire queste operazioni, usiamo la stessa logica di circuito che abbiamo usato prima. Cioè, usiamo la stessa logica per permettere a un dato input di essere immagazzinato in un dato “posto” nella memoria o per accedere a qualsiasi pezzo di informazione immagazzinato in essa.

So che sto appena grattando la superficie di come funzionano i computer qui, ma solo per capire questo mi ci è voluto un po’ di tempo e mi ha già fatto saltare la mente più di qualche volta. Ciò che mi affascina è quanto siano potenti i computer e quanto siano incorporati nella nostra vita quotidiana, ecco perché penso che sia importante avere almeno un’intuizione di come funzionano. Inoltre, come sempre, se individuate qualche errore fatemelo sapere.

Finirò questo post con un video che mi piace molto dove Steve Jobs paragona i computer alle biciclette qui:

Ecco una lista di risorse incredibili che ho trovato mentre facevo qualche ricerca per questo post:

I 5 brevi video di Khan Academy su come funzionano i computer: https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work

La serie Crash Course sull’informatica è assolutamente incredibile: https://www.youtube.com/watch?v=O5nskjZ_GoI

Un’introduzione alla logica e alle tabelle di verità: https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94

Logica NAND, per capire meglio come i circuiti elettrici possono eseguire operazioni logiche: https://en.wikipedia.org/wiki/NAND_logic

La pagina di Wikipedia per ASCII: https://en.wikipedia.org/wiki/ASCII

Pagina di Wikipedia per Codice Binario con una breve storia dell’aritmetica binaria: https://en.wikipedia.org/wiki/Binary_code

Se vuoi scavare più a fondo, ecco un ottimo punto di partenza: https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715

Grazie per aver letto finora.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.