next up previous contents index
Next: Cosa è un linguaggio Up: Introduzione Previous: Introduzione   Indice   Indice analitico

Struttura di un calcolatore

Prima di avvicinarsi allo studio di un linguaggio di programmazione, è indispensabile avere una conoscenza perlomeno sommaria della macchina sulla quale si sta lavorando. Un calcolatore è un insieme di dispositivi hardware che può essere schematizzato tramite:

Il compito base di ogni calcolatore è quello di ricevere dei dati in ingresso, elaborarli secondo certi algoritmi1.1 e restituire un risultato. La fase della elaborazione compete alla CPU, la quale è in grado di eseguire solo operazioni molto semplici quali: ``leggi l'indirizzo X nella memoria centrale e copialo nell'indirizzo Y'', ``aggiungi 1 al dato contenuto nell'indirizzo Z'' e simili. Naturalmente ciascun processore ha a disposizione un set più o meno nutrito di operazioni elementari che esso può eseguire, ed è compito del sistema operativo interpretare i programmi che vengono eseguiti adattandoli alle esigenze del particolare processore sul quale esso lavora. Il sistema operativo si occupa inoltre di gestire le diverse periferiche di entrata/uscita dei dati.

In linea teorica è possibile scrivere qualunque programma basandosi esclusivamente sulle operazioni elementari che un processore può eseguire; tuttavia, essendo queste ultime molto semplici, è impensabile produrre del software sofisticato, come quello che quotidianamente utilizziamo nei nostri personal computers, con tale procedimento. Per avere una idea delle enormi difficoltà che si possono incontrare, basta provare a trovare un algoritmo che calcoli il seno di un angolo, operazione relativamente banale, utilizzando esclusivamente le quattro operazioni aritmetiche. Nasce allora l'esigenza di utilizzare dei programmi che svolgano per noi il lavoro più ``sporco'', cioè quello di tradurre concetti astratti, vicini all'intelligenza umana, in una terminologia molto semplice, che la macchina possa interpretare; tale ruolo di intermediario viene svolto dai linguaggi di programmazione.


next up previous contents index
Next: Cosa è un linguaggio Up: Introduzione Previous: Introduzione   Indice   Indice analitico
Claudio Cicconetti
2000-09-06