|
Un computer è una
macchina costituita da un insieme di componenti elettroniche: è
facile immaginare quindi, come tutto il funzionamento della macchina
dipenda da un flusso continuo di segnali elettrici, sincronizzati da
un clock, che codificano, in notazione binaria, le informazioni
immagazzinate ed elaborate all'interno della macchina stessa.
Per quanto possa essere complessa e sofisticata l'architettura di un
elaboratore elettronico, questo potrebbe sembrare non molto
dissimile da un qualsiasi altro elettrodomestico presente nella
nostra casa. Tuttavia esiste una differenza sostanziale tra un
computer ed una lavatrice: per quanto moderna e dotata di
sofisticati meccanismi elettronici, una lavatrice potrà sempre e
solo lavare dei panni, mentre il computer può essere istruito per
svolgere compiti anche molto differenti tra di loro.
Come si istruisce un computer? Mediante un programma, ossia tramite
una sequenza ben definita di istruzioni che la macchina è in grado
di tradurre in funzioni elementari facilmente eseguibili.
Schematicamente possiamo dire che le caratteristiche principali di
un calcolatore sono:
- velocità: è rapidissimo nell'eseguire i compiti che gli vengono
assegnati;
- precisione: è estremamente preciso nell'eseguire calcoli
matematici e logici;
- affidabilità: svolge con rigore e puntualità i compiti assegnati
dall'utente;
- duttilità: è in grado (se programmato correttamente) di svolgere
lavori assai diversi.
Come rovescio della
medaglia di queste caratteristiche ``positive'', possiamo
individuare alcune caratteristiche ``negative'' di cui è bene tenere
conto:
- è privo di ``buon senso'' e di intuizione;
- è incapace di verificare se c'è corrispondenza tra quanto sta
facendo e gli obbiettivi del programmatore.
Riassumendo,
possiamo dire che il calcolatore è un esecutore di ordini impartiti
dall'utente-programmatore, assai preciso ed efficiente, ma un po'
stupido, si limita cioè ad eseguire ciò che gli viene chiesto, a
prescindere dalla correttezza di quanto gli viene ordinato di
compiere ai fini della soluzione del problema (in un certo senso si
può dire che è un po' cieco).
Per capire meglio quanto è stato detto vediamo un esempio elementare
di programma per un calcolatore elettronico. Supponiamo che il
problema da risolvere sia quello di effettuare la media aritmetica
tra 5 numeri forniti dall'utente. Il calcolatore deve leggere in
input i cinque numeri, sommarli, memorizzando la somma da qualche
parte nella sua memoria ed infine dividere per cinque la somma
totale e stampare il risultato. Una codifica di questo algoritmo
risolutore potrebbe essere la seguente:
1. assegna ad n il valore 0
2. assegna ad s il valore 0
3. leggi un numero in input ed assegnalo ad a
4. incrementa di 1 il valore di n
5. somma a ed s ed assegna il risultato ad s
6. se n è minore di 5 vai al passo 3 altrimenti prosegui
7. dividi s per 5 ed assegna il risultato ad m
8. visualizza il valore di m.
9. fermati
Eseguendo in
sequenza le istruzioni del programma (che sono evidentemente molto
elementari), il calcolatore è in grado di risolvere il problema che
noi ci eravamo posti. Naturalmente l'algoritmo è espresso in lingua
italiana: per essere capito dal computer sarebbe stato necessario
tradurlo in linguaggio macchina (un linguaggio assai ostico ed
innaturale, basato essenzialmente sulla codifica binaria su cui il
computer è in grado di operare). Il linguaggio macchina ed il nostro
linguaggio naturale sono estremamente distanti fra di loro: quest'ultimo
pieno di ambigue sfumature, estremamente coinciso e criptico il
primo; per raggiungere un buon compromesso tra le due parti che si
devono comprendere (noi e la macchina) sono stati progettati
numerosi linguaggi di programmazione ad alto livello, ovvero un
insieme di parole chiave e di regole sintattiche, non troppo
distanti dal nostro linguaggio naturale, ma facilmente traducibili
(in modo automatico, mediante un programma chiamato compilatore) in
istruzioni di linguaggio macchina.
Ogni programma per un calcolatore elettronico, utilizza la logica ed
i concetti espressi (in estrema sintesi) nei paragrafi precedenti. È
bene saperlo, anche se magari non ci si troverà mai a dover scrivere
un programma, perché questo può aiutarci a capire che quasi sempre,
quando il calcolatore non esegue ciò che noi vorremmo, a meno di
guasti hardware non è lui che sbaglia, ma siamo noi ad aver fornito
delle istruzioni incomplete o fuorvianti che non lo portano a
raggiungere la soluzione cercata.
|