La rappresentazione dei numeri
Bits e bytes
La digitalizzazione della materia
Il computer, in breve
Hardware
Software
3. Il mondo digitale
Il termine digitale dervia dall’inglese dove digit significa cifra, numero. Il termine deriva dal
latino digitus che indica il dito della mano, poichè le dita sono spesso utilizzate per contare.
Quando si parla di dati digitali quindi ci si riferisce alla rappresentazione numerica di una
foto, una musica o un documento; quando sentiamo un CD, vediamo un DVD o accediamo ad
una pagina internet stiamo accedendo a questo tipo di dati.
In un CD audio ad esempio, sono registrati dei numeri da 0 a 65535 ognuno dei quali
rappresenta il “volume” di una canzone in un preciso istante di tempo. E’ importante notare
come in questo tipo di dati i valori siano discreti ovvero non possono assumere qualunque valore
ma solo un valore preso da un insieme specifico di valori possibili (in questo caso un numero tra
0 e 65535).
Di contro, parliamo di dati analogici quando la loro rappresentazione è in forma continua,
come avviene ad esempio per la musica registrata su dischi di vinile o per una vecchia foto
stampata su carta.
Alcuni dati sono per loro natura discreti, ad esempio i caratteri dell’alfabeto. Quindi
digitalizzare un libro consiste concettualmente nel mappare tutti i caratteri dell’alfabeto in
numeri. Le grandezze fisiche come ad esempio i colori, i suoni o la temperatura di una stanza,
sono per loro natura continue e vanno quindi rese discrete attraverso delle tecniche che verranno
descritte più avanti in modo da poterle mappare anche esse su un insieme finito di numeri.
Ma perchè esiste questa necessità di convertire tutto in digitale?
Le informazioni digitali hanno diverse caratteristiche che le rendono interessanti tra cui
una implicita resistenza agli errori. Proviamo ad esempio a fare un disegno su carta e quindi
chiediamo a una persona di ricopiarlo su un altro foglio. Quindi diamo la copia ad un’altra
persona ancora e gli chiediamo di fare la copia della copia e così via. Dopo un certo numero di
copie, il disegno sarà sempre più lontano dall’originale dato che ogni copia, per quanto sia fatta
bene, introduce inevitabilmente degli errori. Questo non succede se i nostri dati sono digitali.
Infatti se facciamo lo stesso esperimento scrivendo una serie di numeri su un foglio, anche se i
partecipanti dell’esperimento avranno grafie diverse, i numeri rimarranno gli stessi anche dopo
100 copie, a meno di errori così grandi da far scambiare un numero per un altro.
Questo è quello che succede anche per l’esempio della musica. Effettuare la copia di un
disco di vinile introduce degli errori e questo è il motivo per cui tra gli audiofili valutano in
modo diverso i vinili creati come copie dell’originale (master disc) e quelli creati dalle copie
Chapter 3. Il mondo digitale
28
delle copie. I CD audio invece, contenendo numeri, non subiscono questo deterioramento ed una
copia suonerà esattamente come l’originale.
Quando inviamo una foto come allegato di una e-mail ad esempio, anche se non ce ne
accorgiamo, stiamo effettuando numerose copie attraverso i vari computer di Internet che
attraversiamo. E’ quindi fondamentale non introdurre errori.
Un altro motivo fondamentale per cui è importante rappresentare tutto come un numero è
che così abbiamo una rappresentazione comune per tutti i tipi di dati.
Ci basterà infatti saper memorizzare o trasmettre un solo numero per poter memorizzare/trasferire idealmente un immagine, una canzone o un libro.
3.1
La rappresentazione dei numeri
Spesso il temine dato digitale viene (impropriamente) utilizzato come sinonimo di dato binario, a significare la grande importanza che ha la rapprestazione binaria dei numeri all’interno
dell’informatica e delle reti. Partiamo dalla base e prendiamo un numero a caso: 1234. La
rappresentazione dei numeri a cui siamo abituati è detta “in base 10” ovvero con una singola
cifra riusciamo a rappresentare 10 numeri diversi (da 0 a 9). Con riferimento al nostro esempio,
il numero risultante lo possiamo pensare così:
1234 = 1 ⇥ 1 + 2 ⇥ 10 + 3 ⇥ 100 + 4 ⇥ 1000
Alternativamente, utilizzando l’esponenziale con base 10:
1234 = 1 ⇥ 100 + 2 ⇥ 101 + 3 ⇥ 102 + 4 ⇥ 103
A noi esseri umani viene comoda la rappresentazione dei numeri in decimale (ovvero in base
10) perchè abbiamo 10 dita, ma i computer, notoriamente non provvisti di dita, trovano più
comoda la rappresentazione binaria, ovvero “in base 2”, che meglio si mappa allo stato di molti
componenti elettronici di acceso/spento 1 . Non cambia assolutamente niente rispetto al caso
precendente, a parte la base. Con ogni cifra pertanto riusciremo a rappresentare al massimo due
numero, 0 e 1. Prendiamo il solito numero a caso che questa volta è 10011010010.
10011010010 = 0⇥20 +1⇥21 +0⇥22 +0⇥23 +1⇥24 +0⇥25 +1⇥26 +1⇥27 +0⇥28 +0⇥29 +0⇥210
Il risultato, in decimale, è 1234. Obbiamo appena capito come convertire un numero da binario
in decimale. Il viceversa, ovvero da decimale a binario, si può fare prendendo il numero e
dividendo tante volte per 2, andandoci a segnare il resto della divisione intera. Facciamo un
esempio: 1234 / 2 = 617 con resto 0. 617 / 2 = 308 con il resto di 1, 308 /2 = 154 con resto 0 ecc.
Continuamo fino a che non arriviamo a 0.
La colonna di destra dei resti ci darà il nostro numero in binario, da leggere dal basso (bit
più significativo) all’alto (bit meno significativo).
Come abbiamo visto la conversione decimale/binario è facile ma non immediata, per questo
nell’informatica spesso si usa un altro tipo di base che è molto più facile da convertire in
binario, ma allo stesso tempo permette una rappresentazione più sintetica dei numeri. Stiamo
parlando della codifica esadecimale, ovvero in base 16. Ogni cifra questa volta piu’ assumero
i valori 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e, f . Essendo 16 una potenza di 2, possiamo converire
istantaneamente ogni numero binario in un numero esadecimale e viceversa grazie a questa
tabella:
Quindi converire il numero binario 10011010010 in esadecimale è facilissimo, basta dividerlo
in blocchi da 4 cifre e utilizzare la tabella:
3.2 Bits e bytes
29
divisione
risultato
resto
1234/2
617/2
308/2
154/2
77/2
38/2
19/2
9/2
4/2
2/2
1/2
= 617
= 308
= 154
= 77
= 38
= 19
=9
=4
=2
=1
=0
0
1
0
0
1
0
1
1
0
0
1
Table 3.1: Conversione di da decimale a binario di un numero
Il risultato è 4d2. I numeri espressi in esadecimale sono molto usati e li incontreremo spesso.
Di solito vengono scritti con il prefisso 0x per distingueri dai decimali, ad esempio 0x4d2.
Difficilmente nella vita dovrete convertire manualmente dei numeri binari in decimale
o esadecimale, tuttavia è importante capire che stiamo sempre parlando di numeri e stiamo
discutendo solo sulla sua rappresentazione. Esistono inoltre tantissimi tools per la conversione
dei numeri, ad esempio si puo’ usare direttamente Google e scrivere nella nella barra di ricerca
0b10101inhex o 12inbinary per fare la conversione qualora ci servisse.
Sicuramente vi sarà pero’ capitato di vedere un messaggio di errore di Windows come quello
in figura 3.1 (il famoso “blue screen of death”) dove sono espressi, in esadecimale, dei numeri
relativi alla parte di memoria ed ai registri che in cui si è verificato l’errore “mortale” con lo
scopo di fornire informazioni ai tecnici in modo da capire il problema. Un altro esempio è
l’indirizzo di rete (MAC address, che vedremo nel prossimo capitolo) scritto spesso sotto i
computer portatili come in figura 3.2 come 6 coppie di caratteri esadecimali.
3.2
Bits e bytes
Bit vuol dire binary digit ovvero cifra binaria, che quindi puo’ essere 0 o 1, e rappresenta l’unità
di base di ogni sistema informatico e di comunicazione digitale. Spesso viene usato attraverso i
suoi multipli:
Se con un bit riusciamo a memorizzare solo 0 o 1, con due bit riusciamo a memorizzare un
valore tra 00 , 01, 10, 10 (4 possibili valori, o alternativamente un numero tra 0 e 3). Con tre bit
riusciamo a rappresentare un numero tra 0 e 7, con quattro bit un numero tra 0 e 15 e cosi’ via.
La regola è che con x bit riusciamo a rappresentare un numero tra 0 e 2x 1.
Exercise 3.1 Quanti bit ci servono per rappresentare 2646000 numeri tra 0 e 65535?
⌅
Soluzione: per rappresentare un numero tra 0 e 65535 servono 16 bit, infatti 21 6 1 = 65535.
Quindi basta fare 2646000 ⇥ 16 per ottenere 42336000 bit ovvero 42.336 megabit. Questa è la
memoria che serve per memorizzare un minuto di musica utilizzando il campionamento standard
dei cd musicali (sarà più chiaro in seguito).
Un gruppo di 8 bit si chiama byte ed è la quantità di informazione utilizzata storicamente per
codificare un carattere. Con un byte riusciamo a rappresentare 28 = 256 numeri diversi che è
più che sufficiente per codificare tutti i caratteri dell’alfabeto inglese/americano. Oggi i caratteri
1 In
realtà sono gli arabi
Chapter 3. Il mondo digitale
30
Esadecimale
Binario
0
1
2
3
4
5
6
7
8
9
a
b
c
d
e
f
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
Table 3.2: Conversione da esadecimale a binario
0100
1101
0010
=
=
=
4
d
2
necessari sono molti di più (pensiamo agli ideogrammi cinesi o ai caratteri arabi e cirillici),
tuttavia il byte è rimasta l’unità di misura delle memorie. Ai bytes si applicano gli stessi prefissi
visti in tabella 3.2 con la differenza che se si parla di byte, la sigla contiene la B maiuscola (ad
es. la sigla corrispondente a un megabit è Mb, mentre per un megabyte è MB).
Nei negozi di informatica ad esempio si vengono gli hard disk da un terabyte (TB) che
permettono di memorizzare 1012 bytes ovvero 8 ⇥ 1012 bits. Le memorie RAM invece hanno di
solito capacità più ridotte dell’ordine di qualche gigabyte (GB). I vecchi floppy disk contenevano
di solito 1.44 Mbyte. La figura 3.3 mostra le grandezze in gioco per le memorie più comuni.
Exercise 3.2 Quanti floppy disk da 1.44MB servono per copiare il contenuto di un DVD da
4.7GB?
⌅
Soluzione: 4700/1.44 ovvero 3264 floppy disks!
Exercise 3.3 Quanti DVD da 4.7GB mi servono per fare una copia di backup del mio hard
disk da 1TB?
⌅
Soluzione: 1000/4.7 = 213 DVD
Per le capacità trasmissive invece si utilizzano i bit. Ad esempio una linea “ADSL 20Mega”
(nome commerciale per indicare una linea ADSL con 20 megabit per secondo di banda di
download) sarà quindi una linea in grado di ricevere 20 milioni di di bit per secondo.
3.3
La digitalizzazione della materia
Una fortunata espressione inglese che descrive bene il processo di digitalizzazione che è in corso
in questi anni è bits eat atoms. Prima esistevano i rullini, oggi la gran parte delle foto sono
digitali. Stesso discorso per le videocassette, ormai sparite ma anche mappe stradali, musica e
3.3 La digitalizzazione della materia
31
Figure 3.1: Blue screen of death
Nome
Numero di bit
Sigla
kilobit
megabit
gigabit
terabit
petabit
exabit
zettabit
yottabit
103
106
109
1012
1015
1018
1021
1023
Kb
Mb
Gb
Tb
Pb
Eb
Zb
Yb
Table 3.3: Multipli del bit
i libri che oggi si stanno convertendo in e-book. Un tempo la posta si poteva controllare solo
dall’ufficio o da casa. Adesso la comunicazione avviene ormai prevalentemente via e-mail, e
ognuno puo’ controllare la sua casella di posta in qualunque istante grazie al suo smartphone.
Perfino gli oggetti, grazie alle stampanti 3D, si possono convertire in bit e quindi di nuovo in
oggetti fisici. Viviamo in un epoca che secondo molti passerà alla storia come quando l’uomo
divenne digitale.
Ma come convertiamo quello che per sua natura non è digitale, in digitale? Prendiamo
ad esempio la musica e consideriamo il processo di digitalizzazione di una canzone. In linea
concettuale il processo è semplice e si compone di due fase: una fase di campionamento ed
una di quantizzazione. La canzone viene “fotografata” ad intervalli di tempo molto piccoli
(campionamento) e quindi per ogni campione si mappa il valore del segnale attraverso un set
discreto di valori possibili (quantizzazione). Ogni CD audio è esattamente il risultato di questo
processo dove il campionamento è fatto 44100 volte al secondo (ovvero 44100 Hz, dove 1 Hz
indica una volta al secondo) e la quantizzazione è effettuata su 2 bytes (ovvero su un numero tra 0
e 65535). Questo processo, rappresentato in figura 3.4 si chiama conversione analogico-digitale,
32
Chapter 3. Il mondo digitale
Figure 3.2: MAC address scritto sotto i computer portatili - licenza CC BY-SA 3.0
Figure 3.3: Varie tipi di memorie e grandezze in gioco
in breve ADC. Il viceversa invece si chiama conversione digitale-analogico (DAC) e consiste
nel recuperare il segnale originario partendo dai campioni quantizzati, che è il processo che fa
comunemente il nostro stereo quando suona un mp3 o un cd musicale.
Il processo di campionamento e quantizzazione introduce inevitabilmente degli errori perchè
• stiamo considerando una grandezza fisica continua solo in alcuni intervalli di tempo
• stiamo forzando una grandezza fisica ad assumere un set discreto di valori
Fortunatamente esiste un teorema, chiamato appunto teorema del campionamento, che ci
dice che se la frequenza di compionamento è pari a due volte quello della banda di frequenza
che vogliamo rappresentare, il segnale che riusciamo a ricostruire non varia molto da quello
originario.
Per continuare sull’esempio della musica,l’orecchio umano non riesce a percepire i suoni
con frequenze sopra i 20kHz e sotto gli 20 Hz. Quindi la banda di frequenza utile di un segnale
audio è di circa 20000 20 = 19980Hz. Pertanto, campionando a 44100 (più del doppio) stiamo
sicuri di ricostruire fedelmente il nostro segnale.
3.4 Il computer, in breve
33
Figure 3.4: Campionamento e quantizzazione di un segnale
Per quanto riguarda la quantizzazione, valgono considerazioni simili per cui 65536 diversi
valori possibili per ogni campione sono più che sufficienti a non farci sentire il rumore introdotto
dalla quantizzazione.
Quanto detto per la musica vale anche per i filmati che li possiamo vedere come una serie di
fotografie (campioni) nel tempo. Vi siete mai chiesti perchè gli schermi del computer inquadrati
dalle telecamere dei telegiornali sembrano sempre rotti? Le “foto” (ovvero il campionamento)
effettuato dalla telecamera è diverso rispetto alla frequenza di “refresh” dello schermo.
3.4
Il computer, in breve
Il computer è una macchina programmabile, tipicamente elettronica, in grado di fare operazioni
artimentiche o logiche. Stando a questa definizione, come vedremo, anche il nostro tablet,
smartphone, o perfino l’orologio digitale che indossiamo sono computer. Tradizionalmente
però per computer si intende il computer fisso (desktop) originariamente chiamato Personal
Computer (PC) per differenziarlo dai computer aziendali o negli anni 50 occupavano intere sale,
e i più recenti computer portatile (laptop). Apriamo quindi un computer fisso e vediamo cosa
c’e’ dentro. Quello che vedremo è l’hardware del computer ovvero i componenti fisici che lo
compongono.
3.4.1 Hardware
La parte più grande che riusciamo ad inviduare è chiamatascheda madre (in inglese “motherboard”) ed è quella rappresentata in figura 3.5. Su questa scheda elettronica vengono alloggiati
gli altri componenti, come l’hard disk, le memorie, lettori cd/dvd ecc. La scheda madre è
alimentata mediante un cavo che va all’alimentatore del pc. Gli slot bianchi e marroni che vedete
sulla sinistra sono dei connettori per schede esterne (ad esempio una scheda audio o la scheda
video). Sulla destra verrà alloggiato il processore, mentre in basso verrà inserita la memoria
RAM. Le schede madri sono molto diverse tra loro ed i connettori cambiano di anno in anno, in
base alle nuove tecnologie che escono. Grazie a questi connettori è possibile sostituire delle parti
di hardware senza dover per forza cambiare tutto. Inoltre molte schede hanno integrati già molti
componenti al loro interno (controller USB, audio, video).
Un computer ha tipicamente molte unità elaborative diverse ovvero ha tanti chip in grado
di fare calcoli matematici. Sui computer tradizionali ha un ruolo primario però quello che
34
Chapter 3. Il mondo digitale
Figure 3.5: Scheda madre di un computer - licenza CC BY-SA 3.0
normalmente viene chiamato il processore e che tecnicamente si chiama CPU ovvero Central
Processing Unit.
Figure 3.6: Central Processing Unit - licenza CC BY-SA 3.0
Ogni CPU, come quella in figura 3.6, come dice il nome stesso rappresenta l’unità elaborativa
centrale ed è in grado di fare tante e semplici operazioni, ad una frequenza determinata. Ad
esempio una CPU a 2GHz è in grado di effettuare due miliardi di operazioni ogni secondo.
Il concetto da rimarcare che queste operazioni sono semplici (somme, sottrazioni tra numeri,
comparazioni ecc). A questo punto mancano due elementi ancora: le memorie e i dispositivi
di input/output. Le memorie presenti nei PC sono tipicamente di due tipi: memorie RAM e
dischi fissi. Le memorie RAM sono memorie veloci, mentre i dischi fissi (hard disk) hanno
dei tempi di accesso molto maggiori. La differenza in velocità è compensata dal fatto che i
dati all’interno degli hard disk rimane anche quando il computer viene spesso perchè i dati
vengono scritti su un disco magnetico come si vede in figura 3.7, o nel caso dei più recenti hard
disk a stato solido (Hard Disk SSD) su una memoria a stato solido, come avviene anche per le
schede di memoria presenti nelle macchine fotografiche o nei cellulari. Gli hard disk sono inoltre
3.4 Il computer, in breve
35
tipicamente più economici delle RAM, arrivando, alle tecnologie attuali, a diversi Terabyte di dati
memorizzabili. Le memorie RAM invece, come quella in figura 3.8, attualmente memorizzano
Figure 3.7: Hard disk
qualche Gigabyte di dati che vengono cancellati appena il computer viene spento. Questo tipo
di memorie si dicono volatili, per distinguerle dalle memoria non volatili e quindi permanenti
anche quando il sistema non è alimentato. Il termine RAM sta per Random Access Memory
ovvero memoria ad accesso casuale ed indentifica la caratteristica di questa memoria di avere lo
stesso tempo di accesso in lettura/scrittura per accedere ai vari blocchi che la compongono. Per
una vecchia musicassetta ad esempio non è così perchè il tempo per spostarci da una tracca ad
un altra dipende da quanti centimetri di nastro magnetico ci sono tra le due tracce.
Figure 3.8: RAM - Licenza Creative Commons Attribution-Share Alike 3.0
Ad ultimo, al nostro computer sono attaccati diversi dispositivi di input/output (I/O) quali
schede video, tastiere, scheda audio, mouse, stampanti, scanner, schede di rete, ecc. Anche questi
dispositivi vengono normalmente attaccati alla scheda madre.
Non è ovviamente tutto così facile e ci sono migliaia di diverse varianti. Esistono dischi fissi
di rete, altri tipi di memorie montate direttamente sulle CPU (memorie cache) per incrementare
le prestazioni. I computer laptop hanno diversi tipi di connettori e non permettono la stessa
espandibilità dei computer fissi. Gli smartphone ed i tablet ad esempio hanno memorie a stato
solido esterne o integrate ed anche il processore non è sostituibile. Se andiamo nel mondo dei
sensori o degli orologi da polso ad esempio troviamo che tutti i componenti sopra descritti sono
integrati all’interno di un singolo chip.
Da un punto di vista logico il quadro che ne emerge è di una macchina programmabile che
riceve input ed output, ha al suo interno delle memorie e l’elettronica per processare dei dati. E’
proprio grazie a questa sua genericità che si presta a risolvere centinaia di migliaia di problemi
diversi, attraverso dei programmi.
3.4.2 Software
Una app per cellulare, o un programma di fotoritocco sono due esempi di applicativi software.
Questi programmi sono molto diversi tra loro e ne esistono un’infinità. Supponiamo di voler
Chapter 3. Il mondo digitale
36
creare il nostro programma, ad esempio un programma di videoscrittura sfruttando l’hardware
generico sopra descritto. Chiaramente se dovessimo andare ad istruire ogni singolo pixel dello
schermo sul colore che deve assumere o catturare gli spostamenti del mouse non finiremmo
nemmeno in 100 anni. Inoltre, attaccando un altro monitor probabilmente il nostro programma
non funzionerebbe più! Sui computer infatti fortunatamente (e talvolta sfortunatamente) gira
un software chiamato Sistema Operativo. Esempi di sistemi operativi sono Linux, Mac OSX,
Windows, Android, IOS.
Il sistema operativo
Un sistema operativo è sostanzialmente un programma in grado di gestire l’hardware della
macchina ed operare in modo da realizzare uno strato “cuscinetto” sopra il quale girano i
normali applicativi. Gli applicativi parlando col sistema operativo e il sistema operativo parla
con l’hardware. Il sistema operativo è incaricaricato di effettuare tantissime operazioni e viene
caricato “al boot” ovvero quando il computer viene acceso. Più tecnicamente ogni scheda madre
è dotata di un BIOS (Basic Input-Output System) che è un programma scritto su una memoria
non volatile.
Figure 3.9: BIOS
Quando accendete un computer vi sarà capitato di vedere una schermata simile quella in
figura 3.9. In basso viene indicata la combinazione di tasti (tasto CANC, o tipicamente tasto
F2) per entrare nella configurazione del BIOS e cambiare dei parametri strettamente legati
all’hardware della macchina (frequenza del processore, dispositivi riconosciuti, ecc). Il BIOS
quindi è il primo software eseguito quando accendiamo un computer. Il BIOS termina la sua
esecuzione caricando un piccolo software chiamato bootloader il cui scopo è a sua volta carica il
sistema operativo.
Per la definizione che abbiamo dato all’inizio del capitolo, esistono “computer” non dotati di
sistema operativo quali gli orologi digitali, gli stereo della macchina, e tutti gli altri dispositivi
digitali in grado di effettuare operazioni di elaborazione ma che non necessitano della presenza
di diversi programmi. Di contro, tutti i personal computer, i server, i computer portatili, fissi,
smartphone ecc lavorano come sopra descritto.
Queste sono alcune delle funzionalità di un sistema operativo:
3.4 Il computer, in breve
37
• come memorizzare i dati su hard disk e come accedervi in modo efficiente. La struttura in file e cartelle dei nostri documenti all’interno del computer è una funzionalità
implementata dal filesystem, un modulo del nostro sistema operativo.
• proteggere il computer da programmi che si comportano in modo anomalo. Vi sarà
sicuramente capitato di trovare programmi su PC o su smartphone che vengono terminati
perchè non sono reattivi o perchè hanno provato a fare qualcosa che non dovevano (tipo
accedere alla memoria di un altro programma). Dobbiamo ringraziare il sistema operativo
se queste operazioni non hanno danneggiato il computer o altri programmi.
• far funzionare più programmi in parallelo. Come fanno a funzionare più programmi
contemporaneamente se abbiamo una sola CPU? Il sistema operativo, attraverso un modulo
chiamato scheduler, dedica un po’ di tempo di elaborazione ad un programma per poi
passare ad un altro programma. Questo ci da la percezione che i programmi girino
contemporaneamente e questa caratteristica è chiamata in gergo multitasking.
• parlare in rete: le funzionalità di rete sono implementate all’interno del sistema operativo.
I vari protocolli di trasporto, di rete e di collegamento che vedremo nei prossimi capitoli,
sono dei moduli integrabili e utilizzabili dai diversi applicativi software.
• parlare con l’hardware: abbiamo installato una nuova stampante, scanner o altra periferica? Dovremmo allora installare un software chiamato driver che istruisce il sistema
operativo su come debba fare per parlare con il nuovo hardware 2 .
I programmi
Normalmente con il termine programmi si intende gli applicativi software che girano all’interno di
un computer e si interfacciano con il sistema operativo. Parliamo di programmi di videoscrittura,
fogli di calcolo, fotoritocco, navigazione web ecc. Nel mondo “mobile” spesso si parla di “app”,
ma il concetto è lo stesso. La diversificazione e l’apertura a terze parti è sicuramente uno dei
motivi per cui il computer è entrato così velocemente all’interno delle nostre case. I programmi
risolvono migliaia di problemi diversi, automatizzando tutte le operazioni ripetitive. I programmi
sono scritti da programmatori, un nuovo mesterie che ha meno di 50 anni e che offre lavoro a una
parte sempre più crescente di popolazione. Per scrivere un programma abbiamo bisogno di un
ambiente dove poter dire al computer come comportarsi in caso il programma sia aperto, l’utente
interagisca con il programma mediante mouse, tap o input di testo, ecc. Il programma viene
scritto con un linguaggio di programmazione ovvero un linguaggio formale di descrizione delle
operazioni che il programma deve fare. Una volta scritti su normali file di testo, i programmi
sono compilati ovvero tradotti in operazioni che il computer riesce ad eseguire direttamente 3 .
Quando viene avviato un programma, il sistema operativo si preoccupa di “lanciarlo” e tenerne
monitorata l’esecuzione. Esistono decine di linguaggi di programmazione diversi (C, Python,
Java, Ruby per citarne alcuni). Ogni programma si interfaccia con il sistema operativo per
effettuare le operazioni che riguardino la rete, input e output, e l’accesso su disco o in memoria.
Un programma scritto per un sistema operativo quindi non è detto che funzioni su un altro sistema
operativo, anche se esistono speciali strati di adattamento software per rendere i programmi
“portabili”.
2 Sempre
più spesso non c’e’ bisogno di installare driver esterni perchè contenuti o scaricati automaticamente già
dal sistema operativo.
3 Alcuni programmi scritti in certi linguaggi sono interpretati, ovvero c’e’ un’altra componente software chiamata
interprete che traduce, durante l’esecuzione, i comandi.