Programmazione imperativa
![Niente fonti!](http://upload.wikimedia.org/wikipedia/commons/thumb/6/64/Question_book-4.svg/45px-Question_book-4.svg.png)
In informatica, la programmazione imperativa è un paradigma di programmazione secondo cui un programma viene inteso come un insieme di istruzioni (dette anche direttive o comandi), ciascuna delle quali può essere pensata come un "ordine" che viene impartito alla macchina virtuale del linguaggio di programmazione utilizzato. Da un punto di vista sintattico, i costrutti di un linguaggio imperativo sono spesso identificati da verbi all'imperativo, per esempio:
1: read i 2: print i 3: goto 1
(letteralmente: leggi i, stampa i, torna al punto 1).
L'approccio imperativo è l'approccio dominante in programmazione. Nello studio dei linguaggi di programmazione, si definisce il concetto di paradigma di programmazione, ovvero un insieme di regole e strutture che definiscono un tipo di linguaggio basandosi esclusivamente sulle sue strutture, e quindi non sulle sue caratteristiche peculiari legate all'implementazione dello stesso (es. le parole chiave). Sono di tipo imperativo la grande maggioranza dei (sotto-)paradigmi di programmazione (per esempio la programmazione procedurale, la programmazione strutturata, la programmazione orientata agli oggetti e così via) e la grande maggioranza dei linguaggi (per esempio ALGOL, Ada, BASIC, Fortran, Pascal, PHP eccetera).
Descrizione
![](http://upload.wikimedia.org/wikipedia/commons/thumb/d/d6/JohnvonNeumann-LosAlamos.jpg/150px-JohnvonNeumann-LosAlamos.jpg)
La programmazione imperativa viene generalmente contrapposta a quella dichiarativa, in cui un programma consiste in un insieme di "affermazioni" (non "ordini") che la macchina virtuale del linguaggio è (implicitamente) tenuta a considerare vere e/o rendere vere. Un esempio di paradigma dichiarativo è la programmazione logica.
Le caratteristiche essenziali della programmazione imperativa sono strettamente legate all'architettura di von Neumann. Brevemente, possiamo definirla come una architettura costituita da due componenti fondamentali:
- memoria (componente passiva)
- processore (componente attiva)
La principale attività del processore è eseguire calcoli e assegnare valori (svolge quindi un ruolo attivo) a celle di memoria (che è quindi passiva). Si denoti a questo proposito anche il concetto di variabile come astrazione logica di una cella di memoria.
Linguaggi per la programmazione imperativa
I linguaggi sviluppati per la programmazione imperativa sono nati più per la manipolazione numerica che per quella simbolica, e adottano uno stile prescrittivo, ovvero uno stile in cui tutte le operazioni da compiere sono già state previste all'interno del programma stesso. L'ordine di esecuzione è formalmente top-down, e quindi l'azione si svolge in maniera del tutto sequenziale (con l'eccezione delle strutture di controllo che possono frammentare l'azione).
Un programma, che secondo il paradigma imperativo è una unione di istruzioni e dati, è strutturato in:
- una parte dichiarativa in cui si dichiarano tutte le variabili del programma e il loro tipo;
- una parte che descrive l'algoritmo risolutivo utilizzato, mediante istruzioni del linguaggio.
A loro volta, le istruzioni si dividono in:
- istruzioni di lettura e scrittura (scrittura a video, scrittura su disco, lettura da tastiera, ...);
- istruzioni di assegnamento (astrazione di cella di memoria);
- istruzioni di controllo (if, while, for, foreach, try, catch, ...).
I programmi sono poi realizzati sia attraverso interpretazione (BASIC,...) sia mediante compilazione (C, Pascal, FORTRAN, ...).
Voci correlate
V · D · M | |
---|---|
Agent-oriented · Array-oriented · Automata-based · Data-driven · Dichiarativa (A vincoli (Logica) · Funzionale (Logica · Puramente funzionale) · Logica (Abduttiva · Answer set · Concorrente · Funzionale · Induttiva)) · A eventi · Imperativa (Procedurale) · Induttiva · Metaprogrammazione (Automatica · Riflessiva) · Non strutturata · Non deterministica · Stack-oriented · Strutturata (Modulare · Orientata agli oggetti) |
Controllo di autorità | LCCN (EN) sh2009011030 · J9U (EN, HE) 987007572661305171 |
---|
![](http://upload.wikimedia.org/wikipedia/commons/thumb/7/77/Computer_n_screen.svg/24px-Computer_n_screen.svg.png)