Informatica

Page content

Partiamo dal computer

Che cosa è un computer? Un computer è una macchina programmabile capace di eseguire un insieme di operazioni aritmetiche e logiche in maniera automatica.

Pensiamo adesso a una calcolatrice e domandiamoci se questa è un computer: la risposta è negativa, infatti la calcolatrice esegue in automatico una serie di compiti ma non può essere istruita a svolgerne di nuovi; non è questo il caso di uno smartphone per cui si possono creare nuove app e neppure quello di uno smartwatch o di un frigorifero intelligente (AI-based) che con un po' di abilità possono essere riprogrammati per svolgere nuovi compiti.

Architettura di Von Neumann

Un computer in genere è costruito implementando quella che si chiama l'architettura di Von Neumann.

L’architettura di Von Neumann, presentata dal matematico e fisico John Von Neumann a Princeton nel 1945, descrive l’architettura di un computer elettronico digitale costituito da:

  • un’unità centrale di elaborazione (CPU, Central processing Unit) che contiene al suo interno un’unità aritmetico-logica (ALU), i registri del processore e un’unità di controllo;
  • una memoria per immagazzinare sia dati che istruzioni;
  • un percorso (bus) per spostare le informazioni dal processore alla memoria;
  • un meccanismo per l’ingresso/uscita delle informazioni.

Hardware

Da un punto di vista della macchina, dell'hardware il funzionamento di un computer ruota dunque attorno al processore, che svolge le operazioni, e alla memoria, che serve per immagazzinare i dati.

Il processore, a sua volta costituito dalla CPU (Central processing Unit), ALU (Arithmetic Logic Unit) e registri interni, è connesso da una parte a dei dispositivi per l’archiviazione delle informazioni, quali memoria RAM/ROM e disco rigido, dall’altra a un insieme di periferiche esterne che servono per fornire informazioni al computer (periferiche di input) e per ottenere informazioni dal computer (periferiche di output). Tra le periferiche di input troviamo, mouse, tastiera e scanner, mentre tra quelle di output il monitor, una stampante, un proiettore.

Le prime macchine calcolatrici

Le prime macchine che possono essere considerate come gli “antenati” dei moderni calcolatori sono stati semplici dispositivi per il calcolo come l’abaco (ca. 2400 a.C.), macchine per eseguire calcoli astronomici oppure i regoli-calcolatori (introdotti nel 1600).


Dopo la costruzione della Macchina Differenziale nel 1837 Charles Babbage iniziò a lavorare alla Macchina Analitica, una macchina che incorporava una ALU, un meccanismo per il controllo del flusso delle operazione, cicli e istruzioni condizionali.

Il progetto non fu mai completato ma di fatto la Macchina Analitica è stato il primo computer che sia stato progettato e in parte sviluppato. Per questa macchina Ada Lovelace, collaboratrice di Babbage, sviluppò quello che è considerato il primo programma per un computer.
Durante la Seconda Guerra Mondiale si ebbe un notevole sviluppo dei computer: nel 1938 la Marina militare degli Stati Uniti d’America sviluppò un computer analogico elettro-meccanico da montare a bordo di sottomarini e Colossus fu il primo computer digitale programmabile che utilizzava valvole termoioniche (tubi a vuoto), che furono poi sostituite dall’avvento dei transistor a partire dalla loro invenzione nel 1955.

Numeri binari e logica binaria

Normalmente siamo abituati a contare e a rappresentare i numeri utilizzando dieci cifre {0,1,2,3,4,5,6,7,8,9} e facciamo uso delle decine, delle centinaia, delle migliaia e così via, in pratica utilizziamo quasi senza accorgercene quella che si chiama una notazione posizionale in base 10.

Consideriamo per esempio il numero 37698, che possiamo sempre leggere come 3 decine di migliaia, 7 migliaia, 6 centinaia, 9 decine e 8 unità; se utilizziamo le potenze possiamo dunque scriverlo come:

37698 = 3x104+7x103+6x102+9x101+8x100

Fin qui tutto bene, è così che pensiamo normalmente i numeri, ma un computer, come pensa i numeri?
Un computer pensa e rappresenta i numeri utilizzando due sole cifre {0,1} e le potenze con base-2, per es. 10001 (uno-zero-zero-zero-uno) è un numero binario.

I numeri infatti possono essere scritti in una base oppure in un’altra e esiste un modo per passare da una base a un’altra.

Conversione da base-2 a base-10

Per convertire un numero da base-2 a base-10 partiamo dalla cifra sulla destra, che corrisponde alla potenza 2^0 e poi proseguiamo verso sinistra, avevdo cura di moltiplicare la cifra per la corrispondente potenza di 2.

10001 = 1x20+0x21+0x22+0x23+1x24 = 17

Conversione da base-10 a base-2

E' anche possibile convertire un numero da base-10 a base-2.
La ricetta da seguire è la seguente:

  1. cercare la più grande potenza di 2 che è minore o uguale al numero assegnato
  2. segnare un 1 nella casella corrispondente alla potenza trovata
  3. eseguire la differenza tra il numero di partenza e il numero trovato
  4. ripartire da 1

Per esempio consideriamo il numero 57 e iniziamo cercando la potenza di 2 più vicina a 57, cioè 2^5=32,

57 = 25+...


calcoliamo adesso 57-32=25, quale è la potenza di 2 più vicina a 25? 2^4=16

57 = 25+24+...


continuiamo così, 25-16=9, per cui

57 = 25+24+23+...


9-8=1, per cui la potenza più vicina è proprio 2^0=1

57 = 25+24+23+20


a questo punto dobbiamo fare 1-1=0 e quindi abbiamo finito,

(57)10=(111001)2

Con una mano è anche possibile contare in base-2, utilizzando le dita come fossero cifre binarie: un dito vale 1 se è alzato, 0 se è ritratto, per cui con cinque dita è possibile contare fino a 31, e con dieci dita?

A cosa servono i numeri binari?

I numeri binari sono utili per rappresentare tutti quei fenomeni che sono caratterizzati da due soli possibili stati.
Consideriamo per esempio il lancio di una moneta, può uscire testa oppure croce e posso rappresentare testa come 1 e croce come zero: se dopo cinque lanci ho avuto la sequenza testa-testa-croce-testa-croce potrei scriverla in binario come 11010. Allo stesso modo se tengo traccia nel tempo delle giornate in cui è piovuto potrei scrivere su un’agenda pioggia-sole-sole-pioggia-pioggia-pioggia e così via, gli stati possibili sono sempre solamente due –pioggia oppure sole–, per cui potrei rappresentare la sequenza come pioggia-1 e sole-0, ovvero sia 100111.

Se adesso considero un cavo elettrico, questo può essere percorso da corrente (1) oppure non-essere percorso da corrente (0). Vedremo tra poco che un computer digitale è fatto di minuscoli circuiti che si comportano come interruttori che possono essere chiusi, fanno passare corrente, oppure aperti non-fanno passare corrente. La logica binaria è dunque la scelta naturale per rappresentare il comportamento di una macchina così fatta.

Il computer digitale

Un computer digitale, come quelli che utilizziamo in genere oggi, si basa su un’elettronica digitale che implementa l’algebra di Boole (algebra booleana) e utilizza una rappresentazione binaria delle informazioni.

Informazioni

Cosa sono le informazioni? Le informazioni (data) per un computer sono tutto quello che è in grado di ricevere in input, elaborare al suo interno e restituire in output.

Se premo dei tasti sulla tastiera, la sequenza di tasti premuti rappresenta delle informazioni, così lo spostamento del puntatore del mouse e la pressione del tasto destro o sinistro sono informazioni in ingresso nel computer, come pure il gesto fatto sul display di un monitor touch; informazioni sono anche i suoni che riceve un microfono e che poi saranno convertiti in segnali elettrici, oppure il segnale elettrico trasmesso agli altoparlanti perché lo convertano in onde sonore, le immagini che si formano sul display di un monitor e i caratteri che costituiscono un documento.

Tutti questi dati (queste informazioni) vengono trasformati e elaborati dal computer come sequenze di zeri e uni, quindi un computer vede e pensa le informazioni come numeri binari.

Operatori logici e porte logiche

Con i numeri binari, oltre alle operazioni aritmetiche classiche si possono fare anche operazioni logiche.
Gli operatori logici fondamentali sono AND, OR e NOT, descritti dalle relative tabelle di verità, a cui corrispondono le porte logiche che hanno il loro stesso nome logic-AND, logic-OR e logic-NOT.

Tutti i circuiti del processore di un computer sono costituiti da una combinazione di porte logiche, come se fosse fatto da miliardi di interruttori che possono essere accesi oppure spenti.

Un computer vede e pensa le informazioni come numeri binari perché nella sua natura intima è esso stesso costituito da componenti elettronici che sono di fatto interruttori (i transistor) che possono avere due soli stati: interruttore chiuso/passa corrente, 1, oppure interruttore aperto/non-passa corrente, 0.
I transistor vengono poi combinati assieme per realizzare le porte logiche e permettere così alla macchina di eseguire tutte le operazioni logiche e aritmetiche in base-2 che gli permettono di ricevere, elaborare e restituire tutte le informazioni su cui lavora.