Calcolatore (3) - Software

#1  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.
    Un'applicazione (gratuita) utilissima per molte attività matematiche è R, a cui abbiamo accennato più volte in  calcolatore(2). Il suo uso è discusso ed esemplificato qui, oltre che in molti esercizi.  Altre 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. Per approfondimenti: .

#2  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/98a.a. 1998/99
  totale iscrittiripetentitotale iscrittiripetenti
 
ABCD
11818115436
21463812635
12454814037
…         …         …
7=A1-D1-C2+D2   
8=A2-D2-C3+D3   
classe 1
classe 2
classe 3
 
 
 

    Con opportuni comandi azionabili con la tastiera o il mouse si può far sì che sullo schermo la tabella passi dallo stato precedente a quello parzialmente riprodotto sotto, con la visualizzazione del valore assegnato alle celle contenenti formule.
A7 rappresenta gli abbandoni tra 1° e 2° anno: da A1 (ex iscritti al 1°) si tolgono D1 (ri-iscritti al 1°) e * (passati al 2°); * è uguale a C2 (totale iscritti al 2°) meno D2 (ripetenti). Analogamente A8 rappresenta gli abbandoni tra 2° e 3°.

  

  totale iscrittiripetentitotale iscrittiripetenti
 
ABCD
11818115436
…         …         …
754   
88   
classe 1
 
 
 

    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  =Sum(A1:A5). Infatti Sum(A1:A5) ha come valore la somma dei valori associati alle celle che stanno nel rettangolo di celle che va da A1 ad A5. Nel calcolo vengono saltate le celle del rettangolo che sono vuote (in alcuni fogli invece di "Sum"occorre impiegare un nome differente).
    Tra le varie altre applicazioni che si possono usare per manipolare dati organizzati in tabelle vi è R. Ecco qui come si potrebbero analizzare i dati precedenti.


 #3  I programmi per il calcolo simbolico
    Un altro tipo di applicazioni impiegato per automatizzare calcoli di tipo matematico è costituito dai programmi per il calcolo simbolico. Esistono sia applicazioni dedicate solo a tale attività, sia applicazioni impiegabili per molte attività di tipo matematico che, tra i loro sottoprogrammi, ne hanno alcuni destinati alla effettuazione di calcoli simbolici.  Pił avanti considereremo un sito internet da cui è possibile eseguire calcoli simbolici e scrivere facilmente formule a pił piani; ora, comunque, vediamo qualche esempio d'uso di una vecchia applicazione ideata nel 1988 per consentire lo svolgimento di queste attivitą.
    L'applicazione a cui accenniamo, di uso particolarmente semplice, è Derive (versione per Windows).
    Vediamo, ad esempio, come scrivere e trasformare A = πr2.
    Se scelgo Espressione dal menu Crea/Author o se "clicco" l'icona ("matita") ho la possibilità di scrivere (essere "autore" di) un'espressione. Nella finestra di dialogo che appare batto l'espressione seguente (e infine premo ):   A=pir^2
    pi viene usato per indicare pi greca. Non serve battere il segno di moltiplicazione: Derive, normalmente, usa come variabili singole lettere e quindi "comprende" che r è una nuova variabile (pi non viene interpretato come p*i in quanto pi è una parola "riservata"). Nella parte superiore dello schermo appare:

            2
#1:  a = π·r

 #4  Vediamo un esempio di manipolazione simbolica: come si può invertire la già considerata formula Ar2 per ricavare r in funzione di A. Evidenzio #1. Scelgo Algebricamente dal menu Risolvi. Appare una finestra di dialogo con visualizzata l'equazione "#1". In alternativa avrei potuto battere direttamente l'equazione nella finestra di dialogo. In un opportuno riquadro devo selezionare la variabile rispetto alla quale voglio risolvere l'equazione, cioè r. Se clicco su "OK" appare:

                  2
#2:  SOLVE(a = π·r , r)

    Se poi aziono Semplifica - Base ottengo la coppia di formule:

#3:  [r = a/π, r = - a/π]

    Queste si sarebbero potute ottenere direttamente se nella finestra di dialogo di Risolvi si fosse cliccato su "Semplifica" invece che su "OK" (nel caso in questione, se A è l'area del cerchio di raggio r, la soluzione r = - … non è significativa: r, in quanto misura di una lunghezza, non può essere un numero negativo). Se sei interessato ad approfondimenti, clicca qui.

 #5  Esistono anche applicazioni per scrivere espressioni matematiche, che non consentono però di effettuare calcoli simbolici. La figura seguente riproduce una fase della costruzione di una formula mediante il sottoprogramma per costruire formule di cui è dotato OpenOffice (un ambiente software d'uso gratuito che include numerose applicazioni per elaborare testi, immagini, dati, …). Con il mouse si possono attivare finestre che includono numerosi simboli (qui ne è visualizzata una), nelle quali si possono man mano selezionare i simboli con cui si vuole costruire la formula; in una finestra "comandi" appare la codifica della formula; in essa si possono sostituire ai "segnaposto" (<?>) variabili o costanti, introdurre delimitatori (parentesi graffe, in questa applicazione) per delimitare sottotermini o scrivere direttamente (senza ricorrere alle finestre di simboli) simboli di funzione; in un'altra finestra la formula appare visualizzata "a più piani" nella sua veste finale.

    Simboli matematici, anche molto complessi, possono essere scritti anche in R (vedi qui, "simboli nei grafici").

    Anche con questi applicazioni per scrivere una formula occorre padroneggiarne la struttura.

 #6  Perché usare la CT, perché usare programmi per il calcolo simbolico
    Con le CT 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: 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).
    Clicca qui per un semplice esempio d'uso di uno dei software matematici attualmente più diffusi: Maple.
    Software altrettanto diffuso è Mathematica, di cui esiste una versione gratuita accessibile da rete:  WolframAlpha  (puoi accedere ad esempi d'uso di questo software cliccando qui o o ricorrendo al link presente nella riga finale del documento a cui puoi accedere cliccando, in fondo a questa pagina, l'icona ).  Ecco a lato che cosa si ottiene introducendo, per esempio,  sqrt((x*(?+k)/8)).   
    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à.

 #7  Un aspetto a cui è importante prestare attenzione è che, a seconda del linguaggio formale impiegato (che in una stessa applicazione, come si è visto sopra per Derive, può dipendere dalle opzioni scelte) 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, …. Vediamo ad esempio le differenze per due particolari termini:

Ling.
usuale
R CT Basic Derive WolframAlpha
x·2 x*2 x*2 x*2 o x2 o x 2 2x o x*2 o x 2
sqrt(2+a) 2   SQR(2+a) sqrt(2+a) o
√(2+a)
sqr(2+a), sqrt(2+a)
o √(2+a)

Esercizi:

 altri collegamenti     [nuova pagina]     Considerazioni Didattiche