Programmazione imperativa

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…

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

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

Servizi correlati

Altre voci

S

SOLID

In ingegneria del software, SOLID è un acrostico riferito a cinque principi dello sviluppo del software orientato agli oggetti descritti da Robert C. Martin in diverse pubblicazioni dei primi anni 2000. Tali principi vengono detti SOLID principles (letteralmente "principi solidi"). La parola è…

Leggi la voce →
C

Code smell

Nell'ingegneria del software, e in particolare nel contesto dello sviluppo agile e dell'extreme programming, l'espressione code smell (letteralmente "puzza del codice") viene usata per indicare una serie di caratteristiche che il codice sorgente può avere e che sono generalmente riconosciute…

Leggi la voce →
U

Unit testing

In ingegneria del software, per unit testing, test unitario o collaudo unitario, si intende l'attività di collaudo di singole unità di un software. Per unità si intende normalmente il minimo componente di un programma dotato di funzionamento autonomo; a seconda del paradigma di programmazione o…

Leggi la voce →
L

Lifetime value

Il Customer Lifetime Value (CLV) è una misura del valore totale che un cliente genererà per un'azienda nel corso del suo rapporto con essa. Si calcola stimando il fatturato medio che un cliente genererà in un determinato periodo, ad esempio un anno o una vita intera, e sottraendo i costi medi…

Leggi la voce →
P

PostgreSQL

PostgreSQL (pronuncia all'inglese [poʊstɡrɛs ˌkjuːˈɛl] Pronuncia) è un completo DBMS ad oggetti pubblicato con licenza libera (stile Licenza BSD). Spesso abbreviato come "Postgres", sebbene questo sia un nome vecchio dello stesso progetto, è una reale alternativa sia rispetto ad altri prodotti…

Leggi la voce →
A

Adobe Creative Cloud

Adobe Creative Cloud è una raccolta di software e servizi cloud per la fotografia, il disegno grafico, il montaggio video, la creazione di contenuti per il web e altre applicazioni creative sviluppata e distribuita da Adobe.

Leggi la voce →