Bits e Bytes.

Ognuno di tali valori può venire letto con un numero scritto in cifre binarie; in questo caso, 00000000 viene letto 0, 00000001 viene letto 1, e così via, fino a 11111111 che viene letto:

11111111 = 1.128 + 1.64 + 1.32 + 1.16 + 1.8 + 1.4 + 1.2 + 1.1 = 255.

Ad ogni possibile valore di un byte può essere associato un carattere tipografico, usando una tabella di traduzione detta alfabeto ASCII.

40 = (, 41 = ), 42 = *, 43 = +, 44 = , , 45 = -, 46 = ., 47 = /.

48 = 0, 49 = 1, 50 = 2, 51 = 3, 52 = 4, 53 = 5, 54 = 6, 55 = 7, 56 = 8, 57 = 9

65 = A, 66 = B, 67 = C, 68 = D, 69 = E, 70 = F, 71 = G, 72 = H, 73 = I, 74 = J, 75 = K, 76 = L, 77 = M, 78 = N, 79 = O, 80 = P, 81 = Q, 82 = R, 83 = S, 84 = T, 85 = U, 86 = V, 87 = W, 88 = X, 89 = Y, 90 = Z.

97 = a, 98 = b, 99 = c, 100 = d, 101 = e, 102 = f, 103 = g, 104 = h, 105 = i, 106 = j, 107 = k, 108 = l, 109 = m, 110 = n, 111 = o, 112 = p, 113 = q, 114 = r, 115 = s, 116 = t, 117 = u, 118 = v, 119 = w, 120 = x, 121 = y, 122 = z.

Una terna di numeri fra 0 e 255 può essere utilizzata per rappresentare un colore.

Per leggere un byte è necessario conoscere in quale convenzione è stato scritto.

Il byte 00110000 può venire letto come un intero scritto in forma binaria, e in questo caso significa:

00110000 = 0.128 + 0.64 + 1.32 + 1.16 + 0.8 + 0.4 + 0.2 + 0.1 = 48 (l'intero quarantotto). Lo stesso byte 00110000, tuttavia, può venire letto come il 48-esimo carattere della tabella ascii: in questo caso, significa 0 (la cifra zero).

Misure di informazione.

Un byte corrisponde a tanta informazione quanto quella contenuta in un carattere tipografico. I bytes vengono a loro volta raggruppati in unità ciascuna circa mille volte (per l'esattezza, 1024 volte) più grande della precedente.

Kb = Kilobytes = 210 bytes = 1 024 bytes, circa 103 = mille;

Mb = Megabytes = 220 bytes = 1 048 576 bytes, circa 106 = un milione;

Gb = Gigabytes = 230 bytes = 1 073 741 824 bytes, circa 109 = un miliardo;

Tb = Terabytes = 240 bytes = 1 099 511 627 776 bytes, circa 1012 = mille miliardi;

Pb = Petabytes = 250 bytes = 1 125 899 906 842 624 bytes, circa 1015 = milione di miliardi.

Oggi le dimensioni della memoria di un computer si misurano in Gigabytes.

Una riga di testo contiene in genere 80 caratteri, dunque 80 byte; una pagina scritta fitta, 30 righe, dunque 80 x 30 = 2400 bytes, ovvero 2/3 kilobytes; un libro (tre-quattrocento pagine) corrisponde a un Megabyte; un Gigabyte a un migliaio di libri, dunque allo scaffale di una biblioteca.

L'architettura di un calcolatore.

CPU (Central Processor Unit) in cui vengono eseguite le istruzioni. La velocità si misura in MegaHertz (MH), Un ciclo è il tempo necessario per eseguire una operazione elementare, come leggere in una memoria, o addizionare due numeri. In questo periodo, un buon calcolatore PC dovrebbe avere una velocità di 500 MH.

Memoria temporanea: la RAM. Una seconda componente di ogni calcolatore è la RAM (Random Acces Memory), o memoria ausiliaria della CPU. Una CPU ha un numero limitato di celle di memoria, dette "registri", usate per i calcoli, ed utilizza la RAM per memorizzare temporaneamente i risultati di tali calcoli. La RAM è una memoria provvisoria (svanisce quando si spegne il calcolatore), relativamente piccola, di accesso rapido. Un PC dovrebbe avere una memoria di 128 Mb.

Memoria permanente interna: l'Hard Disk. I documenti e i programmi che vogliamo conservare si trovano di necessità sull'Hard Disk. Quando, ad esempio, si legge un testo, si sta in realtà leggendo una copia di questo testo situata nella RAM; l'originale è sull'Hard Disk. Quandi si modifica un testo, le modifiche avvengono in realtà sulla copia situata nella RAM, e dunque volatile. Diventano permanenti solo quando le salviamo: in questo caso la versione modificata viene ricopiata sull'Hard Disk e la precedente va persa. È opportuno salvare spesso, dato che incidenti (caduta di corrente, errori nei programmi) possono cancellare la copia nella RAM, e con essa tutto il lavoro svolto.

La memoria di un Hard Disk è immagazzinata su supporto magnetico. Oggi PC tendono ad avere 20 Gb di Hard Disk.

Confronto tra la memoria permanente e quella non permanente. Se rileggiamo i dati inclusi sopra, notiamo come memoria permanente sia, di solito, un centinaio di volte più grande di quella non permanente, o RAM.
Nonostante questo, la memoria RAM svolge un ruolo cruciale. È importante avere un'ampia memoria RAM; più importante che non avere una grande memoria su Hard Disk. Ricordiamo che la RAM è utilizzata dalla CPU durante i suoi calcoli. Per calcoli molto grandi (ad esempio: manipolazione di immagini e/o suoni), quando la RAM non basta, la CPU è costretta ad utilizzare anche la memoria su Hard Disk. L'effetto, però, è un drammatico calo di velocità, dato che l'Hard Disk è una memoria ad accesso lento. Questo effetto è chiamato swapping o paginazione. Programmi che richiedono molta memoria non sono effettivamente eseguibili su calcolatori con una piccola memoria RAM.

Memoria permanente mobile: dischetti, CD, DVD. dischetti o floppy disks costituiscono la memoria permanente e mobile di formato più piccolo: essi contengono al più 1400 Kilobytes, ovvero 1,4 Megabytes. Nei dischetti, la memoria è contenuta sotto forma di magnetizzazione di un supporto metallico.

 

I CD o compact disk sono dischi più grandi: arrivano fino a 700 Megabytes, ovvero 0,7 Gigabytes. Nei CD, la memoria è contenuta sotto forma di microincisioni su un supporto plastico, microincisioni che vengono poi lette da un laser.

I DVD sono compact disk di nuova generazione, capaci di contenere fino a 15-20 Gigabytes.

 

In rete è disponibile una introduzione più dettagliata all'hardware di un PC, con consigli per eventuali acquisti (niente pubblicità, in inglese).

Reti di calcolatori.

I calcolatori in genere non lavorano isolati. Essi ricevono e inviano ordini e dati alla rete mondiale dei calcolatori, o Internet, attraverso cavi di dati, oppure attraverso modem e linee telefoniche. Questo significa che, nello schema precedente, occorre aggiungere nuove linee che partono o arrivano dalla CPU.

Spesso, i calcolatori sono raggruppati in reti locali, parte della rete mondiale dei calcolatori di cui si è parlato. Una rete di calcolatori ha un calcolatore principale, o "server", e numerosi calcolatori collegati ad esso.

Il server come porta o "gate" verso Internet. Nell'aula studenti, i computer che fanno da "server" si chiamano Galilei e Verde. Il server fa da tramite tra i calcolatori della rete locale e Internet: ogni nostro collegamento ad Internet passerà attraverso il server, e viceversa, chiunque si colleghi a noi attraverso Internet si collegherà, in realtà, al server della nostra rete.

Reti di reti. Le reti locali più piccole vengono a loro volta combinate in reti più grandi, queste ultime in reti più grandi ancora, e così via, fino a che si arriva alle reti di primo livello che costituiscono Internet. Per esempio: la rete degli studenti di fisica, insieme alle reti dei gruppi di ricerca in fisica, costituisce la rete del dipartimento di fisica; le reti dei dipartimenti dell'università, messe insieme, costituiscono la rete dell'università, che è una rete di primo livello (uno dei "pezzi" che costituiscono la rete mondiale o Internet).

Reti di Reti e indirizzi Internet. Le reti di reti servono soprattutto per regolare l'accesso a Internet. Quando accedo a Internet dalla rete studenti di fisica, in realtà accedo al server della rete studenti, che a sua volta accede al server della rete del dipartimento di fisica (che contiene la rete studenti), che a sua volta accede al server della rete dell'Università (che contiene la rete di fisica). Chi accede alla rete studenti di fisica dall'esterno segue lo stesso cammino ma in senso opposto.

L'indirizzo Internet di una rete contenuta in una rete più grande si ottiene aggiungendo il nome della rete più piccola a quello della rete più grande. Per esempio: la rete universitari torinese ha indirizzo:

http://www.unito.it

quello della rete di fisica, o rete "ph", in essa contenuta, avrà quindi indirizzo:

http://www.ph.unito.it

Infine, l'indirizzo della rete studenti, o rete "edu", posta all'interno della rete di fisica sarà:

http://www.edu.ph.unito.it

Questi indirizzi devono essere forniti a programmi per navigare in rete, come "Netscape", o "Internet Explorer".

In rete potete trovare una introduzione più tecnica a Internet, ai protocolli su cui è basato e agli strumenti per la costruzione di un sito.

 

Files, programmi.

La memoria di un calcolatore contiene files (gruppi di dati) e programmi. I files sono contraddistinti da un suffisso, quali per esempio:

.txt il tipo di un testo scritto con soli caratteri ascii (senza caratteri speciali, nè in grassetto o in corsivo ...)

.doc, .rtf tipi di testi ottenuti con il programma Word (di videoscrittura) (anche con caratteri speciali, grassetto o corsivo ...)

.xls il tipo delle tabelle con calcoli numerici, ottenuti con Excel

.htm, .html il tipo delle pagine Web (quelle che vedete navigando in Internet)

.nb il tipo dei calcoli simboli ottenuti con Mathematica

Dunque "X.txt" è un file che contiene caratteri dell'alfabeto ascii, mentre "X.html" è una pagina Web. Questi suffissi col tempo vi diventeranno famigliari. Il suffisso descrive il "tipo" del file, ovvero la convenzione secondo cui sono stati espressi i dati.

Per capire come un dato possa venire scritto secondo diverse condizioni, pensiamo all'esempio del numero 0 (zero), che può venire espresso sia in forma binaria come il byte 00000000, sia come carattere dell'alfabeto ascii (in questo caso, ricordiamo, viene espresso con il byte 00110000). Conoscere tipo di un file è quindi essenziale per poterne leggere i dati. Per ogni tipo ci sono una o più programmi per l'utente, detti applicazioni, capaci di leggere files di quel tipo:

Utilizzare un'applicazione per leggere i files che appartengono a un'altra di solito produce un risultato confuso. L'applicazione non capisce ciò che legge, e fa apparire dei ghirigori, anzichè un testo o immagine con un significato compiuto.

I "livelli" di uso di un calcolatore.

Queste note sono state scritte dal punto di vista di un utente di calcolatori, privo di conoscenze specifiche di informatica. Esistono altri modi di utilizzare un calcolatore, che richiedono via via più conoscenze specifiche. Questi utilizzi non ci interesseranno in questo corso. Tuttavia vogliamo accennare alla loro esistenza, dato che lo studente ne sentirà comunque parlare.

Classificheremo i livelli di uso di un calcolatore ponendo in alto il livello utente, e via via verso il basso tutti gli usi che richiedono sempre più conoscenze specifiche. Questa classificazione è, naturalmente, del tutto arbitraria, tuttavia è comoda e abbastanza tradizionale. Ecco la nostra classifica:

1. Livello dell'Utente (o delle Applicazioni):

Word (videoscrittura), Excel (calcolo numerico), Netscape (navigazione Internet), ...

2. Livello dei Linguaggi di Programmazione:

C, C++, Java, ...

3. Livello del Sistema Operativo (il "direttore di orchestra" del calcolatore):

Windows oppure Unix/Linux oppure OS oppure ...

4. Livello del linguaggio Assembler (o degli "eseguibili"):

Linguaggio (molto elementare) per creare programmi eseguibili nel sistema operativo corrispondente (Windows, Unix, ... hanno ognuno il proprio).

5. Livello del Linguaggio Macchina:

Linguaggio compreso da quella particolare macchina (ogni modello di computer ha il proprio)

Spieghiamo ora lo schema in dettagli.

1. Livello dell'Utente (appena visto). Consiste di programmi non costruiti dall'utente, ma acquistati, e fatti per essere usati senza bisogno di conoscenze specifiche di informatica.

2. Livello dei linguaggi di programmazione. Consiste di programmi scritti dallo stesso utente, utilizzando linguaggi di programmazione quali: C, C++, Java, ... . Oggi si preferisce, in genere, acquistare un programma anzichè scriverlo noi stessi. Quindi la scrittura di programmi è limitata alla soluzione di problemi particolarmente complessi, per cui non esiste sul mercato nessun programma adatto.

Una curiosità: Mathematica è scritto nel linguaggio C.

3. Livello del sistema operativo. Il sistema operativo è un programma particolare, che gestisce l'aspetto dello schermo, le finestre in cui vengono eseguite le applicazioni, e le applicazioni stesse: è una sorta di direttore d'orchestra, molto discreto, del nostro computer. La costruzione di un sistema operativo è un lavoro enorme, riservato a ditte di grandissime dimensioni. Esistono pochissimi sistemi operativi: Windows (che fa funzionare, oggi, forse quattro quinti dei computer al mondo), OS (il sistema operativo della Machintosh, che si prende la maggior parte dei rimanenti), Unix/Linux (diffuso a livello universitario), ... .

La conoscenza di un sistema operativo è limitata a pochi tecnici che devono istallare computer e reti di computer (quando facciamo dialogare due computer, tale "dialogo" è gestito dal sistema operativo).

4. Livello del liguaggio Assembler (o degli "eseguibili"). Sia questo livello, sia, e con maggior ragione, il successivo, sono particolarmente remoti dalle esigenze di un utente. Pertanto li liquideremo con pochi cenni.

L'Assembler è il linguaggio in cui sono scritte le versioni effettivamente eseguibili (i files con suffisso ".exe") delle applicazioni (Word, Excel, Netscape, ...), e dei programmi che noi scriviamo in C, C++, Java, ... . Quando scriviamo un programma "pippo.c", per esempio, in C, questo non può venire eseguito dal sistema operativo così com'è, e deve prima venire tradotto in una versione "pippo.exe", scritta in un linguaggio detto Assembler. Ogni sistema operativo ha il suo assembler: esiste un Assembler per Windows, uno per OS, uno per Unix/Linux, e così via. Questo spiega perchè un file eseguibile nato in un sistema operativo, per esempio, Unix, non possa essere utilizzato in un altro, come Windows. Windows, infatti, non capisce programmi scritti nell'assembler di Unix. A causa di ciò, deve esistere una versione di Word, Excel, Netscape, ... per Windows, una per Machintosh, e un,altra ancora per Unix.

Il file di S. Berardi da cui sono state tratte queste note ha tipo ".rtf" proprio per l'esistenza di diversi programmi Word in diversi sistemi operativi. Per la videoscrittura, il Word per il Macintosh, per Unix/Linux, e quello per Windows hanno codifiche diverse. In altre parole: nessuno di essi può leggere un file ".doc" scritto usando l'altro. Tutti, però possono salvare i dati in un formato o tipo comune, detto ".rtf" (Rich Text Format). Questo tipo di file è stato scelto per le dispense che state leggendo. Ha il vantaggio di consentire di leggere un testo, scritto in un calcolatore che usa Windows, su di un calcolatore che usa Unix, e viceversa.

5. Livello del linguaggio macchina. Questo livello, l'ultimo, comprende, in un certo senso, tutto ciò che in un computer sta "dietro le quinte", invisibile, ma responsabile del funzionamento dell'insieme. Il linguaggio macchina è il linguaggio di programmazione con cui una certa macchina è nata, e il solo che essa in realtà capisca. Non è quasi mai usato da esseri umani. Il linguaggio macchina, tuttavia, svolge non visto un ruolo cruciale: il sistema operativo è scritto in linguaggio macchina, nel linguaggio di quella particolare macchina in cui è istallato. C'è quindi una versione di sistema operativo diversa per ogni tipo di computer. Il sistema operativo traduce un eseguibile, scritto in assembler, diciamo, di Windows, nel solo linguaggio che la macchina può capire e eseguire: il linguaggio macchina (di quella particolare macchina).

Con quest'ultima osservazione su ciò che succede "dietro le quinte" chiudiamo la nostra breve (e più che altro discorsiva) introduzione ai calcolatori.

 

Basato sugli appunti di:

Stefano Berardi

Torino, 31 Luglio 2000