Calcolatore (3) - Software
Hardware e software: una breve sintesi
Il
"cervello" del calcolatore è costituito oltre che dalla
CPU [che esegue calcoli aritmetici elementari e confronti tra
numeri codificati in bit, trasferisce dati dalle celle di memoria nei
registri di lavoro,
:
calcolatore(1)] da una parte di circuiti dedicati solo
alla memorizzazione (memoria centrale).
La memoria centrale si distingue in:
ROM
(read only memory: memoria di sola lettura),
insieme di celle di memoria in cui sono contenute informazioni che ha
inserito il costruttore e che l'utente non può modificare (ad
esempio istruzioni in linguaggio macchina per effettuare particolari
calcoli aritmetici, per riconoscere i dischi introdotti dall'utente,
per far comparire al momento dell'accensione alcune informazioni sullo
schermo,
), e in:
RAM
(random access memory: memoria a cui si può
accedere liberamente), insieme di celle di memoria in cui
(durante l'esecuzione di un programma o in seguito a opportuni comandi
inviati dall'utente) possono essere memorizzati temporaneamente dati,
programmi,
.
Per immagazzinare dati, programmi,
senza ingombrare permanentemente la RAM del calcolatore (o per
far lavorare il calcolatore su insiemi di dati che non starebbero
tutti contemporaneamente nella RAM), per memorizzare informazioni da
usare più volte sullo stesso calcolatore o su altri dello stesso
tipo o analoghi,
si ricorre ad altri supporti per la
memorizzazione (floppy disk - dischetti
magnetici flessibili -, hard disk - dischi rigidi -,
) sui
quali possono essere registrate (e lette) con tecniche opportune,
mediante dispositivi azionati dal calcolatore, sequenze di bit di
varia lunghezza. In genere questi supporti sono
indispensabili in quanto la RAM si "azzera" automaticamente
allo spegnimento del calcolatore.
Più
personal computer possono essere collegati in rete, cioè
collegati via cavo in modo da poter mettere in comune dati, programmi,
risorse (ad esempio una stampante).
L'insieme
dei programmi in linguaggio macchina che il calcolatore impiega per
gestire programmi traduttori, per comunicare con unità
periferiche (stampanti, supporti di memorizzazione,
), per
utilizzare al meglio la RAM,
viene detto sistema operativo. Esso risiede in parte permanentemente tutto nella ROM; una gran parte, in genere,
viene inserita nella
RAM mediante un'unità periferica quando si inizia ad impiegare
il calcolatore (ciò viene fatto automaticamente se il sistema è
registrato sul disco fisso).
I
sistemi operativi più diffusi (al momento) sono
Windows (PC Ibm-compatibili, a volte chiamati solo PC), il Mac-OS (PC Macintosh) e Linux (sia su PC che su Macintosh).
Una
sequenza di informazioni registrata (in forma codificata) nella RAM o
su un disco o su altri supporti di memorizzazione sotto un nome
specifico (il formato del quale dipende in parte dal sistema operativo
impiegato) viene detta file (termine
inglese il cui significato originale è "archivio"); ad
esempio un file può essere costituito da una successione di dati
numerici, da un programma, da un testo, da una rappresentazione
grafica ,
La
misura della memoria di solito viene espressa mediante un'unità
pari a 210 (=1024) byte [
], detta kilobyte
(e indicata con KB o, più in breve, K) poiché 1024 ≈ 1000.
Per quantità maggiori si ricorre ai Megabyte: 1 MB = K2 ≈
1 milione di byte (nota: si usa KB invece di kB in quanto con
la k minuscola si indicherebbero esattamente 1000 B).
La
struttura fisica del calcolatore (cioè l'insieme dei dispositivi
meccanici, elettrici, magnetici ed elettronici che lo compongono)
viene detta hardware (termine inglese il cui
significato originale è "ferramenta"; è derivato
da "hard" = "duro" e "ware" = "oggetto"
per indicare letteralmente una "collezione di oggetti duri"),
mentre i programmi vengono indicati con il termine software
(neologismo, cioè nuova parola, che significherebbe
letteralmente "collezione di oggetti molli").
Alla voce
calcolatore(2) abbiamo già considerato sia i programmi redatti in linguaggi evoluti, sia i programmi in
linguaggio macchina ottenibili dai precedenti mediante un processo di compilazione. Fanno
parte del software (in quanto non sono altro che programmi in linguaggio macchina) anche il sistema operativo e altri programmi che
hanno lo scopo di facilitare l'uso del sistema operativo o la ricerca
di documenti o l'individuazione e l'eliminazione di "virus"
o
Abbiamo già osservato che, oltre agli ambienti di programmazione (con cui si possono creare nuovi programmi), vi sono programmi in linguaggio macchina per realizzare e memorizzare testi, disegni, collezioni di dati,
.
Ambienti di programmazione e programmi d'uso generale come questi vengono chiamati anche
applicazioni e i file (programmi, testi, disegni,collezioni di dati,
)
creati e leggibili mediante essi vengono detti documenti.
Varie applicazioni sono presentate qui.
Sono applicazioni anche i browser, ossia i programmi per leggere e attivare i collegamenti presenti in ipertesti come questo. Funzionano per vari aspetti in modo simile a un programma traduttore: interpretano un documento sorgente scritto in un opportuno linguaggio, l'HTML, e producono come output testi, immagini e suoni.
I fogli elettronici
I linguaggi di programmazione sono lo strumento tipico per automatizzare
procedimenti di calcolo. Esistono però anche altre applicazioni
che possono essere utilizzate al loro posto.
Ad
esempio i fogli elettronici (spread sheet). Ne
esistono numerosi tipi, ma tutti con un funzionamento abbastanza simile, senza particolari differenze nelle prestazioni tra i prodotti a pagamento e quelli "freesoftware" (liberamente utilizzabili, presenti nei CD allegati a riviste informatiche o "scaricabili" via Internet) o "sharesoftware" (provabili
per un po' di tempo, dopo il quale si è "invitati" a
inviare una certa somma di denaro al produttore, ottenendo in cambio
in genere una versione più estesa).
I
fogli elettronici sono applicazioni che permettono di
preparare, elaborare (e rappresentare graficamente) tabelle di dati
simili alla seguente, relativa alla scuola secondaria
superiore già considerata alla voce
grafi. Nelle celle (A1, B1,
, A2, B2,
)
si possono mettere costanti numeriche, costanti stringa o
espressioni come quella nella cella A7, che, nell'uso, vengono
chiamate formule.
La "formula" in A7 va interpreta come un'assegnazione:
PONI A7 = A1-D1-C2+D2, che in questo caso equivale ad assegnare alla cella A7 il valore 181-36-126+35 (in alcuni fogli elettronici invece di "="
occorre utilizzare un simbolo differente).
| a.a. 1997/98 | a.a. 1998/99 | |||||||||||||||||||||||||||||||||||||||
| totale iscritti | ripetenti | totale iscritti | ripetenti | |||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||
| classe 1a | ||||||||||||||||||||||||||||||||||||||||
| classe 2a | ||||||||||||||||||||||||||||||||||||||||
| classe 3a | ||||||||||||||||||||||||||||||||||||||||
| totale iscritti | ripetenti | totale iscritti | ripetenti | |||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||
| classe 1a | ||||||||||||||||||||||||||||||
Le variabili A1, D1,
impiegate in queste
assegnazioni, a differenza di quelle impiegate nei linguaggi di programmazione, non sono dei nomi generici (a cui, nel corso della traduzione in linguaggio macchina, vengono assegnate delle celle di memoria), ma nient'altro che le coordinate delle celle della tabella. Esse rappresentano il valore numerico della cella o il valore associato alla cella da un'altra assegnazione.
I dati da elaborare non vengono introdotti mediante istruzioni di input, ma devono essere battuti direttamente nelle varie celle della tabella. Se ci si accorge che si è sbagliata la
battitura di un dato o se, comunque, si vuole cambiarlo, basta
posizionarsi sulla cella (con il mouse o con i tasti direzionali)
e ribatterlo: automaticamente vengono ricalcolati e modificati anche i
valori delle celle A7 e A8.
In un ambiente di programmazione le
assegnazioni vengono eseguite (a meno di "GOTO
" o altre istruzioni che cambino il flusso dell'esecuzione)
secondo l'ordine con cui compaiono nella finestra di lista.
Il foglio elettronico, invece, ogni volta che si modifica una cella ricalcola tutti i valori.
Con opportuni comandi (con la tastiera o il mouse) si possono selezionare delle celle, memorizzarne il contenuto e riprodurlo in
altre celle. Se si tratta di una costante, essa viene riprodotta tale e quale; se è una formula, può essere riprodotta in forma modificata.
Ad esempio nella tabella precedente la formula in A8 (abbandoni tra 2a e 3a)
non è stata battuta direttamente: è stata selezionata la
cella A7 (abbandoni tra 1a e 2a) e se ne è
riprodotto il contenuto in A8. Nella riproduzione la formula
è stata automaticamente modificata; poiché
rispetto ad A7 ci siamo spostati in basso di un posto,
automaticamente le variabili vengono modificate in modo da riferirsi a
celle tutte abbassate di un posto:
A1 viene trasformata in A2, C2 in C3,
, cioè =A1-D1-C2+D2 viene trasformata in =A2-D2-C3+D3. Nello stesso modo possiamo trovare
automaticamente
le espressioni che rappresentano gli abbandoni negli anni successivi.
Se davanti a una "coordinata"
metto $, essa non viene variata durante la riproduzione. Ad es. se in
B7 e C7 metto, rispettivamente, il numero dei maschi iscritti in 1a nel 1997/98 e quello delle femmine iscritte, e in B8 metto la formula =B7/$A1*100, viene
calcolata e associata a B8 la percentuale degli iscritti maschi. Se
seleziono e ricopio B8 in C8 viene
registrata in D8 la formula =C7/$A1*100, che rappresenta la percetuale delle femmine. Se non avessi "$" davanti ad A1 ricopiando in C8 avrei invece ottenuto =C7/B1*100, che non avrebbe rappresentato la percentuale delle femmine.
Con
una formula di assegnazione si possono effettuare calcoli riferiti
anche a insiemi di celle. Ad esempio se volessi
calcolare il totale degli iscritti nelle 5 classi della scuola, potrei mettere in una qualunque cella libera, ad
esempio in A6, la formula di assegnazione
Comunque anche tabelle come queste sono facilmente elaborabili con Javascript: vedi qui ed esegui (per trovare quanto sopra trovato nelle righe 7 e 8):
a=[181,146,245]; b=[81,38,48]; c=[154,126,140]; d=[36,35,37]
document.write(a[0]-d[0]-c[1]+d[1]," ", a[1]-d[1]-c[2]+d[2])
Ottieni 54 8
I programmi per il calcolo simbolico (perché usarli? e perché usare le calcolatrici)
Con
le calcolatrici tascabili (CT), anche con quelle incorporate nei cellulari, si possono svolgere le 4 operazioni e calcoli più
complessi (elevamenti a potenza, radici quadrate e altre funzioni)
in frazioni di secondo, mentre a mano per gli stessi calcoli si
impiegherebbe molto più tempo e sarebbe facile commettere piccoli
errori di distrazione (dimenticare uno zero o un riporto, scrivere o
leggere male una cifra, interpretare male un incolonnamento,
)
e ottenere risultati molto diversi da quelli corretti.
Ormai da molti decenni, la capacità di eseguire
a mano velocemente complicati calcoli aritmetici non è più
considerata una abilità intellettuale
particolarmente significativa. E in effetti richiede soltanto un po'
di addestramento a svolgere alcune attività di tipo meccanico,
che non a caso sono alla portata di dispositivi molto elementari, poco
più complessi di un contagiri.
Fino
a qualche decennio fa per certi calcoli (ad esempio per le radici
quadrate e per gli elevamenti a potenza) si usavano delle tavole
numeriche che elencavano una grande quantità di input e i
relativi output. Fino a qualche anno fa, in molti libri scolastici
sono sopravvissute tavole simili, per calcoli di questo tipo o per
altri calcoli che affronteremo più avanti (funzioni
trigonometriche, logaritmi, funzioni di tipo probabilistico,
) e alcuni insegnanti vietavano
l'uso delle CT in classe: la scuola a volte recepisce
in ritardo i cambiamenti nella cultura e nelle professioni.
Ciò
che è importante culturalmente e operativamente,
per usare correttamente e consapevolmente le CT, è:
capire,di
fronte a una situazione problematica, quali calcoli occorre
svolgere per risolverla (è inutile saper fare velocemente
divisioni e moltiplicazioni se non si sa come affrontare il calcolo di
una percentuale);
saper stimare
l'ordine di grandezza ed eventualmente qualche cifra
significativa del risultato, sia attraverso calcoli approssimati, sia
facendo considerazioni legate alla situazione (se dobbiamo determinare
l'altezza di un palazzo ci aspettiamo che il risultato sia di poche
decine di metri, nel caso dello spessore di un foglio di carta ci
aspettiamo una misura vicina al decimo di millimetro); ciò serve
sia a fare valutazioni nei casi in cui si devono compiere delle scelte
in tempi rapidi, sia a controllare le uscite della CT (un tasto
mal premuto può dar luogo a risultati errati);
conoscere
le possibilità e i limiti della CT in modo
da impostare correttamente i calcoli e da interpretarne le uscite.
| Possiamo
fare considerazioni analoghe per i programmi per il
calcolo simbolico (applicazioni impiegate per automatizzare calcoli matematici che, tra i loro sottoprogrammi, ne hanno
alcuni destinati alla effettuazione di calcoli simbolici). Essi svolgono in pochissimo tempo (frazioni di
secondo) calcoli che a mano richiederebbero molto più tempo e che
sarebbe facile sbagliare per errori di distrazione. E in genere, come abbiamo già osservato, sono integrati in programmi più generali che consentono anche di fare grafici ed elaborazioni numeriche, permettendoci di combinare varie tecniche risolutive (e di controllare meglio ciò che stiamo facendo). Vari sono accessibili da qui. Fra questi vi è WolframAlpha, versione gratuita del software, specializzato per attività matematiche più complesse, Mathematica. Ecco a lato, per esempio, che cosa si ottiene introducendo | ![]() |
Fino a qualche anno fa era importante che un matematico o un fisico (e, in
parte, un ingegnere) avesse un buon allenamento nello svolgere calcoli di tipo simbolico, anche se,
a dire il vero, nella sua attività non avrebbe mai incontrato i calcoli "complessi"
che venivano proposti come esercizi in molti libri di scuola:
un
matematico e un fisico si trova spesso di fronte a formule che è
difficile trasformare perché vi entrano in gioco funzioni
particolari, più "strane" delle radici quadrate e
degli elevamenti a potenza, non perché siano formule lunghe, a
numerosi "piani", con tante lettere combinate in modi
intricati, come accade negli esercizi di cui abbiamo parlato.
L'impiego
delle applicazioni per il calcolo simbolico ha diminuito l'importanza
di questo allenamento. A maggior ragione, fra qualche anno (quando i
mezzi di calcolo saranno ancora più diffusi e di più piccole
dimensioni) i pochi che nella vita si troveranno ad
avere a che fare con calcoli simbolici di una certa complessità,
non avranno da affrontarli a mano: le parti più meccaniche le
demanderanno a un computer. Sarà invece importante
che essi sappiano:
descrivere
situazioni mediante opportune formule;
leggere un
termine o una formula (la sua articolazione in sottotermini,
), conoscere le nozioni di base del calcolo simbolico
(scegliere le regole di riscrittura da applicare, trovare le funzioni
inverse e tener conto dei loro insiemi di definizione,
);
queste abilità sono utili sia per lo svolgimento dei semplici
calcoli simbolici che ricorrono frequentemente nelle attività
scientifiche, sia per scegliere comandi, sottotermini,
usando un programma di calcolo simbolico per scrivere e elaborare una
certa espressione;
conoscere
le modalità d'uso e il funzionamento dell'applicazione per
il calcolo simbolico impiegata.
Questi
sono i motivi per cui in tutto il mondo nella scuola viene dato molto meno "peso"
all'addestramento al "calcolo letterale". Del
resto chi proseguirà gli studi in facoltà scientifiche
raramente avrà a che fare con calcoli simbolici complessi. In
genere gli studenti che nella scuola superiore hanno avuto un
insegnamento della matematica che ha investito più tempo in
attività di questo genere a scapito di attività meno
"meccaniche" sono quelli che, negli studi universitari,
incontrano maggiori difficoltà.
Un aspetto a cui è importante prestare attenzione è che, a seconda del linguaggio formale impiegato,
può cambiare il modo in cui descrivere un termine. Ad esempio
possono cambiare le convenzioni sull'ordine in cui vanno calcolate le
diverse operazioni (possibilità di usare scritture a più
piani, esplicitazione o meno del simbolo di moltiplicazione, rispetto
di una "gerarchia",
), i nomi usabili come
variabili, i simboli e i modi in cui indicare le costanti e le
funzioni,
.
Ad esempio per introdurre x·2 (cioè x×2) in alcuni software devo introdurre 2*x, in altri posso introdurre 2x, in altri 2 x;
in alcuni viene interpretato in questo modo anche x2, in altri x2 viene intrepretato come x². Differenti possono essere anche i nomi di funzione: SQR o sqrt per la radice quadrata, x^n o pow(x,n) per x alla n, ...
Clicca dati-variabili-termini per uno script per la scuola di base