Next: Cosa è un linguaggio
Up: Introduzione
Previous: Introduzione
  Indice
  Indice analitico
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:
- CPU (central processing unit), il processore, che è il cuore elaborativo del calcolatore;
- memoria principale (main memory), la quale contiene tutti i dati sui quali lavora il processore e i programmi, insiemi di istruzioni basilari corrispondenti ai calcoli da effettuare su essi. Programmi e dati, pur essendo fondamentalmente diversi, sono contenuti indifferenziati nella memoria. Un modello mentale semplificato può essere il seguente: si pensi alla memoria centrale come ad un archivio i cui scompartimenti siano in qualche modo numerati (e.g. abbiano un indirizzo che li identifichi univocamente), nei quali sia a priori possibile conservare qualunque cosa. Nella realtà questo modello è evidentemente non efficiente: si pensi ad un ipotetico archivio di una segreteria scolastica, all'interno del quale vengano mano a mano inseriti indistintamente circolari ministeriali, certificati di iscrizione, compiti in classe e quant'altro debba essere archiviato; sarebbe ben duro per un impiegato di tale segreteria trovare un qualsivoglia documento. Tuttavia, nella memoria centrale di un calcolatore risulta più efficiente non distinguere qualitativamente il suo contenuto; tutte le macchine costruite secondo tale schema sono dette macchine di Von Neumann; esse costituiscono la quasi totalità dei computers prodotti e utilizzati;
- dispositivi di ingresso dati (input devices): mouse, tastiera, joystic, scanner sono solo alcuni dei più comuni dispositivi che permettono all'utente di fornire informazioni ad un personal computer;
- dispositivi di uscita dati (output devices), che nei comuni pc sono, ad esempio, monitor, videoproiettore, stampante, plotter;
- dispositivi di immagazzinamento dati (large storage units), i quali fungono sia da input che da output per il calcolatore; essi permettono infatti di salvare dati su dispositivi meccanici, magnetici, ottici, i quali potranno essere acceduti a piacimento secondo le modalità di funzionamento del singolo dispositivo. La struttura logica di essi è del tutto simile a quella della memoria centrale, salvo l'importante differenza che i dati memorizzati su floppy disk, hard disk, tape (alcuni delle più comuni unità di immagazzinamento delle informazioni) sono permanenti, cioè i dati sopravvivono allo spegnimento della macchina, al contrario dei dati contenuti nella memoria centrale, la quale è perciò detta volatile. Inoltre la memoria centrale è un dispositivo elettronico e quindi molto più veloce e molto più costoso dei normali dispositivi di salvataggio dati.
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: Cosa è un linguaggio
Up: Introduzione
Previous: Introduzione
  Indice
  Indice analitico
Claudio Cicconetti
2000-09-06