Oggigiorno siamo circondati da strumenti elettronici che ormai hanno un ruolo fondamentale nella nostra vita, basti pensare agli impianti stereo, lavatrici, forni a microonde, telefonini, televisori, e tantissimi altri beni di consumo.
Ciascuno degli apparecchi sopra menzionati possiede al suo interno un piccolo computer, con il quale interagiamo in modo spontaneo ed inconscio ogni volta che premiamo un tasto di controllo.
Allora perchè se parliamo di computer siamo presi da uno strano senso di soggezione e soffriamo di una sorta di complesso d'inferioritá?
Forse la risposta va cercata nell'idea che ci siamo fatti di tale utilissimo strumento: veniamo completamente bombardati da messaggi prodotti dalla visione distorta degli autori di libri o film di fantascienza, dove il computer é avvertito come una figura minacciosa, omnipresente, infallibile, ostile, sempre pronta a decidere, sostituendosi all'uomo in tutto.
Nulla di piú falso! Il computer é una macchina "vuota", gli inglesi direbbero "black box" (scatola nera), nella quale si inseriscono dati ed istruzioni per ottenere i risultati.
Chiunque, seguendo passo passo la lista delle istruzioni ed operando sui dati, otterrebbe gli stessi risultati! Peró il computer lo fa in modo incredibilmente veloce e soprattutto non risente della stanchezza fisica.
Il termine computer deriva dalla radice del verbo latino computas... quindi é un semplice e banale calcolatore, ovvero puó operare solo su numeri. Fondamentalmente é costituito da un insieme di circuiti elettronici organizzati in modo da rispondere ad una logica prevedibile. La natura della risposta puó essere modificata dall'utente servendosi di un opportuno software, traducibile in italiano con la parola "programma", ovvero di una lista di istruzioni che istruisce il computer su come desideriamo vengano processati i dati inseriti.
Spesso si sente dire che il computer non sbaglia mai, eppure a volte ci giunge qualche bolletta particolarmente salata, oppure otteniamo risultati errati, come é possibile?
Una macchina che non sa fare nulla se non opportunamente istruita dagli esseri umani, come puó commettere arbitrariamente un errore o puó sapere se la lista di istruzioni che sta eseguendo é quella giusta per ottenere il risulto atteso? Sicuramente l'errore é sempre commesso da un essere umano.
Se si riesce a scrivere un programma privo di errori, il computer lo eseguirá scrupolosamente quante volte desideriamo, ma la sua principale utilitá sta nel fatto che cambiando solo i dati, lasciando inalterato il programma, otterremo altri risultati. Con una calcolatrice invece avremmo dovuto reimpostare anche le istruzioni (operazioni).
Il computer é quindi una macchina multifunzionale, purché si sia in grado di tradurre in modo opportuno i dati e le istruzioni.
Mediante opportune convenzioni i computer possono gestire le lettere dell'alfabeto trasformandosi in una versatile macchina da scrivere, oppure permetterci di disegnare, giocare, sempre e solo operando su dei numeri!
Prima di approfondire l'interessantissimo argomento di cosa é possibile fare con un computer e come farlo, é necessario mettere in chiaro alcuni concetti importantissimi su com'é fatto e soprattutto in che modo funziona realmente un computer.
Solo possedendo la conoscenza di questi elementi basilari sará possibile comprendere pienamente le potenzialitá concrete di questo incredibile mezzo ed il perchè di alcune limitazioni tecniche o le convenzioni di un linguaggio come quello dell'ambiente dei computer, ricco di termini tanto coloriti quanto incomprensibili per i neofiti (e spesso persino per alcuni "esperti" del settore).
Ho giá detto che i computer possono solo operare su numeri, questo perchè furono creati per alleviare i calcoli statistici o scientifici. Ai primi che si cimentarono nella loro realizzazione si pose un grosso dilemma come rappresentare i numeri, in particolar modo quelli interi che sono i piú comunemente usati.
Dovendo essere una macchina elettrica poteva convenire associare a ciascun numero un'opportuna differenza di potenziale. Per esempio 1 Volt per "1", 10 Volt per "10", e cosí via. Come é facilmente intuibile tale scelta porta inevitabilmente ad un insuccesso, cosí si pensó di sfruttare solo la presenza o l'assenza di corrente, indicandoli rispettivamente con 1 e 0.
Con tale tecnica peró é possibile rappresentare soli due numeri 0 e 1, quindi é necessario ricorrere a qualche artificio matematico per rappresentare anche gli altri rimanenti numeri da 2 a 10. Tutto ció perchè noi siamo abituati ad adoperare un sistema numerico a base 10, noto con il nome di sistema decimale.
Prendiamo un qualsiasi numero intero, per esempio 124. Per rappresentarlo usiamo i simboli da 0 a 9, ad ogni posizione attribuiamo un peso: unitá, decine, centinaia, ecc... Quindi il numero 124 non é altro che 1 centinaia, 2 decine e 4 unitá.
In molti sostengono che abbiamo adottato il sistema decimale solo perchè abbiamo 5 dita per mano ed i nostri antenati hanno trovato tale sistema molto comodo. Allora se consideriamo il computer come se fosse dotato di un solo dito, possiamo sviluppare su questo concetto un sistema numerico a base 2, detto sistema binario.
Quindi, per esempio, 1001 significa:
1 x 2^3 + 0 x 2^2 + 0 x 2^1 + 1 x 2^0 = 8 + 0 + 0 + 1 = 9.
Il sistema binario ci fornisce un metodo per rappresentare tutti i numeri interi servendoci di soli due simboli: 0, 1.
Comunque qualsiasi sistema numerico sul quale non si possano svolgere operazioni aritmetiche é inservibile. Fortunatamente (prodigi della matematica!) il sistema binario funziona esattamente come il sistema decimale, ed é quindi possibile svolgere le 4 operazioni fondamentali, piú altre definite logiche: AND, OR, EOR (XOR).
Abbiamo detto che qualsiasi numero puó essere espresso come una sequenza di zero ed uno, ma allora come fa il calcolatore a sapere quante cifre sono usate? Questo concetto é stato fissato al momento della progettazione, ed é immodificabile.
Dovendo svolgere delle operazioni aritmetiche o logiche é necessario che tutte le sequenze abbiano lo stesso incolonnamento, quindi l'unitá di calcolo prima di fare qualsiasi altra operazione dovrebbe provvedere al corretto incolonnamento, compito molto laborioso da "far capire" ad una macchina! Per questo si é deciso di fissare un unitá base ed operare sui multipli quando sono richiesti valori piú grandi.
L'unitá fondamentale é il byte, costituito da una sequenza di 8 bit (Binary digIT) o simboli base.
Unendo due byte si ottiene una word ovvero una "parola" da 16 bit ed ora, con il progresso delle tecnologie attuali, si é giunti ad accoppiare due word ottenendo 32 bit: questo valore secondo alcuni si chiama longword, secondo altri semplicemente word, in fondo l'importante é che i computer sappiano come gestirle.
Cosí facendo in un colpo solo si sono risolte molte problematiche.
Tuttavia ció risolve solo il caso dei numeri interi, per quelli decimali dove é impossibile determinare una quantitá finita di cifre necessarie al calcolo (é il caso dei numeri irrazionali), si é costretti a ricorrere a sequenze di byte di lunghezza diversa e per limitare i danni si ricorrono ad artifici tipo leggere una lunghezza prefissata scartando momentaneamente i simboli in eccesso mediante le operazioni logiche. Questo sistema di calcolo detto Floating Point o "a virgola mobile" offre purtroppo lo svantaggio di una estrema lentezza.
Abbiamo visto quindi che con i numeri interi il problema é stato egregiamente risolto, ma con le lettere?
La trovata é banalmente geniale: a ciascuna lettera, simbolo di interpunzione e cifra si associa un numero intero contenuto in un byte, sará il programma stesso a dire alla cpu come interpretarlo!
Il sistema di codifica oggi universalmente riconosciuto é l' ASCII
.
Gli attuali computer sono costruiti impiegando componenti standard come: cpu, bus, ram, periferiche.
La Central Processing Unit, che da ora in poi chiameremo semplicemente CPU
, é la vera mente di tutto il calcolatore. Nei Personal Computer é realizzata su di un singolo componente integrato, di solito denominato microprocessore.
Il mercato é pieno di ottimi processori, anche se la maggior parte della gente sente parlare solo del PENTIUM
, ed ignora l'esistenza degli ottimi processori della serie 680X0
della Motorola.
Le informazioni viaggiano da e per la cpu lungo il BUS, che rappresenta una sorta di autostrada che collega tutte le parti che costituiscono il sistema.
Il numero di corsie presenti sono indicate con un numero di solito seguito dalla parola di bit, infatti rappresenta quanti bit possono essere trasmessi contemporaneamente (uno per ciascuna corsia), e come per tutte le corsie stradali, piú ce ne sono meglio é!
Principalmente il traffico é localizzato lungo l'arteria (continuando il parallelismo bus-autostrada) CPU-Memoria, che rappresenta il naturale magazzino delle informazioni. La memoria si misura in Megabyte, e la si classifica in tre categorie principali: RAM, ROM, di massa.
Nella prima é possibile leggere e scrivere, nella seconda si puó solo leggere e solitamente contiene il FIRMWARE
, e su alcuni computer come l'Amiga la maggior parte del Sistema Operativo.
La memoria di massa é di tipo secondario, cioé é notevolmente piú lenta sia della ROM e sia della RAM; costa relativamente poco, é quasi permanente, perció é destinata a contenere i dati che non devono essere elaborati al momento, o per memorizzarli prima dello spegnimento del computer. Infatti togliendo la corrente la RAM perde il suo contenuto, quindi é buona norma salvare su disco (floppy disk, hard disk o CD-rom: ecco cos'é la memoria di massa!) il lavoro man mano che lo si esegue e non solo quando lo si é terminato: in caso di blackout si perde tutto ció che non é stato salvato!
Di solito le memorie di massa sono catalogate tra le periferiche, come il monitor, la stampante o il modem, tuttavia sono elementi a dir poco essenziali per un computer.
Tutte queste informazioni vengono coordinate dal Clock: un pezzo di quarzo purissimo in grado di oscillare se percorso da corrente, che genera cosí lungo il bus delle pulsazioni (lo possiamo immaginare come il cuore del sistema) sulle quali la cpu si sincronizza e con lei il resto del computer.
La velocitá delle oscillazioni si misura in Hertz e suoi multipli: chissá quante volte abbiamo giá sentito questo termine usato, magari in modo improprio, per valutare la velocitá di un computer rispetto ad un'altro.
L'attuale generazione di Pentium viaggia sui 500MHz, mentre il bus é a soli 100MHz (se non addirittura a 66MHz su alcuni sistemi), quindi il processore é in grado di elaborare le informazioni piú rapidamente di quanto possa spostarle. E' evidente che cosí si é creato un collo di bottiglia che rallenta notevolmente il sistema!
Per superare questo "problemino" si é resa necessaria l'adozione della memoria cache di 2° livello, di solito da 256K a 2Mb, che serve solo come soluzione parziale a questo inconveniente. La cache altro non é che una costosissima RAM capace di reggere i ritmi del processore facendo da deposito e raccordo tra questo ed i dati provenienti dal bus e destinati al processore. Bisogna considerare che all'interno di tutti gli attuali processori giá é presente una piccolissima memoria con il compito di cache di 1° livello che, evidentemente, ai Pentium e derivati non basta!