back to top

Differenza tra linguaggi dichiarativi e imperativi

Frequentando vari forum di discussione tecnici e community dedicate allo sviluppo e alla programmazione, ho notato che alcuni concetti come la differenza tra paradigma procedurale e object-oriented sembrerebbero essere stati ormai metabolizzati dagli utenti, altri invece risulterebbero ancora particolarmente ostici; un esempio in questo senso potrebbe essere la distinzione tra linguaggi dichiarativi e imperativi.

Sostanzialmente, i linguaggi dichiarativi (o logici) sono caratterizzati dal fatto che le istruzioni rappresentano delle clausole in grado di definire una relazione esistente tra i dati e, contestualmente, tra i dati e il risultato desiderato; in questo caso le esecuzioni non seguiranno un ordine specifico, perché tale compito è affidato all’interprete (parser) e non alla sintassi del linguaggio. Di fatto, in questo caso allo sviluppatore verrà richiesto di specificare quale dovrà essere l’evoluzione delle informazioni nel corso di un’elaborazione.

Diverso è il discorso riguardante i linguaggi imperativi, essi infatti prevedono l’utilizzo di comandi espliciti; questi ultimi potranno operare a livello di sistema (stato di un dispositivo) o su delle variabili (destinate a contenere dati da elaborare), inoltre, le istruzioni dovranno essere eseguite in un ordine definito a priori. Nel caso specifico lo sviluppatore dovrà operare in modo da stabilire quali dovranno essere le modalità necessarie per ottenere il risultato voluto.

Un semplice esempio di linguaggio dichiarativo potrebbe essere la seguente istruzione SQL:

SELECT cmp1, cmp2 FROM tbl WHERE cmp3 > 10

In pratica, quello dichiarativo è un paradigma attraverso il quale è possibile "dichiarare" la natura del risultato atteso, non la procedura che un elaboratore dovrà seguire per ottenerlo; l’utilizzo di linguaggi come COBOL o FORTRAN abitua la mente a ragionare per comandi espliciti (si richiede al comuputer di fare un determinata cosa e di conseguenza un altra, ma non prima di… etc.) e per strutture di controllo del flusso, un approccio valido per i contesti imperativi, ma non per quelli dichiarativi dove il risultato dipende dal vincolo esistente tra i dati.

Per approfondire

Pubblicitร 
Claudio Garau
Claudio Garau
Web developer, programmatore, Database Administrator, Linux Admin, docente e copywriter specializzato in contenuti sulle tecnologie orientate a Web, mobile, Cybersecurity e Digital Marketing per sviluppatori, PA e imprese.

Leggi anche...

Radice quadrata in C: vediamo come calcolarla in diversi modi

La radice quadrata è un'operazione matematica piuttosto comune (in...

Sperimentare la sequenza di Collatz in C++

Vediamo come verificare la congettura di Collatz con C++....

Calcolare la radice quadrata con Python

In Python è possibile calcolare la radice quadrata usando...

12 film che ogni programmatore dovrebbe guardare (per trovare ispirazione e creatività)

Molti ragazzi hanno deciso di intraprendere una carriera da...

Cartonizzare una foto con Python e la libreria OpenCV

La cartoonization è una procedura grafica che consente di...

Creare flowchart (diagrammi di flusso) online: 5 strumenti gratuiti

Hai bisogno di realizzare una flow chart ma non...
Pubblicitร