implementazione
implementazione realizzazione attraverso un automa esecutore di operazioni ed espressioni formalmente definite. Il processo di implementazione di una procedura di calcolo può, in prima istanza, essere definito come il processo di realizzazione effettiva di una successione di operazioni preliminarmente definite. Risente, quindi, dei limiti di possibilità di memorizzazione dei dati e delle caratteristiche operative dell’automa che si utilizza; l’implementazione è perciò sempre differente dalla definizione teorica di una procedura perché risente della sua “materialità” e dei limiti e approssimazioni che questa comporta. L’utilizzo sempre più diffuso di elaboratori per l’esecuzione di calcoli ha portato a un’attenzione sempre maggiore a tale distinzione e allo sviluppo di tecniche per diminuire i limiti che ogni implementazione comporta. Tuttavia, lo sviluppo di potenti elaboratori con grandi quantità di memoria rende tale distanza tra formulazione teorica e implementazione sempre minore o quantomeno sempre più controllabile algoritmicamente.
Poiché ogni computer ha limiti di spazio di memoria fisica per la rappresentazione dei dati, a differenza dell’astrazione matematica che dispone di insiemi numerici infiniti, l’implementazione di una procedura di calcolo trasforma l’ambiente di calcolo teorico in cui è definito il problema da risolvere in un ambiente di calcolo numerico finito. Occorre, quindi, distinguere tra due diversi insiemi numerici: quello relativo all’ambiente di calcolo matematico sul quale si opera (per esempio, l’insieme dei numeri reali R) e quello relativo all’effettivo ambiente con cui l’automa opera, detto insieme dei numeri macchina (→ numero macchina), indicato anche con F (dall’inglese floating point). Pertanto, l’insieme F realizza una particolare implementazione dell’insieme R. Ciò comporta importanti conseguenze:
• la limitatezza dello spazio fisico di memoria, qualunque sia il modo in cui i numeri sono rappresentati, determina un numero finito s di cifre significative rappresentabili, legate alla proprietà chiamata comunemente precisione di macchina: maggiore è s tanto più è precisa la rappresentazione dei dati nell’automa;
• i calcoli sono effettuati attraverso un’aritmetica finita, i cui risultati dipendono fortemente dalla quantità di memoria a disposizione, la quale è caratterizzata da un numero massimo di cifre significative rappresentabili: se il numero di cifre da rappresentare è maggiore di quello dei posti a disposizione, alcune di esse inevitabilmente si perdono;
• gran parte delle implementazioni generano, quindi, errori di rappresentazione poiché danno una approssimazione del risultato, per arrotondamento o per troncamento (→ errore). Non si hanno invece approssimazioni se si considerano implementazioni relative a numeri interi definiti in un intervallo ragionevolmente contenuto;
• l’insieme F non è chiuso rispetto alle operazioni effettuate sui numeri macchina e in esso possono non valere le proprietà algebriche definite negli insiemi numerici matematici: non vale la proprietà associativa dell’addizione; non vale la proprietà associativa della moltiplicazione; non vale la proprietà distributiva della moltiplicazione rispetto all’addizione. Si può, infatti, generare un particolare errore detto overflow, in cui il risultato di un’operazione supera in valore assoluto il massimo numero rappresentabile dalla particolare implementazione o è minore del minimo numero in essa rappresentabile. Queste situazioni spesso si presentano utilizzando piccole calcolatrici tascabili prive della possibilità di rappresentare i numeri in notazione esponenziale (→ aritmetica finita (di macchina); → aritmetica in virgola mobile e fissa).