La parola algoritmo trae origine dal nome del matematico arabo medioevale: Al-Khawarizmi. In pratica con algoritmo si intende la procedura da compiere per eseguire un calcolo.

Il termine sembra un parolone che talora incute timore, quando invece l'algoritmo lo conoscono molto bene tutti coloro che hanno un minimo di istruzione. I primi algoritmi li abbiamo appresi addirittura alle scuole elementari. Ad esempio per sommare due numeri come 23 e 78, il maestro o la maestra pressappoco ci insegnava così:

1) Metti i due numeri in colonna
2) Somma le cifre della prima colonna di destra e scrivi il risultato
3) Se c'è un riporto aggiungilo alla colonna di sinistra, somma le cifre e scrivi il risultato finale.

I punti 1, 2 e 3 danno un semplice esempio di algoritmo. Nessuno ce l'aveva mai detto, percio' quando si studia l'informatica sembra che il concetto di algoritmo sia qualcosa di astruso.

Il termine algoritmo ha oggi un significato molto ampio per comprendere non solo le procedure di calcolo, ma qualsiasi regola per ottenere dati, ad esempio si hanno algoritmi di ricerca, algoritmi per trattare immagini, algoritmi per la scrittura ecc. Si capisce bene come queste operazioni hanno ben poco a che fare con la matematica.

L'algoritmo definisce un piano di lavoro, dunque il programmatore traduce un algoritmo mediante il linguaggio Fortran, il Pascal o altro. Nel gergo tecnico talora programma ed algoritmo sono sinonimi anche se ciò è inesatto perché il programma contiene due parti:

- Le istruzioni,
- Le dichiarative.

Soltanto la prima parte contiene le istruzioni proprie dell'algoritmo mentre le dichiarative determinano i campi per operare.

Quando un esperto software deve creare un programma ci sono due possibiità:

a) L'algoritmo gli viene illustrato con ogni dettaglio nelle specifiche di progetto,
b) L'algoritmo deve essere inventato dietro indicazioni succinte.

Il caso a) è comune nelle aziende, nelle banche e nelle istituzioni. Ad esempio una banca segue i calcoli dietro le accurate istruzioni della Banca Europea. Il caso b) è tipico dei centri di ricerca e dei centri di produzione di grandi o di piccole case.


Inventare un algoritmo non è cosa da poco e quando qualcuno ci riesce talora crea una azienda apposita per sfruttare l'idea. Questo succede specie in USA. In Italia dove i centri di ricerca sono scarsi e così pure la produzione di package software, il caso a) è di gran lunga più frequente rispetto a b). Questo fatto chiarisce come l'insegnante che introduce la programmazione come se questa dovesse essere sistematicamente una attività inventiva (comunemente si chiede di calcolare una funzione matematica), crea una prospettiva professionale sfasata nell'allievo. Gli studenti sono orientati a prendere l'eccezione - che è l'inventiva - come regola, di conseguenza hanno aspettative professionali squilibrate rispetto a quello che è il lavoro reale.

 

Indietro

151. Quali sono le origini dell'algoritmo?

152.Per cortesia una breve spiegazione della  paginazione.

In un computer la limitata estensione della memoria centrale rispetto all'enorme estensione delle memorie esterne appare evidente. Per fissare le idee prendiamo un personal computer con 40 Giga di hard disk e 1 Giga di RAM: la prima memoria è 40 volte maggiore della seconda. Gli esperti hanno pensato bene di sfruttare la memoria di massa per eseguire grandi programmi ed un maggior numero di programmi in parallelo. E per raggiungere questo obbiettivo hanno semplicemente trasferito l'intera organizzazione della memoria centrale sull'hard disk.

 

Poiché i programmi non sono eseguibili su disco, come funzionano le cose?

La memoria centrale reale e quella virtuale (su disco) vengono divise in pagine tutte uguali delle dimensioni di qualche Kbyte (es. 2 oppure 4 byte). Poiché la CPU lavora soltanto nella memoria centrale, la pagina che serve viene trasferita dalla memoria virtuale in quella reale. Al termine dell'elaborazione la pagina viene riportata indietro. Nella memoria reale sono caricate solo alcune pagine e non tutte quelle della memoria virtuale che è molto più vasta.

Prendiamo come esempio il programma A il quale si trova in testa alla memoria virtuale che lo contiene tutto. Causa gli spazi ridotti il programma A non viene copiato per intero nella memoria reale ma soltanto la pagina che contiene le istruzioni che in quel momento devono essere eseguite.
Una volta terminata l'esecuzione della pagina, questa viene ricopiata su disco. La pagina successiva della memoria virtuale viene portata nella memoria reale. Questa seconda pagina del programma A verrà posta non dove era l'altra, ma in un qualsiasi spazio libero della memoria reale. Elaborata la seconda pagina si passa alla terza e così via finché non viene elaborato tutto il programma A.

Il guadagno offerto dalla memoria virtuale in termini di occupazione è ben evidente. Il prezzo da pagare è il lavoro di page-in e page-out chiamato il italiano paginazione il quale viene affidato a speciali dispositivi hardware e ad alcune parti del Sistema Operativo.
La paginazione consiste nella copiatura vera e propria della pagina da una memoria all'altra e nella rilocazione degli indirizzi.

Infatti ogni operando contenuto nella pagina ha un suo indirizzo, grazie al quale viene rintracciato. Poiché la pagina viene messa in un posto libero qualsiasi della memoria reale, tutti i suoi indirizzi devono essere aggiornati in armonia al posto casualmente occupato nella memoria reale. Appositi algoritmi ottimizzano tale oneroso lavoro conseguente alla paginazione il quale rischia di rallentare l'esecuzione dei programmi.

 

 

Indietro

=