Ogni problema di elaborazione d'informazione è caratterizzato da un insieme di dati di partenza e da un risultato ricercato, e ogni soluzione è una procedura che genera un risultato sulla base dei dati indicati. Ogni essere umano risolve quotidianamente problemi, pur senza essere in grado di descrivere quale procedura attua per giungere alla soluzione. Si pensi di dover spiegare a un altro soggetto, che non sa come si risolve il problema, il procedimento di soluzione da noi impiegato. Si deve allora procedere in fasi distinte e successive:
analisi del problema e identificazione di una soluzione da parte del primo soggetto;
descrizione della soluzione, da parte del primo soggetto, in termini comprensibili per il secondo soggetto;
interpretazione della soluzione da parte del secondo soggetto;
attuazione della soluzione da parte del secondo soggetto.
I calcolatori sono impiegati generalmente come esecutori di soluzioni che esseri umani hanno identificato e descritto. L'uomo per giungere alla descrizione della soluzione di un problema che sia accettabile per un esecutore, deve scomporre il problema in sottoproblemi, e questi in ulteriori sottoproblemi e cosi via, fino a giungere a problemi elementari. La soluzione di ognuno di questi problemi primitivi corrisponde a un'azione elementare che può essere compiuta da un esecutore. Risolvere il problema di partenza equivale quindi a risolvere un'opportuna successione di problemi più semplici. Una volta che tutti i sottoproblemi sono elementari rimane da fissane l'ordine di soluzione e il modo in cui un problema utilizza i risultati dei problemi che lo precedono.
La soluzione di un problema si definisce effettiva allorché:
l'esecutore è in grado di interpretare la descrizione di tale soluzione, e quindi di associare ad essa le azioni che deve compiere per eseguirla;
l'esecutore è in grado di compiere tali azioni, completando l'esecuzione in un tempo finito.
L'esecutore è quindi caratterizzato da:
il linguaggio che è in grado di interpretare (con cui devono essere descritte le soluzioni che si vuole che esso esegua);
dalle azioni che è in grado di eseguire;
dall'insieme delle regole che a ogni costrutto linguistico associano le relative azioni da compiere.
Normalmente tra essere umani la soluzione ad un problema viene descritta in termini informali, che possono diventare però ambigui e quindi interpretabili. Tale ambiguità si manifesta quando due soggetti che giudicano come effettiva la stessa soluzione al problema compiono poi, di fatto, azioni che producono risultati differenti. Per rimuovere questa ambiguità, gli elementi che caratterizzano un esecutore devono essere definiti in modo formale.
Il linguaggio che l'esecutore è in grado di interpretare deve essere definito in termini formali;
l'insieme delle azioni che l'esecutore è in grado di compiere deve essere univocamente definito, e l' esecuzione di una stessa azione deve produrre sempre lo stesso risultato;
l'insieme delle regole d'associazione tra costrutti del linguaggio e azioni deve essere univocamente definito.
Le soluzioni effettive per esecutori caratterizzati formalmente , sono chiamati
algoritmi.
Quando l’esecutore è un calcolatore gli algoritmi vengono detti
programmi, e il linguaggio formale impiegato nella loro descrizione viene chiamato
linguaggio di programmazione.
Tutto quanto riportato in questa pagina è a puro scopo informativo personale. Se non ti trovi in accordo con quanto riportato nella pagina, vuoi fare delle precisazioni, vuoi fare delle aggiunte o hai delle proposte e dei consigli da dare, puoi farlo mandando un email. Ogni indicazione è fondamentale per la continua crescita del sito.