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, la maestra pressappoco ci insegnava:

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, perciò quando si studia l'informatica sembra che il concetto di algoritmo sia qualcosa di completamente nuovo.

 

Il termine 'algoritmo' ha oggi ampliato il suo significato per comprendere insieme al calcolo qualsiasi regola per ottenere dati, ad esempio si hanno 'algoritmi di ricerca', 'algoritmi di ordinamento', 'algoritmi grafici', algoritmi per la scrittura ecc. Queste ultime funzioni si capisce bene che hanno poco a che fare con la matematica.

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

- Le istruzioni,
- Le dichiarative.

Soltanto la prima parte contiene le istruzioni dell'algoritmo mentre le dichiarative determinano i campi con cui le istruzioni operano (vedi anche risposta 39).

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 perché non esiste.

Il caso a) è comune nelle aziende, nelle banche e nelle istituzioni (vedi risposta 38). 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.


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, 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.

 

 

anno 2008

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 i programmi. Vi possono risiedere infatti molti programmi anche di grande estensione. 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 nell'unitò centrale 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 deve essere elaborata viene trasferita dalla memoria virtuale in quella reale. Al termine dell'elaborazione la pagina viene riportata indietro.
Per ragioni di spazio nella memoria reale sono caricate solo alcune pagine per volta 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 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 non soltanto nella copiatura vera e propria della pagina da una memoria all'altra ma anche 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. Il carico di lavoro per il
programma loader (vedi risposta 120) diventa assai pesante. Sono stati trovati appositi algoritmi per ottimizzare l'oneroso lavoro conseguente alla paginazione il quale tende a rallentare l'esecuzione dei programmi.

 

 

 

anno 2008